Include time dependent corrections in cluster energy recalculation, move time depende...
authorgconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 1 Feb 2011 18:21:48 +0000 (18:21 +0000)
committergconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 1 Feb 2011 18:21:48 +0000 (18:21 +0000)
EMCAL/AliEMCALRecoUtils.cxx
EMCAL/AliEMCALRecoUtils.h
EMCAL/CMakelibEMCALUtils.pkg
EMCAL/CMakelibEMCALbase.pkg
EMCAL/EMCALUtilsLinkDef.h
EMCAL/EMCALbaseLinkDef.h

index 0e49708..54c4a9e 100644 (file)
@@ -46,6 +46,7 @@
 #include "AliESDEvent.h"
 #include "AliESDtrack.h"
 #include "AliEMCALTrack.h"
+#include "AliEMCALCalibTimeDepCorrection.h"
 
 ClassImp(AliEMCALRecoUtils)
   
@@ -59,8 +60,8 @@ AliEMCALRecoUtils::AliEMCALRecoUtils():
   fMatchedClusterIndex(0x0), fResidualZ(0x0), fResidualR(0x0), fCutR(20), fCutZ(20),
   fCutMinNClusterTPC(0), fCutMinNClusterITS(0), fCutMaxChi2PerClusterTPC(0), fCutMaxChi2PerClusterITS(0),
   fCutRequireTPCRefit(0), fCutRequireITSRefit(0), fCutAcceptKinkDaughters(0),
