Add bit to flag and properly treat correction maps extracted from Millepede (Ruben)
authorprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 4 Apr 2011 10:09:23 +0000 (10:09 +0000)
committerprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 4 Apr 2011 10:09:23 +0000 (10:09 +0000)
ITS/AliITSCorrMapSDD.cxx
ITS/AliITSCorrMapSDD.h

index b22cba9..81aa8ee 100644 (file)
@@ -119,7 +119,7 @@ Float_t AliITSCorrMapSDD::GetCorrection(Float_t z, Float_t x, AliITSsegmentation
   Float_t q=fXt1-m*fXm1;
   Float_t xcorr=m*fDrLen+q;
   // fDrLen is the measured drift distance, xcorr is the corresponding true
-  return (xcorr-fDrLen); 
+  return GetInversionBit() ? fDrLen-xcorr : xcorr-fDrLen; 
 }
 //______________________________________________________________________
 Float_t AliITSCorrMapSDD::GetShiftForSimulation(Float_t z, Float_t x, AliITSsegmentationSDD *seg){
@@ -129,7 +129,7 @@ Float_t AliITSCorrMapSDD::GetShiftForSimulation(Float_t z, Float_t x, AliITSsegm
   Float_t q=fXm1-m*fXt1;
   Float_t xshifted=m*fDrLen+q;
   // fDrLen is the true drift distance, xshifted is the one with map shift
-  return (fDrLen-xshifted);
+  return GetInversionBit() ? xshifted-fDrLen : fDrLen-xshifted;
 }
 //______________________________________________________________________
 TH2F* AliITSCorrMapSDD::GetMapHisto() const{
@@ -173,3 +173,4 @@ TH1F* AliITSCorrMapSDD::GetResidualDistr(Float_t dmin, Float_t dmax) const{
   }
   return hd;
 }
+
index 6ab1434..d558038 100644 (file)
@@ -22,10 +22,20 @@ class TH2F;
 class AliITSCorrMapSDD : public TNamed {
 
  public:
+  // maps produced from residuals stores Xtrue-Xmeasured in drift lenght.
+  // Since the map computes xtrue-xmeas in drift coordinate
+  // and the difference is added to measured local coordinate, we have
+  // Left:  Xmeas_loc_corr = Xmeas_loc + (Xtrue-Xmeas)_loc = Xmeas_loc - (Xtrue-Xmeas)_drift
+  // Right: Xmeas_loc_corr = Xmeas_loc + (Xtrue-Xmeas)_loc = Xmeas_loc + (Xtrue-Xmeas)_drift
+  // hence, for the left side the sign of the correction need to inverted
+  enum {kLeftInvBit = BIT(14)};   
   AliITSCorrMapSDD();
   AliITSCorrMapSDD(Char_t *mapname);
   virtual ~AliITSCorrMapSDD(){};
-
+  //
+  void   SetInversionBit(Bool_t v=kTRUE)           {SetBit(kLeftInvBit,v);}
+  Bool_t GetInversionBit()               const     {return TestBit(kLeftInvBit);}
+  //
   Int_t GetNBinsAnode() const {return fNAnodePts;}
   Int_t GetNBinsDrift() const {return fNDriftPts;}
   void SetNBinsAnode(Int_t nbins) {
@@ -91,3 +101,4 @@ class AliITSCorrMapSDD : public TNamed {
   ClassDef(AliITSCorrMapSDD,2);
 };
 #endif
+