Fix in cluster coordinates calculation
authorshahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 26 Nov 2012 12:42:08 +0000 (12:42 +0000)
committershahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 26 Nov 2012 12:42:08 +0000 (12:42 +0000)
ITS/UPGRADE/AliITSUClusterPix.cxx
ITS/UPGRADE/AliITSUClusterizer.cxx
ITS/UPGRADE/AliITSUSegmentationPix.cxx
ITS/UPGRADE/readClusters.C
ITS/UPGRADE/readHit.C
ITS/UPGRADE/testITSU/rec.C

index d6a153d..66baf33 100644 (file)
@@ -60,17 +60,19 @@ TGeoHMatrix* AliITSUClusterPix::GetMatrix(Bool_t ) const
 void AliITSUClusterPix::Print(Option_t* /*option*/) const
 {
   // Print cluster information.
-  printf("Cluster of module %5d, <nx>=%3d <nz>=%3d |Err^2:%.3e %.3e %+.3e |",GetVolumeId(),GetNx(),GetNz(),
+  printf("Cl.in mod %5d, nx:%3d nz:%3d |Err^2:%.3e %.3e %+.3e |",GetVolumeId(),GetNx(),GetNz(),
         GetSigmaY2(),GetSigmaZ2(),GetSigmaYZ());
-  printf("XYZ: %+.4e %+.4e %+.4e in frame ",GetX(),GetY(),GetZ());
-  if      (IsFrameLoc()) printf("LOC");
-  else if (IsFrameGlo()) printf("GLO");
-  else if (IsFrameTrk()) printf("TRK");
+  printf("XYZ: (%+.4e %+.4e %+.4e ",GetX(),GetY(),GetZ());
+  if      (IsFrameLoc()) printf("LOC)");
+  else if (IsFrameGlo()) printf("GLO)");
+  else if (IsFrameTrk()) printf("TRK)");
   if (!IsFrameGlo() && fgGeom) {
     Float_t g[3];
     GetGlobalXYZ(g);
-    printf(" (%+.4e %+.4e %+.4e in GLO)",g[0],g[1],g[2]);
+    printf(" (%+.4e %+.4e %+.4e GLO)",g[0],g[1],g[2]);
   }
+  printf(" MClb:");
+  for (int i=0;i<3;i++) printf(" %5d",GetLabel(i));
   printf("\n");
   //
 }
index 909f9ba..eb4a551 100644 (file)
@@ -159,7 +159,7 @@ void AliITSUClusterizer::Transform(AliITSUClusterPix *cluster,AliITSUClusterizer
   float  cx,cz;
   for (AliITSUClusterizerClusterDigit *idigit=cand->fFirstDigit;idigit;idigit=idigit->fNext) {
     AliITSdigit* dig = idigit->fDigit;
-    fSegm->GetPadCxz(dig->GetCoord2(),dig->GetCoord1(),cx,cz);
+    fSegm->DetToLocal(dig->GetCoord2(),dig->GetCoord1(),cx,cz);
     x += cx;
     z += cz;
     if (cx<xmn) xmn=cx;
index 3d9bda9..b58b2bc 100644 (file)
@@ -72,13 +72,15 @@ AliITSUSegmentationPix::AliITSUSegmentationPix(UInt_t id, int nchips,int ncol,in
 //_____________________________________________________________________________RS
 void AliITSUSegmentationPix::GetPadIxz(Float_t x,Float_t z,Int_t &ix,Int_t &iz) const 
 {
-  //  Returns pixel coordinates (ix,iz) for given real local coordinates (x,z)
-  //  expects x, z in cm. RS: TO CHECK: why from 1
-  ix = int(x/fPitchX) + 1;     
-  iz = int(Z2Col(z)) + 1;
+  //  Returns pixel coordinates (ix,iz) for given coordinates (x,z counted from col/row 0:0)
+  //  expects x, z in cm.
+  ix = int(x/fPitchX);     
+  iz = int(Z2Col(z));
   //  
-  if (iz >  fNCol) iz= fNCol;
-  if (ix >  fNRow) ix= fNRow;
+  if      (iz<0)        { AliWarning(Form("Z=%f gives col=%d ouside [%d:%d)",z,iz,0,fNCol)); iz=0; }
+  else if (iz >= fNCol) { AliWarning(Form("Z=%f gives col=%d ouside [%d:%d)",z,iz,0,fNCol)); iz= fNCol-1;}
+  if      (ix<0)        { AliWarning(Form("X=%f gives row=%d ouside [%d:%d)",x,ix,0,fNRow)); ix=0; }
+  else if (ix >= fNRow) { AliWarning(Form("X=%f gives row=%d ouside [%d:%d)",x,ix,0,fNRow)); ix= fNRow-1;}
   //
 }
 
@@ -109,7 +111,7 @@ Float_t AliITSUSegmentationPix::Z2Col(Float_t z) const
   int chip = int(z/fChipDZ);
   float col = chip*fNColPerChip;
   z -= chip*fChipDZ;
-  if (z>fPitchZLftCol) col += 1+(z-fPitchZLftCol)/fPitchZ;
+  if (z>fPitchZLftCol) col += (z-fPitchZLftCol)/fPitchZ;
   return col;
 }
 
@@ -265,8 +267,8 @@ void AliITSUSegmentationPix::DetToLocal(Int_t ix,Int_t iz,Float_t &x,Float_t &z)
   x = -0.5*Dx(); // default value.
   z = -0.5*Dz(); // default value.
   // RS: to check: why we don't do strict check for [0:n)
-  if(ix<0 || ix>fNRow) return; // outside of detector 
-  if(iz<0 || iz>fNCol) return; // outside of detctor
+  if(ix<0 || ix>=fNRow) {AliWarning(Form("Obtained row %d is not in range [%d:%d)",ix,0,fNRow)); return;} // outside of detector 
+  if(iz<0 || iz>=fNCol) {AliWarning(Form("Obtained col %d is not in range [%d:%d)",ix,0,fNCol)); return;} // outside of detector 
   x += (ix+0.5)*fPitchX;       // RS: we go to the center of the pad, i.e. + pitch/2, not to the boundary as in SPD
   z += Col2Z(iz); 
   return; // Found x and z, return.
index b32981c..de7f9b3 100644 (file)
@@ -57,14 +57,13 @@ void readClusters(){
       printf("Layer %d : %d clusters\n",ilr,nClu);
       //
       for (int icl=0;icl<nClu;icl++) {
-       AliCluster *cl = (AliCluster*)clr->At(icl);
+       AliITSUClusterPix *cl = (AliITSUClusterPix*)clr->At(icl);
+       cl->Print();
        Double_t loc[3]={cl->GetX(),cl->GetY(),cl->GetZ()}; 
        Double_t glob[3]; 
        gm->LocalToGlobal(cl->GetVolumeId(),loc,glob);
-       cl->Print();
-       printf("%d: mod %d: loc(%.4lf,%.4lf,%.4lf); glob(%.4lf,%.4lf,%.4lf); \n",icl,cl->GetVolumeId(),
-              loc[0],loc[1],loc[2],glob[0],glob[1],glob[2]);
-
+       //      printf("%d: mod %d: loc(%.4lf,%.4lf,%.4lf); glob(%.4lf,%.4lf,%.4lf); \n",icl,cl->GetVolumeId(),
+       //             loc[0],loc[1],loc[2],glob[0],glob[1],glob[2]);
        xyGlob->Fill(glob[0],glob[1]);
        zGlob->Fill(glob[2]);
  
index 7b43122..8786e52 100644 (file)
@@ -64,10 +64,13 @@ void readHit(){
        //
        //      if(pHit->GetParticle()->IsPrimary()){
        Double_t xg,yg,zg=0.;
+       Double_t xg0,yg0,zg0=0.,tg0;
        pHit->GetPositionG(xg,yg,zg);
+       pHit->GetPositionG0(xg0,yg0,zg0,tg0);
        xyGlob->Fill(xg,yg);
        zGlob->Fill(zg);
-       printf("Module %d | Lr:%d Ladder: %d, X:%+.3e Y:%+.3e Z:%+.3e TrackID: %d\n",id,lr,ld,xg,yg,zg,pHit->GetTrack());
+       printf("Module %d | Lr:%d Ladder: %d, X:[%+.3e:%+.3e] Y:[%+.3e:%+.3e] Z:[%+.3e %+.3e] TrackID: %d\n",id,lr,ld,
+              xg0,xg,yg0,yg,zg0,zg,pHit->GetTrack());
        hDeLoss[lr]->Fill(pHit->GetIonization());
        //      } // is primary
       }//loop hit 
index 89472aa..09fea32 100644 (file)
@@ -17,11 +17,13 @@ void rec() {
   
   AliReconstruction rec;
 
-  //  rec.SetRunReconstruction("ITS TPC"); // run cluster finder
-  //  rec.SetRunTracking(""); // Turn on with ITS when tracker is implemented
+    rec.SetRunReconstruction("ITS TPC"); // run cluster finder
+    rec.SetRunTracking(""); // Turn on with ITS when tracker is implemented
 
+    /*
   rec.SetRunReconstruction("");//ITS TPC"); // run cluster finder
   rec.SetRunTracking("ITS TPC"); // Turn on with ITS when tracker is implemented
+    */
 
   rec.SetRunVertexFinder(kFALSE); // to be implemented - CreateVertexer
   rec.SetRunMultFinder(kFALSE);   // to be implemented - CreateMultFinder