EMC cluster energy correction on/off
authorpolicheh <policheh@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 9 Oct 2008 17:31:03 +0000 (17:31 +0000)
committerpolicheh <policheh@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 9 Oct 2008 17:31:03 +0000 (17:31 +0000)
PHOS/AliPHOSPID.cxx
PHOS/AliPHOSPID.h
PHOS/AliPHOSPIDv1.cxx
PHOS/AliPHOSRecoParam.cxx
PHOS/AliPHOSRecoParam.h
PHOS/AliPHOSReconstructor.cxx

index c6eaaaf..8f40371 100644 (file)
@@ -48,7 +48,8 @@ AliPHOSPID::AliPHOSPID():
   fEMCRecPoints(NULL),
   fCPVRecPoints(NULL),
   fTrackSegments(NULL),
-  fRecParticles(NULL)
+  fRecParticles(NULL),
+  fEnergyCorrectionOn(kTRUE)
 {
   // ctor
 }
@@ -62,7 +63,8 @@ AliPHOSPID::AliPHOSPID(AliPHOSGeometry *geom):
   fEMCRecPoints(NULL),
   fCPVRecPoints(NULL),
   fTrackSegments(NULL),
-  fRecParticles(NULL)
+  fRecParticles(NULL),
+  fEnergyCorrectionOn(kTRUE)
 {
   // ctor
   fEMCRecPoints = new TObjArray(100) ;
@@ -80,7 +82,8 @@ AliPHOSPID::AliPHOSPID(const AliPHOSPID & pid) :
   fEMCRecPoints(pid.fEMCRecPoints),
   fCPVRecPoints(pid.fCPVRecPoints),
   fTrackSegments(pid.fTrackSegments),
-  fRecParticles(pid.fRecParticles)
+  fRecParticles(pid.fRecParticles),
+  fEnergyCorrectionOn(pid.fEnergyCorrectionOn)
 {
   // Copy constructor
 }
index f1e5351..01aa067 100644 (file)
@@ -69,6 +69,9 @@ class AliPHOSPID : public TObject {
 
   void SetESD(AliESDEvent *esd) { fESD = esd; }
 
+  void SetEnergyCorrectionOn(Bool_t on=kTRUE) {fEnergyCorrectionOn = on;}
+  const Bool_t GetEnergyCorrectionOn() const  {return fEnergyCorrectionOn;}
+
   virtual const char * Version() const = 0;
 
 protected:
@@ -81,10 +84,12 @@ protected:
 
   TClonesArray *fTrackSegments;     //!Array with found track segments
   TClonesArray *fRecParticles;      //!Array with reconstructed particles (PID)
-
+  
+  Bool_t   fEnergyCorrectionOn;     // Do energy correction in GetCalibratedEnergy()
+  
 private: 
 
-  ClassDef(AliPHOSPID,6)  // Particle Identifier algorithm (base class)
+  ClassDef(AliPHOSPID,7)  // Particle Identifier algorithm (base class)
 
 } ;
 
index 593a17e..3bac291 100644 (file)
@@ -599,7 +599,9 @@ Float_t  AliPHOSPIDv1::GetCalibratedEnergy(Float_t e) const
 //      the formula A + B* E  + C* E^2, whose parameters where obtained 
 //      through the study of the reconstructed energy distribution of 
 //      monoenergetic photons.
+  
+  if(!fEnergyCorrectionOn) return e;
+  
   Float_t p[]={0.,0.,0.};
   for (Int_t i=0; i<3; i++) p[i] = GetParameterCalibration(i);
   Float_t enerec = p[0] +  p[1]*e + p[2]*e*e;
index 592546f..f62aab4 100644 (file)
@@ -41,6 +41,7 @@ AliPHOSRecoParam::AliPHOSRecoParam() :
   fEMCEcore2ESD(kFALSE),
   fEMCSubtractPedestals(kTRUE),
   fEMCUnfold(kTRUE),
+  fEMCEnergyCorrectionOn(kTRUE),
   fEMCDecoderVersion(""),
   fGlobalAltroOffset(0),
   fCPVClusteringThreshold(0.0),
@@ -64,6 +65,7 @@ AliPHOSRecoParam::AliPHOSRecoParam(const AliPHOSRecoParam& ):
   fEMCEcore2ESD(kFALSE),
   fEMCSubtractPedestals(kTRUE),
   fEMCUnfold(kTRUE),
+  fEMCEnergyCorrectionOn(kTRUE),
   fEMCDecoderVersion(""),
   fGlobalAltroOffset(0),
   fCPVClusteringThreshold(0.0),
@@ -90,6 +92,7 @@ AliPHOSRecoParam& AliPHOSRecoParam::operator = (const AliPHOSRecoParam& recoPara
     fEMCEcore2ESD           = recoParam.fEMCEcore2ESD;
     fEMCSubtractPedestals   = recoParam.fEMCSubtractPedestals;
     fEMCUnfold              = recoParam.fEMCUnfold;
+    fEMCEnergyCorrectionOn  = recoParam.fEMCEnergyCorrectionOn;
     fEMCDecoderVersion      = recoParam.fEMCDecoderVersion;
     fGlobalAltroOffset      = recoParam.fGlobalAltroOffset;
     fCPVClusteringThreshold = recoParam.fCPVClusteringThreshold;
@@ -115,6 +118,7 @@ void AliPHOSRecoParam::Print(Option_t *option) const
                  "\tEMCEcore2ESD           = %d\n"
                  "\tEMCSubtractPedestals   = %d\n"
                  "\tEMCUnfold              = %d\n"
+                 "\tEMCEnergyCorrectionOn  = %d\n"
                  "\tEMCDecoderVersion      = \"%s\"\n"
                  "\tGlobalAltroOffset      = %d",
                  fEMCClusteringThreshold,
@@ -126,6 +130,7 @@ void AliPHOSRecoParam::Print(Option_t *option) const
                  fEMCEcore2ESD,
                  fEMCSubtractPedestals,
                  fEMCUnfold,
+                 fEMCEnergyCorrectionOn,
                  fEMCDecoderVersion.Data(),
                  fGlobalAltroOffset));
 