-  fCutMaxDCAToVertexXY(0), fCutMaxDCAToVertexZ(0),fCutDCAToVertex2D(0),
-  fPIDUtils()
+  fCutMaxDCAToVertexXY(0), fCutMaxDCAToVertexZ(0),fCutDCAToVertex2D(0),fPIDUtils(),
+  fUseTimeCorrectionFactors(kFALSE),  fTimeCorrectionFactorsSet(kFALSE)
 {
 //
   // Constructor.
@@ -105,8 +106,8 @@ AliEMCALRecoUtils::AliEMCALRecoUtils(const AliEMCALRecoUtils & reco)
   fCutRequireTPCRefit(reco.fCutRequireTPCRefit), fCutRequireITSRefit(reco.fCutRequireITSRefit),
   fCutAcceptKinkDaughters(reco.fCutAcceptKinkDaughters),
   fCutMaxDCAToVertexXY(reco.fCutMaxDCAToVertexXY), fCutMaxDCAToVertexZ(reco.fCutMaxDCAToVertexZ),fCutDCAToVertex2D(reco.fCutDCAToVertex2D),
-  fPIDUtils(reco.fPIDUtils)
-
+  fPIDUtils(reco.fPIDUtils), 
+  fUseTimeCorrectionFactors(reco.fUseTimeCorrectionFactors),  fTimeCorrectionFactorsSet(reco.fTimeCorrectionFactorsSet)
 {
   //Copy ctor
   
@@ -127,38 +128,41 @@ AliEMCALRecoUtils & AliEMCALRecoUtils::operator = (const AliEMCALRecoUtils & rec
   if(this == &reco)return *this;
   ((TNamed *)this)->operator=(reco);
 
-  fNonLinearityFunction  = reco.fNonLinearityFunction;
-  fParticleType          = reco.fParticleType;
-  fPosAlgo               = reco.fPosAlgo; 
-  fW0                    = reco.fW0;
-  fRecalibration         = reco.fRecalibration;
+  fNonLinearityFunction      = reco.fNonLinearityFunction;
+  fParticleType              = reco.fParticleType;
+  fPosAlgo                   = reco.fPosAlgo; 
+  fW0                        = reco.fW0;
+  fRecalibration             = reco.fRecalibration;
   fEMCALRecalibrationFactors = reco.fEMCALRecalibrationFactors;
-  fRemoveBadChannels     = reco.fRemoveBadChannels;
-  fRecalDistToBadChannels= reco.fRecalDistToBadChannels;
-  fEMCALBadChannelMap    = reco.fEMCALBadChannelMap;
-  fNCellsFromEMCALBorder = reco.fNCellsFromEMCALBorder;
-  fNoEMCALBorderAtEta0   = reco.fNoEMCALBorderAtEta0;
+  fRemoveBadChannels         = reco.fRemoveBadChannels;
+  fRecalDistToBadChannels    = reco.fRecalDistToBadChannels;
+  fEMCALBadChannelMap        = reco.fEMCALBadChannelMap;
+  fNCellsFromEMCALBorder     = reco.fNCellsFromEMCALBorder;
+  fNoEMCALBorderAtEta0       = reco.fNoEMCALBorderAtEta0;
 
 
   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]; 
   
-  fCutR                  = reco.fCutR;
-  fCutZ                  = reco.fCutZ;
+  fCutR                      = reco.fCutR;
+  fCutZ                      = reco.fCutZ;
 
-  fCutMinNClusterTPC        = reco.fCutMinNClusterTPC;
-  fCutMinNClusterITS        = reco.fCutMinNClusterITS; 
-  fCutMaxChi2PerClusterTPC  = reco.fCutMaxChi2PerClusterTPC;
-  fCutMaxChi2PerClusterITS  = reco.fCutMaxChi2PerClusterITS;
-  fCutRequireTPCRefit       = reco.fCutRequireTPCRefit;
-  fCutRequireITSRefit       = reco.fCutRequireITSRefit;
-  fCutAcceptKinkDaughters   = reco.fCutAcceptKinkDaughters;
-  fCutMaxDCAToVertexXY      = reco.fCutMaxDCAToVertexXY;
-  fCutMaxDCAToVertexZ       = reco.fCutMaxDCAToVertexZ;
-  fCutDCAToVertex2D         = reco.fCutDCAToVertex2D;
+  fCutMinNClusterTPC         = reco.fCutMinNClusterTPC;
+  fCutMinNClusterITS         = reco.fCutMinNClusterITS; 
+  fCutMaxChi2PerClusterTPC   = reco.fCutMaxChi2PerClusterTPC;
+  fCutMaxChi2PerClusterITS   = reco.fCutMaxChi2PerClusterITS;
+  fCutRequireTPCRefit        = reco.fCutRequireTPCRefit;
+  fCutRequireITSRefit        = reco.fCutRequireITSRefit;
+  fCutAcceptKinkDaughters    = reco.fCutAcceptKinkDaughters;
+  fCutMaxDCAToVertexXY       = reco.fCutMaxDCAToVertexXY;
+  fCutMaxDCAToVertexZ        = reco.fCutMaxDCAToVertexZ;
+  fCutDCAToVertex2D          = reco.fCutDCAToVertex2D;
 
-  fPIDUtils              = reco.fPIDUtils;
+  fPIDUtils                  = reco.fPIDUtils;
   
+  fUseTimeCorrectionFactors  = reco.fUseTimeCorrectionFactors;
+  fTimeCorrectionFactorsSet  = reco.fTimeCorrectionFactorsSet;
+
   
   if(reco.fResidualR){
     // assign or copy construct
@@ -340,8 +344,8 @@ Float_t AliEMCALRecoUtils::CorrectClusterEnergyLinearity(AliVCluster* cluster){
     case kPi0GammaGamma:
     {
       //Non-Linearity correction (from Olga Data with function p0+p1*exp(-p2*E))
-      //Double_t fNonLinearityParams[0] = 0.1457;
-      //Double_t fNonLinearityParams[1] = -0.02024;
+      //Double_t fNonLinearityParams[0] = 1.04;
+      //Double_t fNonLinearityParams[1] = -0.1445;
       //Double_t fNonLinearityParams[2] = 1.046;
       energy /= (fNonLinearityParams[0]+fNonLinearityParams[1]*exp(-fNonLinearityParams[2]*energy)); //Olga function
       break;
@@ -362,9 +366,10 @@ Float_t AliEMCALRecoUtils::CorrectClusterEnergyLinearity(AliVCluster* cluster){
     {
       //From beam test, Alexei's results, for different ZS thresholds
       //                        th=30 MeV; th = 45 MeV; th = 75 MeV
-      //fNonLinearityParams[0] = 0.107;      1.003;      1.002 
+      //fNonLinearityParams[0] = 1.007;      1.003;      1.002 
       //fNonLinearityParams[1] = 0.894;      0.719;      0.797 
       //fNonLinearityParams[2] = 0.246;      0.334;      0.358 
+      //Rescale the param[0] with 1.03
       energy /= fNonLinearityParams[0]/(1+fNonLinearityParams[1]*exp(-energy/fNonLinearityParams[2]));
       
       break;
@@ -1021,6 +1026,7 @@ void AliEMCALRecoUtils::GetMatchedResiduals(Int_t index, Float_t &dR, Float_t &d
   }
   dR = fResidualR->At(FindMatchedPos(index));
   dZ = fResidualZ->At(FindMatchedPos(index));
+  //printf("dR %f, dZ %f\n",dR, dZ);
 }
 
 //__________________________________________________
@@ -1183,3 +1189,33 @@ void AliEMCALRecoUtils::Print(const Option_t *) const
 
     
 }
+
+//__________________________________________________
+void AliEMCALRecoUtils::SetTimeDependentCorrections(Int_t runnumber){
+  //Get EMCAL time dependent corrections from file and put them in the recalibration histograms
+  //Do it only once and only if it is requested
+  
+  if(!fUseTimeCorrectionFactors) return;
+  if(fTimeCorrectionFactorsSet)  return;
+  
+  printf("AliEMCALRecoUtils::GetTimeDependentCorrections() - Get Correction Factors for Run number %d\n",runnumber);
+  AliEMCALCalibTimeDepCorrection  *corr =  new AliEMCALCalibTimeDepCorrection();
+  corr->ReadRootInfo(Form("CorrectionFiles/Run%d_Correction.root",runnumber));
+  
+  SwitchOnRecalibration();
+  for(Int_t ism = 0; ism < 4; ism++){
+    for(Int_t icol = 0; icol < 48; icol++){
+      for(Int_t irow = 0; irow < 24; irow++){
+        Float_t orgRecalFactor = GetEMCALChannelRecalibrationFactors(ism)->GetBinContent(icol,irow);
+        Float_t newRecalFactor = orgRecalFactor*corr->GetCorrection(ism, icol,irow,0);
+        GetEMCALChannelRecalibrationFactors(ism)->SetBinContent(icol,irow,newRecalFactor);
+        //printf("ism %d, icol %d, irow %d, corrections : org %f, time dep %f, final %f (org*time %f)\n",ism, icol, irow, 
+        //        orgRecalFactor, corr->GetCorrection(ism, icol,irow,0),
+        //       (GetEMCALChannelRecalibrationFactors(ism))->GetBinContent(icol,irow),newRecalFactor);
+      }
+    }
+  }
+   fTimeCorrectionFactorsSet = kTRUE;
+}
+
index 1aa7d3f..6d32416 100644 (file)
@@ -80,14 +80,14 @@ public:
   void     SetMisalRotShiftArray(Float_t * misal) 
   { for(Int_t i = 0; i < 15; i++)fMisalRotShift[i] = misal[i]; }
   
-  Int_t    GetParticleType() const         {return  fParticleType    ;}
-  void     SetParticleType(Int_t particle) {fParticleType = particle ;}
+  Int_t    GetParticleType()        const  { return  fParticleType    ;}
+  void     SetParticleType(Int_t particle) { fParticleType = particle ;}
   
-  Int_t    GetPositionAlgorithm() const    {return fPosAlgo;}
-  void     SetPositionAlgorithm(Int_t alg) {fPosAlgo = alg ;}
+  Int_t    GetPositionAlgorithm()   const  { return fPosAlgo          ;}
+  void     SetPositionAlgorithm(Int_t alg) { fPosAlgo = alg           ;}
   
-  Float_t  GetW0() const     {return fW0;}
-  void     SetW0(Float_t w0) {fW0  = w0 ;}
+  Float_t  GetW0()                 const   { return fW0               ;}
+  void     SetW0(Float_t w0)               { fW0  = w0                ;}
 
   //Non Linearity
   
@@ -102,20 +102,24 @@ public:
     else { AliInfo(Form("Index %d larger than 6, do nothing\n",i));}
   }
   
-  Int_t GetNonLinearityFunction() const    {return fNonLinearityFunction;}
-  void  SetNonLinearityFunction(Int_t fun) {fNonLinearityFunction = fun ;}
+  Int_t GetNonLinearityFunction() const    { return fNonLinearityFunction ;}
+  void  SetNonLinearityFunction(Int_t fun) { fNonLinearityFunction = fun  ;}
   
   void Print(const Option_t*) const;
   
   //Recalibration
   void RecalibrateClusterEnergy(AliEMCALGeometry* geom, AliVCluster* cluster, AliVCaloCells * cells);
 
-  Bool_t IsRecalibrationOn()  const { return fRecalibration ; }
-  void SwitchOnRecalibration()    {fRecalibration = kTRUE ; if(!fEMCALRecalibrationFactors)InitEMCALRecalibrationFactors();}
-  void SwitchOffRecalibration()   {fRecalibration = kFALSE ; }
-  
+  Bool_t IsRecalibrationOn()  const        { return fRecalibration ; }
+  void SwitchOnRecalibration()             { fRecalibration = kTRUE ; if(!fEMCALRecalibrationFactors)InitEMCALRecalibrationFactors();}
+  void SwitchOffRecalibration()            { fRecalibration = kFALSE ; }
   void InitEMCALRecalibrationFactors() ;
-  
+
+  //Recalibrate channels with time dependent corrections
+  void SwitchOnTimeDepCorrection()        { fUseTimeCorrectionFactors = kTRUE ; SwitchOnRecalibration();}
+  void SwitchOffTimeDepCorrection()       { fUseTimeCorrectionFactors = kFALSE;}
+  void SetTimeDependentCorrections(Int_t runnumber);
+    
   Float_t GetEMCALChannelRecalibrationFactor(Int_t iSM , Int_t iCol, Int_t iRow) const { 
     if(fEMCALRecalibrationFactors) return (Float_t) ((TH2F*)fEMCALRecalibrationFactors->At(iSM))->GetBinContent(iCol,iRow); 
     else return 1;}
@@ -124,27 +128,27 @@ public:
     if(!fEMCALRecalibrationFactors) InitEMCALRecalibrationFactors();
     ((TH2F*)fEMCALRecalibrationFactors->At(iSM))->SetBinContent(iCol,iRow,c);}  
   
-  TH2F * GetEMCALChannelRecalibrationFactors(Int_t iSM) const {return (TH2F*)fEMCALRecalibrationFactors->At(iSM);}     
-  void SetEMCALChannelRecalibrationFactors(TObjArray *map)      {fEMCALRecalibrationFactors = map;}
-  void SetEMCALChannelRecalibrationFactors(Int_t iSM , TH2F* h) {fEMCALRecalibrationFactors->AddAt(h,iSM);}
+  TH2F * GetEMCALChannelRecalibrationFactors(Int_t iSM)   const { return (TH2F*)fEMCALRecalibrationFactors->At(iSM) ;} 
+  void SetEMCALChannelRecalibrationFactors(TObjArray *map)      { fEMCALRecalibrationFactors = map                  ;}
+  void SetEMCALChannelRecalibrationFactors(Int_t iSM , TH2F* h) { fEMCALRecalibrationFactors->AddAt(h,iSM)          ;}
 
   //Modules fiducial region, remove clusters in borders
   Bool_t CheckCellFiducialRegion(AliEMCALGeometry* geom, AliVCluster* cluster, AliVCaloCells* cells) ;
-  void   SetNumberOfCellsFromEMCALBorder(Int_t n) {fNCellsFromEMCALBorder = n; }
-  Int_t  GetNumberOfCellsFromEMCALBorder() const  {return fNCellsFromEMCALBorder; }
+  void   SetNumberOfCellsFromEMCALBorder(Int_t n) { fNCellsFromEMCALBorder = n    ;}
+  Int_t  GetNumberOfCellsFromEMCALBorder() const  { return fNCellsFromEMCALBorder ;}
     
-  void   SwitchOnNoFiducialBorderInEMCALEta0()  {fNoEMCALBorderAtEta0 = kTRUE; }
-  void   SwitchOffNoFiducialBorderInEMCALEta0() {fNoEMCALBorderAtEta0 = kFALSE; }
-  Bool_t IsEMCALNoBorderAtEta0()                {return fNoEMCALBorderAtEta0;}
+  void   SwitchOnNoFiducialBorderInEMCALEta0()    { fNoEMCALBorderAtEta0 = kTRUE  ;}
+  void   SwitchOffNoFiducialBorderInEMCALEta0()   { fNoEMCALBorderAtEta0 = kFALSE ;}
+  Bool_t IsEMCALNoBorderAtEta0()                  { return fNoEMCALBorderAtEta0   ;}
   
   // Bad channels
-  Bool_t IsBadChannelsRemovalSwitchedOn()  const { return fRemoveBadChannels ; }
-  void SwitchOnBadChannelsRemoval ()  {fRemoveBadChannels = kTRUE  ; if(!fEMCALBadChannelMap)InitEMCALBadChannelStatusMap();}
-  void SwitchOffBadChannelsRemoval()  {fRemoveBadChannels = kFALSE ; }
+  Bool_t IsBadChannelsRemovalSwitchedOn()  const { return fRemoveBadChannels      ;}
+  void SwitchOnBadChannelsRemoval ()             { fRemoveBadChannels = kTRUE ; if(!fEMCALBadChannelMap)InitEMCALBadChannelStatusMap();}
+  void SwitchOffBadChannelsRemoval()             { fRemoveBadChannels = kFALSE    ;}
        
-  Bool_t IsDistanceToBadChannelRecalculated()  const { return fRecalDistToBadChannels ; }
-  void SwitchOnDistToBadChannelRecalculation()   {fRecalDistToBadChannels = kTRUE  ; if(!fEMCALBadChannelMap)InitEMCALBadChannelStatusMap();}
-  void SwitchOffDistToBadChannelRecalculation()  {fRecalDistToBadChannels = kFALSE ; }
+  Bool_t IsDistanceToBadChannelRecalculated() const { return fRecalDistToBadChannels;}
+  void SwitchOnDistToBadChannelRecalculation()   { fRecalDistToBadChannels = kTRUE  ; if(!fEMCALBadChannelMap)InitEMCALBadChannelStatusMap();}
+  void SwitchOffDistToBadChannelRecalculation()  { fRecalDistToBadChannels = kFALSE ;}
   
   void InitEMCALBadChannelStatusMap() ;
        
@@ -176,27 +180,26 @@ public:
   Bool_t IsMatched(Int_t index);
   UInt_t FindMatchedPos(Int_t index) const;
 
-  Float_t GetCutR() const { return fCutR; }
-  Float_t GetCutZ() const { return fCutZ; }
-
-  void SetCutR(Float_t cutR) { fCutR=cutR; }
-  void SetCutZ(Float_t cutZ) { fCutZ=cutZ; }
+  Float_t GetCutR()    const { return fCutR ;}
+  Float_t GetCutZ()    const { return fCutZ ;}
+  void SetCutR(Float_t cutR) { fCutR=cutR   ;}
+  void SetCutZ(Float_t cutZ) { fCutZ=cutZ   ;}
 
   //Track Cuts 
   Bool_t IsAccepted(AliESDtrack *track);
   void InitTrackCuts();
 
   // track quality cut setters  
-  void SetMinNClustersTPC(Int_t min=-1)          {fCutMinNClusterTPC=min;}
-  void SetMinNClustersITS(Int_t min=-1)          {fCutMinNClusterITS=min;}
-  void SetMaxChi2PerClusterTPC(Float_t max=1e10) {fCutMaxChi2PerClusterTPC=max;}
-  void SetMaxChi2PerClusterITS(Float_t max=1e10) {fCutMaxChi2PerClusterITS=max;}
-  void SetRequireTPCRefit(Bool_t b=kFALSE)       {fCutRequireTPCRefit=b;}
-  void SetRequireITSRefit(Bool_t b=kFALSE)       {fCutRequireITSRefit=b;}
-  void SetAcceptKinkDaughters(Bool_t b=kTRUE)    {fCutAcceptKinkDaughters=b;}
-  void SetMaxDCAToVertexXY(Float_t dist=1e10)         {fCutMaxDCAToVertexXY = dist;}
-  void SetMaxDCAToVertexZ(Float_t dist=1e10)          {fCutMaxDCAToVertexZ = dist;}
-  void SetDCAToVertex2D(Bool_t b=kFALSE)              {fCutDCAToVertex2D = b;}
+  void SetMinNClustersTPC(Int_t min=-1)          {fCutMinNClusterTPC       = min  ;}
+  void SetMinNClustersITS(Int_t min=-1)          {fCutMinNClusterITS       = min  ;}
+  void SetMaxChi2PerClusterTPC(Float_t max=1e10) {fCutMaxChi2PerClusterTPC = max  ;}
+  void SetMaxChi2PerClusterITS(Float_t max=1e10) {fCutMaxChi2PerClusterITS = max  ;}
+  void SetRequireTPCRefit(Bool_t b=kFALSE)       {fCutRequireTPCRefit      = b    ;}
+  void SetRequireITSRefit(Bool_t b=kFALSE)       {fCutRequireITSRefit      = b    ;}
+  void SetAcceptKinkDaughters(Bool_t b=kTRUE)    {fCutAcceptKinkDaughters  = b    ;}
+  void SetMaxDCAToVertexXY(Float_t dist=1e10)    {fCutMaxDCAToVertexXY     = dist ;}
+  void SetMaxDCAToVertexZ(Float_t dist=1e10)     {fCutMaxDCAToVertexZ      = dist ;}
+  void SetDCAToVertex2D(Bool_t b=kFALSE)         {fCutDCAToVertex2D        = b    ;}
 
   // getters
 
@@ -214,13 +217,13 @@ public:
 
 private:
   
-  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
-  Int_t   fParticleType;          // Particle type for depth calculation
-  Int_t   fPosAlgo;               // Position recalculation algorithm
-  Float_t fW0;                    // Weight0
+  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
+  Int_t      fParticleType;              // Particle type for depth calculation
+  Int_t      fPosAlgo;                   // Position recalculation algorithm
+  Float_t    fW0;                        // Weight0
   
   Bool_t     fRecalibration;             // Switch on or off the recalibration
   TObjArray* fEMCALRecalibrationFactors; // Array of histograms with map of recalibration factors, EMCAL
@@ -230,25 +233,29 @@ private:
   Int_t      fNCellsFromEMCALBorder;     // Number of cells from EMCAL border the cell with maximum amplitude has to be.
   Bool_t     fNoEMCALBorderAtEta0;       // Do fiducial cut in EMCAL region eta = 0?
 
-  TArrayI *fMatchedClusterIndex;  //Array that stores indexes of matched clusters
-  TArrayF *fResidualZ;            //Array that stores the residual z
-  TArrayF *fResidualR;            //Array that stores the residual r
-  Float_t fCutR; //dR cut on matching
-  Float_t fCutZ; //dZ cut on matching
+  TArrayI  * fMatchedClusterIndex;       // Array that stores indexes of matched clusters
+  TArrayF  * fResidualZ;                 // Array that stores the residual z
+  TArrayF  * fResidualR;                 // Array that stores the residual r
+  Float_t    fCutR;                      // dR cut on matching
+  Float_t    fCutZ;                      // dZ cut on matching
 
   enum { kNCuts = 11 }; 
-  Int_t   fCutMinNClusterTPC;         // min number of tpc clusters
-  Int_t   fCutMinNClusterITS;         // min number of its clusters  
-  Float_t fCutMaxChi2PerClusterTPC;   // max tpc fit chi2 per tpc cluster
-  Float_t fCutMaxChi2PerClusterITS;   // max its fit chi2 per its cluster
-  Bool_t  fCutRequireTPCRefit;        // require TPC refit
-  Bool_t  fCutRequireITSRefit;        // require ITS refit
-  Bool_t  fCutAcceptKinkDaughters;    // accepting kink daughters?
-  Float_t fCutMaxDCAToVertexXY;       // track-to-vertex cut in max absolute distance in xy-plane
-  Float_t fCutMaxDCAToVertexZ;        // track-to-vertex cut in max absolute distance in z-plane
-  Bool_t  fCutDCAToVertex2D;          // if true a 2D DCA cut is made. Tracks are accepted if sqrt((DCAXY / fCutMaxDCAToVertexXY)^2 + (DCAZ / fCutMaxDCAToVertexZ)^2) < 1 AND sqrt((DCAXY / fCutMinDCAToVertexXY)^2 + (DCAZ / fCutMinDCAToVertexZ)^2) > 1
+  Int_t      fCutMinNClusterTPC;         // Min number of tpc clusters
+  Int_t      fCutMinNClusterITS;         // Min number of its clusters  
+  Float_t    fCutMaxChi2PerClusterTPC;   // Max tpc fit chi2 per tpc cluster
+  Float_t    fCutMaxChi2PerClusterITS;   // Max its fit chi2 per its cluster
+  Bool_t     fCutRequireTPCRefit;        // Require TPC refit
+  Bool_t     fCutRequireITSRefit;        // Require ITS refit
+  Bool_t     fCutAcceptKinkDaughters;    // Accepting kink daughters?
+  Float_t    fCutMaxDCAToVertexXY;       // Track-to-vertex cut in max absolute distance in xy-plane
+  Float_t    fCutMaxDCAToVertexZ;        // Track-to-vertex cut in max absolute distance in z-plane
+  Bool_t     fCutDCAToVertex2D;          // If true a 2D DCA cut is made. Tracks are accepted if sqrt((DCAXY / fCutMaxDCAToVertexXY)^2 + (DCAZ / fCutMaxDCAToVertexZ)^2) < 1 AND sqrt((DCAXY / fCutMinDCAToVertexXY)^2 + (DCAZ / fCutMinDCAToVertexZ)^2) > 1
 
-  AliEMCALPIDUtils * fPIDUtils;               // Recalculate PID parameters
+  AliEMCALPIDUtils * fPIDUtils;          // Recalculate PID parameters
+  
+  //Time Correction
+  Bool_t     fUseTimeCorrectionFactors;  // Use Time Dependent Correction
+  Bool_t     fTimeCorrectionFactorsSet;  // Time Correction set at leat once
   
   ClassDef(AliEMCALRecoUtils, 6)
   
index 150a7da..92346dc 100644 (file)
@@ -25,7 +25,7 @@
 # SHLIBS - Shared Libraries and objects for linking (Executables only)           #
 #--------------------------------------------------------------------------------#
 
-set ( SRCS  AliEMCALGeoParams.cxx AliEMCALGeoUtils.cxx AliEMCALGeometry.cxx AliEMCALEMCGeometry.cxx AliEMCALShishKebabTrd1Module.cxx AliEMCALPIDUtils.cxx AliCaloNeuralFit.cxx AliCaloRawAnalyzer.cxx AliCaloBunchInfo.cxx AliCaloFitResults.cxx AliCaloFitSubarray.cxx AliCaloRawAnalyzerCrude.cxx AliCaloRawAnalyzerLMS.cxx AliCaloRawAnalyzerNN.cxx AliCaloPeakFinderVectors.cxx AliEMCALHistoUtilities.cxx AliEMCALRecoUtils.cxx AliEMCALTrack.cxx) 
+set ( SRCS  AliEMCALGeoParams.cxx AliEMCALGeoUtils.cxx AliEMCALGeometry.cxx AliEMCALEMCGeometry.cxx AliEMCALShishKebabTrd1Module.cxx AliEMCALPIDUtils.cxx AliCaloNeuralFit.cxx AliCaloRawAnalyzer.cxx AliCaloBunchInfo.cxx AliCaloFitResults.cxx AliCaloFitSubarray.cxx AliCaloRawAnalyzerCrude.cxx AliCaloRawAnalyzerLMS.cxx AliCaloRawAnalyzerNN.cxx AliCaloPeakFinderVectors.cxx AliEMCALHistoUtilities.cxx AliEMCALRecoUtils.cxx AliEMCALTrack.cxx AliEMCALCalibTimeDepCorrection.cxx) 
 
 string (REPLACE ".cxx" ".h" HDRS "${SRCS}")
 
index 6085f9c..5f79aaa 100644 (file)
@@ -25,7 +25,7 @@
 # SHLIBS - Shared Libraries and objects for linking (Executables only)           #
 #--------------------------------------------------------------------------------#
 
-set ( SRCS  AliEMCALHit.cxx AliEMCALLoader.cxx AliEMCALWsuCosmicRaySetUp.cxx AliEMCALRecPoint.cxx AliEMCALSDigitizer.cxx AliEMCALDigitizer.cxx AliEMCALDigit.cxx AliEMCALCalibData.cxx AliEMCALCalibTimeDep.cxx AliEMCALCalibTimeDepCorrection.cxx AliEMCALPreprocessor.cxx AliEMCALSensorTemp.cxx AliEMCALSensorTempArray.cxx AliCaloCalibPedestal.cxx AliCaloCalibSignal.cxx AliEMCALSurvey.cxx AliEMCALRecParam.cxx AliEMCALSimParam.cxx AliEMCALQAChecker.cxx AliEMCALSpaceFrame.cxx AliEMCALBiasAPD.cxx AliEMCALCalibAbs.cxx AliEMCALCalibReference.cxx AliEMCALCalibMapAPD.cxx AliEMCALCalibTempCoeff.cxx SMcalib/AliEMCALCCUSBRawStream.cxx AliEMCALRawDigit.cxx AliEMCALTrigger.cxx AliEMCALTriggerSTURawStream.cxx AliEMCAL.cxx AliEMCALRawUtils.cxx AliCaloRawAnalyzerFastFit.cxx AliCaloRawAnalyzerPeakFinder.cxx AliEMCALTriggerDCSConfig.cxx AliEMCALTriggerTRUDCSConfig.cxx AliEMCALTriggerSTUDCSConfig.cxx AliEMCALTriggerDCSConfigDB.cxx AliEMCALTriggerRawDigitMaker.cxx AliCaloRawAnalyzerFakeALTRO.cxx AliEMCALTriggerRawDigit.cxx)
+set ( SRCS  AliEMCALHit.cxx AliEMCALLoader.cxx AliEMCALWsuCosmicRaySetUp.cxx AliEMCALRecPoint.cxx AliEMCALSDigitizer.cxx AliEMCALDigitizer.cxx AliEMCALDigit.cxx AliEMCALCalibData.cxx AliEMCALCalibTimeDep.cxx  AliEMCALPreprocessor.cxx AliEMCALSensorTemp.cxx AliEMCALSensorTempArray.cxx AliCaloCalibPedestal.cxx AliCaloCalibSignal.cxx AliEMCALSurvey.cxx AliEMCALRecParam.cxx AliEMCALSimParam.cxx AliEMCALQAChecker.cxx AliEMCALSpaceFrame.cxx AliEMCALBiasAPD.cxx AliEMCALCalibAbs.cxx AliEMCALCalibReference.cxx AliEMCALCalibMapAPD.cxx AliEMCALCalibTempCoeff.cxx SMcalib/AliEMCALCCUSBRawStream.cxx AliEMCALRawDigit.cxx AliEMCALTrigger.cxx AliEMCALTriggerSTURawStream.cxx AliEMCAL.cxx AliEMCALRawUtils.cxx AliCaloRawAnalyzerFastFit.cxx AliCaloRawAnalyzerPeakFinder.cxx AliEMCALTriggerDCSConfig.cxx AliEMCALTriggerTRUDCSConfig.cxx AliEMCALTriggerSTUDCSConfig.cxx AliEMCALTriggerDCSConfigDB.cxx AliEMCALTriggerRawDigitMaker.cxx AliCaloRawAnalyzerFakeALTRO.cxx AliEMCALTriggerRawDigit.cxx)
 
 string (REPLACE ".cxx" ".h" HDRS "${SRCS}")
 
index d7a8148..8089e27 100644 (file)
@@ -22,5 +22,7 @@
 #pragma link C++ class AliEMCALHistoUtilities+;
 #pragma link C++ class AliEMCALRecoUtils+;
 #pragma link C++ class AliEMCALTrack+;
+#pragma link C++ class AliEMCALCalibTimeDepCorrection+;
+#pragma link C++ class AliEMCALSuperModuleCalibTimeDepCorrection+;
 
 #endif
index 542f8a4..b6420ce 100644 (file)
@@ -13,7 +13,6 @@
 #pragma link C++ class AliEMCALDigit+;
 #pragma link C++ class AliEMCALCalibData+;
 #pragma link C++ class AliEMCALCalibTimeDep+;
-#pragma link C++ class AliEMCALCalibTimeDepCorrection+;
 #pragma link C++ class AliEMCALPreprocessor+;
 #pragma link C++ class AliEMCALSensorTemp+;
 #pragma link C++ class AliEMCALSensorTempArray+;
@@ -25,7 +24,6 @@
 #pragma link C++ class AliEMCALQAChecker+;
 #pragma link C++ class AliEMCALSpaceFrame+;
 #pragma link C++ class AliEMCALCCUSBRawStream+;
-#pragma link C++ class AliEMCALSuperModuleCalibTimeDepCorrection+;
 #pragma link C++ class AliEMCALBiasAPD+;
 #pragma link C++ class AliEMCALCalibAbs+;
 #pragma link C++ class AliEMCALCalibReference+;