Split misalignment shifts into rotational and translational arrays
authorgconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 16 Oct 2010 09:28:28 +0000 (09:28 +0000)
committergconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 16 Oct 2010 09:28:28 +0000 (09:28 +0000)
EMCAL/AliEMCALGeoUtils.cxx
EMCAL/AliEMCALGeoUtils.h
EMCAL/AliEMCALRecoUtils.cxx
EMCAL/AliEMCALRecoUtils.h

index c9d7194..d7acc04 100644 (file)
@@ -1323,7 +1323,8 @@ void AliEMCALGeoUtils::GetModulePhiEtaIndexInSModuleFromTRUIndex(Int_t itru, Int
 
 //__________________________________________________________________________________________________________________
 void AliEMCALGeoUtils::RecalculateTowerPosition(Float_t drow, Float_t dcol, const Int_t sm, Float_t energy, 
-                                                const Int_t particle, const Float_t misaligshifts[15], Float_t global[3]) const
+                                                const Int_t particle, const Float_t misaligTransShifts[15], 
+                                                const Float_t misaligRotShifts[15], Float_t global[3]) const
 { //Transform clusters cell position into global with alternative method, taking into account the depth calculation.
   //Input are: the tower indeces, 
   //           supermodule, 
@@ -1460,14 +1461,14 @@ void AliEMCALGeoUtils::RecalculateTowerPosition(Float_t drow, Float_t dcol, cons
     
     //hardcoded global shifts
     if(sm == 2 || sm == 3) {//sector 1
-      global[0] = dglobal[0] + misaligshifts[3]*TMath::Sin(TMath::DegToRad()*20); // misaligshifts[3] = - 7.5
-      global[1] = dglobal[1] + misaligshifts[4]*TMath::Cos(TMath::DegToRad()*20); // misaligshifts[4] = + 7.5
-      global[2] = dglobal[2] + misaligshifts[5];                                  // misaligshifts[6] = 2.
+      global[0] = dglobal[0] + misaligTransShifts[3] + misaligRotShifts[3]*TMath::Sin(TMath::DegToRad()*20) ; 
+      global[1] = dglobal[1] + misaligTransShifts[4] + misaligRotShifts[4]*TMath::Cos(TMath::DegToRad()*20) ; 
+      global[2] = dglobal[2] + misaligTransShifts[5];
     }
     else if(sm == 0 || sm == 1){//sector 0
-      global[0] = dglobal[0] + misaligshifts[0]; // misaligshifts[0] = 0.8
-      global[1] = dglobal[1] + misaligshifts[1]; // misaligshifts[1] = 8.3
-      global[2] = dglobal[2] + misaligshifts[2]; // misaligshifts[2] = 1.
+      global[0] = dglobal[0] + misaligTransShifts[0]; 
+      global[1] = dglobal[1] + misaligTransShifts[1]; 
+      global[2] = dglobal[2] + misaligTransShifts[2];
     }
     else {
       AliInfo("Careful, correction not implemented yet!");
index 986b5c6..23395f1 100644 (file)
@@ -165,7 +165,8 @@ public:
        
   //Alternate geometry that allows to calculate tower position for different particles and different alignments
   void RecalculateTowerPosition(Float_t drow, Float_t dcol, const Int_t sm, Float_t energy, 
-                                     const Int_t particle, const Float_t misaligshifts[15], Float_t global[3]) const;
+                                     const Int_t particle, const Float_t misaligTransShifts[15], 
+                                     const Float_t misaligRotShifts[15],Float_t global[3]) const;
   
   //Returns shift-rotational matrixes for different volumes
   const TGeoHMatrix * GetMatrixForSuperModule(Int_t smod)const ;
index efea718..7e35af6 100644 (file)
@@ -50,7 +50,7 @@ AliEMCALRecoUtils::AliEMCALRecoUtils():
   // during Reco algorithm execution
   //
   
-  for(Int_t i = 0; i < 15 ; i++) fMisalShift[i] = 0.;  
+  for(Int_t i = 0; i < 15 ; i++) {fMisalTransShift[i] = 0.; fMisalRotShift[i] = 0.; }
   for(Int_t i = 0; i < 6  ; i++) fNonLinearityParams[i] = 0.; 
   //By default kPi0GammaGamma case
   fNonLinearityParams[0] = 0.1457/0.1349766/1.038;
@@ -65,7 +65,7 @@ AliEMCALRecoUtils::AliEMCALRecoUtils(const AliEMCALRecoUtils & reco)
 {
   //Copy ctor
   
-  for(Int_t i = 0; i < 15 ; i++) fMisalShift[i]         = reco.fMisalShift[i];  
+  for(Int_t i = 0; i < 15 ; i++) {fMisalRotShift[i] = reco.fMisalRotShift[i]; fMisalTransShift[i] = reco.fMisalTransShift[i]; } 
   for(Int_t i = 0; i < 6  ; i++) fNonLinearityParams[i] = reco.fNonLinearityParams[i]; 
 }
 
@@ -79,7 +79,7 @@ AliEMCALRecoUtils & AliEMCALRecoUtils::operator = (const AliEMCALRecoUtils & rec
   ((TNamed *)this)->operator=(reco);
 
   fNonLinearityFunction = reco.fNonLinearityFunction;
-  for(Int_t i = 0; i < 15 ; i++) fMisalShift[i]         = reco.fMisalShift[i];  
+  for(Int_t i = 0; i < 15 ; i++) {fMisalTransShift[i] = reco.fMisalTransShift[i]; fMisalRotShift[i] = reco.fMisalRotShift[i];}
   for(Int_t i = 0; i < 6  ; i++) fNonLinearityParams[i] = reco.fNonLinearityParams[i]; 
   
   return *this;
@@ -221,11 +221,11 @@ void AliEMCALRecoUtils::RecalculateClusterPosition(AliEMCALGeoUtils *geom, AliVC
     //printf("In Same SM\n");
     weightedCol = weightedCol/totalWeight;
     weightedRow = weightedRow/totalWeight;
-    geom->RecalculateTowerPosition(weightedRow, weightedCol, iSupMod, clEnergy, iParticle, fMisalShift, xyzNew); 
+    geom->RecalculateTowerPosition(weightedRow, weightedCol, iSupMod, clEnergy, iParticle, fMisalTransShift, fMisalRotShift, xyzNew); 
   }
   else {
     //printf("In Different SM\n");
-    geom->RecalculateTowerPosition(iphi,        ieta,        iSupMod, clEnergy, iParticle, fMisalShift, xyzNew); 
+    geom->RecalculateTowerPosition(iphi,        ieta,        iSupMod, clEnergy, iParticle, fMisalTransShift, fMisalRotShift, xyzNew); 
   }
   clu->SetPosition(xyzNew);
 
@@ -241,7 +241,9 @@ void AliEMCALRecoUtils::Print(const Option_t *) const
   
   printf("AliEMCALRecoUtils Settings: \n");
   printf("Misalignment shifts\n");
-  for(Int_t i=0; i<5; i++) printf("\t sector %d, (dx,dy,dz)=(%f,%f,%f)\n",i, fMisalShift[i*3],fMisalShift[i*3+1],fMisalShift[i*3+2]);
+  for(Int_t i=0; i<5; i++) printf("\t sector %d, traslation (x,y,z)=(%f,%f,%f), rotation (x,y,z)=(%f,%f,%f)\n",i, 
+                                  fMisalTransShift[i*3],fMisalTransShift[i*3+1],fMisalTransShift[i*3+2],
+                                  fMisalRotShift[i*3],  fMisalRotShift[i*3+1],  fMisalRotShift[i*3+2]   );
   printf("Non linearity function %d, parameters:\n", fNonLinearityFunction);
   for(Int_t i=0; i<6; i++) printf("param[%d]=%f\n",i, fNonLinearityParams[i]);
     
index 9f2e1bf..2c9f27a 100644 (file)
@@ -37,19 +37,34 @@ public:
   void     GetMaxEnergyCell(AliEMCALGeoUtils *geom, AliVCaloCells* cells, AliVCluster* clu, 
                             Int_t & absId,  Int_t& iSupMod, Int_t& ieta, Int_t& iphi);
   
-  Float_t  GetMisalShift(const Int_t i) const {
-    if(i < 15 ){return fMisalShift[i]; }
+  Float_t  GetMisalTransShift(const Int_t i) const {
+    if(i < 15 ){return fMisalTransShift[i]; }
     else { AliInfo(Form("Index %d larger than 15, do nothing\n",i)); return 0.;}
   }
-  Float_t  *GetMisalShiftArray() {return fMisalShift; }
+  Float_t  *GetMisalTransShiftArray() {return fMisalTransShift; }
 
-  void     SetMisalShift(const Int_t i, const Float_t shift) {
-    if(i < 15 ){fMisalShift[i] = shift; }
+  void     SetMisalTransShift(const Int_t i, const Float_t shift) {
+    if(i < 15 ){fMisalTransShift[i] = shift; }
     else { AliInfo(Form("Index %d larger than 15, do nothing\n",i));}
   }
-  void     SetMisalShiftArray(Float_t * misal) 
-  { for(Int_t i = 0; i < 15; i++)fMisalShift[i] = misal[i]; }
+  void     SetMisalTransShiftArray(Float_t * misal) 
+  { for(Int_t i = 0; i < 15; i++)fMisalTransShift[i] = misal[i]; }
 
+  Float_t  GetMisalRotShift(const Int_t i) const {
+    if(i < 15 ){return fMisalRotShift[i]; }
+    else { AliInfo(Form("Index %d larger than 15, do nothing\n",i)); return 0.;}
+  }
+  Float_t  *GetMisalRotShiftArray() {return fMisalRotShift; }
+  
+  void     SetMisalRotShift(const Int_t i, const Float_t shift) {
+    if(i < 15 ){fMisalRotShift[i] = shift; }
+    else { AliInfo(Form("Index %d larger than 15, do nothing\n",i));}
+  }
+  void     SetMisalRotShiftArray(Float_t * misal) 
+  { for(Int_t i = 0; i < 15; i++)fMisalRotShift[i] = misal[i]; }
+  
+  
+  
   //Non Linearity
   
   Float_t CorrectClusterEnergyLinearity(AliVCluster* clu);
@@ -70,11 +85,12 @@ public:
   
 private:
   
-  Float_t fMisalShift[15];        // Shift parameters
+  Float_t fMisalTransShift[15];   // Shift parameters
+  Float_t fMisalRotShift[15];     // Shift parameters
   Int_t   fNonLinearityFunction;  // Non linearity function choice
   Float_t fNonLinearityParams[6]; // Parameters for the non linearity function
 
-  ClassDef(AliEMCALRecoUtils, 1)
+  ClassDef(AliEMCALRecoUtils, 2)
   
 };