index 55e373b..e3bb1ef 100644 (file)
@@ -29,6 +29,7 @@ public:
   Bool_t  EMCSubtractPedestals()      const { return fEMCSubtractPedestals;    }
   Bool_t  EMCToUnfold()               const { return fEMCUnfold;               }
   const char* EMCDecoderVersion()     const { return fEMCDecoderVersion.Data();}
+  Bool_t  GetEMCEnergyCorrectionOn()  const { return fEMCEnergyCorrectionOn;   }
   Int_t   GetGlobalAltroOffset()      const { return fGlobalAltroOffset ;      }
 
   Float_t GetCPVClusteringThreshold() const { return fCPVClusteringThreshold;  }
@@ -46,8 +47,9 @@ public:
   void SetEMCEcore2ESD(Bool_t ecore)                 { fEMCEcore2ESD          =ecore;   }
   void SetEMCSubtractPedestals(Bool_t subtract)      { fEMCSubtractPedestals  =subtract;} 
   void SetEMCDecoderVersion(const char* version="v1"){ fEMCDecoderVersion     =version ;}
-  void SetEMCUnfolding(Bool_t toUnfold=kFALSE)       { fEMCUnfold            =toUnfold;}
-  void SetGlobalAltroOffset(Int_t offset=5)          {fGlobalAltroOffset     = offset ; }
+  void SetEMCUnfolding(Bool_t toUnfold=kFALSE)       { fEMCUnfold             =toUnfold;}
+  void SetEMCEnergyCorrectionOn(Bool_t on=kTRUE)     { fEMCEnergyCorrectionOn =on;      }
+  void SetGlobalAltroOffset(Int_t offset=5)          { fGlobalAltroOffset     =offset ; }
 
   void SetCPVClusteringThreshold(Float_t cluth)      { fCPVClusteringThreshold=cluth;   }
   void SetCPVLocalMaxCut(Float_t cut)                { fCPVLocMaxCut          =cut;     }
@@ -71,6 +73,7 @@ protected:
   Bool_t  fEMCEcore2ESD;           // EMC: true if Ecore is stored in ESD instead of Etot
   Bool_t  fEMCSubtractPedestals;   // EMC: true if pedestal should be subtracted (in non-ZS)
   Bool_t  fEMCUnfold;              // EMC: true if overlapped clusters should be unfolded
+  Bool_t  fEMCEnergyCorrectionOn;  // EMC: if true do non-linear correction of cluster energy
   TString fEMCDecoderVersion ;     // EMC: AliPHOSRawDecoder version
   Int_t   fGlobalAltroOffset ;     // Offset used in ALTRO chips in SZ runs
 
@@ -82,7 +85,7 @@ protected:
 
   static TObjArray* fgkMaps;       // ALTRO mappings for RCU0..RCU3
 
-  ClassDef(AliPHOSRecoParam,7)
+  ClassDef(AliPHOSRecoParam,8)
 };
 
 #endif
index e601566..887fbaa 100644 (file)
@@ -116,6 +116,8 @@ void AliPHOSReconstructor::FillESD(TTree* digitsTree, TTree* clustersTree,
   else 
     fTSM->Clusters2TrackSegments("") ;
   
+  fPID->SetEnergyCorrectionOn(GetRecoParam()->GetEMCEnergyCorrectionOn());
+  
   fPID->SetInput(clustersTree, fTSM->GetTrackSegments()) ; 
   fPID->SetESD(esd) ; 
   if ( Debug() )