--- DarthVader/CalorimeterLevel2/src/CaloLevel1.cpp 2006/11/22 08:31:10 1.1 +++ DarthVader/CalorimeterLevel2/src/CaloLevel1.cpp 2006/11/28 10:20:27 1.2 @@ -4,8 +4,8 @@ * **/ #include +#include #include - // ClassImp(CaloStrip); ClassImp(CaloLevel1); @@ -115,66 +115,83 @@ **/ void CaloStrip::Set(Float_t X, Float_t Y, Float_t Z) { // -// Float_t lShift = 0.; -// Float_t lPos = 0.; -// extern struct shift shift; -// // -// fView = view++; -// fPlane = plane++; -// fStrip = strip++; -// if ( fPlane%2 ){ -// lShift = -0.5; -// } else { -// lShift = 0.5; -// }; -// // -// shift.shift = lShift; -// // -// Float_t zplane[22]; -// zplane[0] = 0.; -// Int_t ii = 0; -// for ( Int_t i = 2; i < 23; i++){ -// ii = i-1; -// if ( i%2 ){ -// zplane[ii] = zplane[ii-1] - 10.09 + CTZ; -// } else { -// zplane[ii] = zplane[ii-1] - 8.09 + CTZ; -// }; -// }; -// // -// millim_(&fStrip,&lPos); -// // -// if ( fView == 1 ){ -// // -// // X view -// // -// fX = lPos; -// fY = 0.; -// fZ = zplane[fPlane-1] - 5.81; -// } else { -// // -// // Y view -// // -// fX = 0.; -// fY = lPos; -// fZ = zplane[fPlane-1]; -// }; + fX = X; + fY = Y; + fZ = Z; + // + Float_t zplane[22]; + zplane[0] = 0.; + Int_t ii = 0; + for ( Int_t i = 2; i < 23; i++){ + ii = i-1; + if ( i%2 ){ + zplane[ii] = zplane[ii-1] - 10.09; + } else { + zplane[ii] = zplane[ii-1] - 8.09; + }; + }; + // + Float_t dzx[22]; + Float_t dzy[22]; + for ( Int_t i=0; i < 22; i++){ + dzx[i] = fabs(fZ*10. - (zplane[i] - 5.81 + CTZ)); + dzy[i] = fabs(fZ*10. - (zplane[i] + CTZ)); + }; + // + Float_t minx = TMath::MinElement(22,dzx); + Float_t miny = TMath::MinElement(22,dzy); + // + // find view + // + if ( minx < miny ){ + fView = 1; + } else { + fView = 2; + }; + // + // find plane + // + Float_t pos = 0.; + // + for ( Int_t i=0; i < 22; i++){ + if ( fView == 1 ){ + if ( dzx[i] == minx ){ + fPlane = i+1; + pos = fX*10. + CTX; + }; + } else { + if ( dzy[i] == miny ){ + fPlane = i+1; + pos = fY*10. + CTY; + }; + }; + }; + // + // find strip + // + Float_t dxy[96]; + Float_t stpos = 0.; + // + CaloStrip *ca = new CaloStrip(); + // + for ( Int_t i=0; i < 96; i++){ + ca->Set(fView-1,fPlane-1,i); + if ( fView == 1 ){ + stpos = ca->GetX()*10. + CTX; + } else { + stpos = ca->GetY()*10. + CTY; + }; + dxy[i] = fabs(pos - stpos); + }; + // + delete ca; // + Float_t mins = TMath::MinElement(96,dxy); + // + for ( Int_t i=0; i < 96; i++){ + if ( dxy[i] == mins ) fStrip = i+1; + }; }; -// DISTY = PIANO(I) -// YY(I) = DISTY * TG(2) + CY -// BAR(M,I) = YY(I) -// CBAR(M,I) = (-YALIG + YY(I))/10. -// C -// ENDIF -// CALL LASTRISCIA(BAR(M,I),IBAR(M,I)) -// CIBAR(M,I) = IBAR(M,I) -// ENDDO -// ENDIF -// C -// ENDDO - - /** * CaloLevel1 constructor