Select clusters or cells in a given time window in order to reject noisy channels...
authorgconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 12 Apr 2010 09:43:18 +0000 (09:43 +0000)
committergconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 12 Apr 2010 09:43:18 +0000 (09:43 +0000)
PWG4/PartCorrDep/AliAnaCalorimeterQA.cxx
PWG4/PartCorrDep/AliAnaCalorimeterQA.h
PWG4/PartCorrDep/AliAnaPhoton.cxx
PWG4/PartCorrDep/AliAnaPhoton.h

index 6774e92..54e6c1d 100755 (executable)
@@ -60,6 +60,7 @@ ClassImp(AliAnaCalorimeterQA)
   AliAnaCalorimeterQA::AliAnaCalorimeterQA() : 
     AliAnaPartCorrBaseClass(), fCalorimeter(""), fStyleMacro(""), 
     fMakePlots(kFALSE), fCorrelateCalos(kFALSE), fNModules(12), fNRCU(2),
+    fTimeCutMin(-1), fTimeCutMax(9999999),
     fHistoPOverEBins(100),     fHistoPOverEMax(100.),     fHistoPOverEMin(0.),
     fHistodEdxBins(100),       fHistodEdxMax(100.),       fHistodEdxMin(0.),
     fHistodRBins(100),         fHistodRMax(100.),         fHistodRMin(0.),
@@ -80,7 +81,7 @@ ClassImp(AliAnaCalorimeterQA)
        fhLambda(0), fhDispersion(0), 
        fhIM(0), fhIMCellCut(0),fhAsym(0), 
     fhNCellsPerCluster(0),fhNCellsPerClusterMIP(0), fhNCellsPerClusterMIPCharged(0), fhNClusters(0), 
-    fhCellTimeSpreadRespectToCellMax(0),fhCellIdCellLargeTimeSpread(0),
+    fhClusterTimeEnergy(0),fhCellTimeSpreadRespectToCellMax(0),fhCellIdCellLargeTimeSpread(0),
     fhRNCells(0),fhXNCells(0),fhYNCells(0),fhZNCells(0),
     fhRE(0),     fhXE(0),     fhYE(0),     fhZE(0),    fhXYZ(0),
     fhRCellE(0), fhXCellE(0), fhYCellE(0), fhZCellE(0),fhXYZCell(0),
@@ -126,6 +127,7 @@ ClassImp(AliAnaCalorimeterQA)
 AliAnaCalorimeterQA::AliAnaCalorimeterQA(const AliAnaCalorimeterQA & qa) :   
   AliAnaPartCorrBaseClass(qa), fCalorimeter(qa.fCalorimeter), fStyleMacro(qa.fStyleMacro), 
   fMakePlots(qa.fMakePlots), fCorrelateCalos(qa.fCorrelateCalos), fNModules(qa.fNModules), fNRCU(qa.fNRCU),
+  fTimeCutMin(qa.fTimeCutMin), fTimeCutMax(qa.fTimeCutMax),    
   fHistoPOverEBins(qa.fHistoPOverEBins), fHistoPOverEMax(qa.fHistoPOverEMax), fHistoPOverEMin(qa.fHistoPOverEMin),
   fHistodEdxBins(qa.fHistodEdxBins), fHistodEdxMax(qa.fHistodEdxMax), fHistodEdxMin(qa.fHistodEdxMin), 
   fHistodRBins(qa.fHistodRBins), fHistodRMax(qa.fHistodRMax), fHistodRMin(qa.fHistodRMin),
@@ -149,7 +151,8 @@ AliAnaCalorimeterQA::AliAnaCalorimeterQA(const AliAnaCalorimeterQA & qa) :
   fhLambda(qa.fhLambda), fhDispersion(qa.fhDispersion), 
   fhIM(qa.fhIM), fhIMCellCut(qa.fhIMCellCut), fhAsym(qa.fhAsym), 
   fhNCellsPerCluster(qa.fhNCellsPerCluster), fhNCellsPerClusterMIP(qa.fhNCellsPerClusterMIP),
-  fhNCellsPerClusterMIPCharged(qa.fhNCellsPerClusterMIPCharged),fhNClusters(qa.fhNClusters), 
+  fhNCellsPerClusterMIPCharged(qa.fhNCellsPerClusterMIPCharged),fhNClusters(qa.fhNClusters),
+  fhClusterTimeEnergy(qa.fhClusterTimeEnergy), 
   fhCellTimeSpreadRespectToCellMax(qa.fhCellTimeSpreadRespectToCellMax),
   fhCellIdCellLargeTimeSpread(qa.fhCellIdCellLargeTimeSpread),
   fhRNCells(qa.fhRNCells),fhXNCells(qa.fhXNCells),fhYNCells(qa.fhYNCells),fhZNCells(qa.fhZNCells),
@@ -200,146 +203,6 @@ AliAnaCalorimeterQA::AliAnaCalorimeterQA(const AliAnaCalorimeterQA & qa) :
   
 }
 
-//_________________________________________________________________________
-//AliAnaCalorimeterQA & AliAnaCalorimeterQA::operator = (const AliAnaCalorimeterQA & qa)
-//{
-//  // assignment operator
-//
-//  if(this == &qa)return *this;
-//  ((AliAnaPartCorrBaseClass *)this)->operator=(qa);
-//
-//  fCalorimeter     = qa.fCalorimeter;
-//  fStyleMacro      = qa.fStyleMacro; 
-//  fMakePlots       = qa.fMakePlots;
-//  fCorrelateCalos  = qa.fCorrelateCalos;
-//  fNModules        = qa.fNModules; 
-//     
-//  fHistoPOverEBins = qa.fHistoPOverEBins;  fHistoPOverEMax = qa.fHistoPOverEMax;  fHistoPOverEMin = qa.fHistoPOverEMin; 
-//  fHistodEdxBins = qa.fHistodEdxBins;  fHistodEdxMax = qa.fHistodEdxMax;  fHistodEdxMin = qa.fHistodEdxMin;  
-//  fHistodRBins = qa.fHistodRBins;  fHistodRMax = qa.fHistodRMax;  fHistodRMin = qa.fHistodRMin; 
-//  fHistoTimeBins = qa.fHistoTimeBins;  fHistoTimeMax = qa.fHistoTimeMax;  fHistoTimeMin = qa.fHistoTimeMin; 
-//  fHistoNBins = qa.fHistoNBins;  fHistoNMax = qa.fHistoNMax;  fHistoNMin = qa.fHistoNMin;  
-//  fHistoRatioBins = qa.fHistoRatioBins;  fHistoRatioMax = qa.fHistoRatioMax;  fHistoRatioMin = qa.fHistoRatioMin; 
-//  fHistoVertexDistBins = qa.fHistoVertexDistBins;  fHistoVertexDistMax = qa.fHistoVertexDistMax;  fHistoVertexDistMin = qa.fHistoVertexDistMin; 
-//  fHistoRBins = qa.fHistoRBins; fHistoRMax = qa.fHistoRMax;  fHistoRMin = qa.fHistoRMin;
-//  fHistoXBins = qa.fHistoXBins; fHistoXMax = qa.fHistoXMax;  fHistoXMin = qa.fHistoXMin;
-//  fHistoYBins = qa.fHistoYBins; fHistoYMax = qa.fHistoYMax;  fHistoYMin = qa.fHistoYMin;
-//  fHistoZBins = qa.fHistoZBins; fHistoZMax = qa.fHistoZMax;  fHistoZMin = qa.fHistoZMin;                                                                                                                                       
-//  fhE      = qa.fhE;
-//  fhPt     = qa.fhPt;
-//  fhPhi    = qa.fhPhi;
-//  fhEta    = qa.fhEta;
-//  fhEtaPhiE= qa.fhEtaPhiE;
-//     
-//  fhECharged      = qa.fhECharged;
-//  fhPtCharged     = qa.fhPtCharged;
-//  fhPhiCharged    = qa.fhPhiCharged;
-//  fhEtaCharged    = qa.fhEtaCharged;
-//  fhEtaPhiECharged = qa.fhEtaPhiECharged;
-//
-//  fhEChargedNoOut      = qa.fhEChargedNoOut;
-//  fhPtChargedNoOut     = qa.fhPtChargedNoOut;
-//  fhPhiChargedNoOut    = qa.fhPhiChargedNoOut;
-//  fhEtaChargedNoOut    = qa.fhEtaChargedNoOut;
-//  fhEtaPhiChargedNoOut = qa.fhEtaPhiChargedNoOut;
-//     
-//  fhIM   = qa.fhIM;   fhIMCellCut   = qa.fhIMCellCut;
-//  fhAsym = qa.fhAsym;
-//     
-//  fhNCellsPerCluster           = qa.fhNCellsPerCluster;
-//  fhNCellsPerClusterMIP        = qa.fhNCellsPerClusterMIP;
-//  fhNCellsPerClusterMIPCharged = qa.fhNCellsPerClusterMIPCharged;
-//
-//  fhNClusters           = qa.fhNClusters;
-//     
-//  fhDeltaE   = qa.fhDeltaE;  
-//  fhDeltaPt  = qa.fhDeltaPt;
-//  fhDeltaPhi = qa.fhDeltaPhi;
-//  fhDeltaEta = qa.fhDeltaEta;
-//     
-//  fhRatioE   = qa.fhRatioE;  
-//  fhRatioPt  = qa.fhRatioPt;
-//  fhRatioPhi = qa.fhRatioPhi;
-//  fhRatioEta = qa.fhRatioEta;
-//     
-//  fh2E   = qa.fh2E;  
-//  fh2Pt  = qa.fh2Pt;
-//  fh2Phi = qa.fh2Phi;
-//  fh2Eta = qa.fh2Eta;
-//     
-//  fhCellTimeSpreadRespectToCellMax = qa.fhCellTimeSpreadRespectToCellMax; 
-//  fhCellIdCellLargeTimeSpread      = qa.fhCellIdCellLargeTimeSpread;
-//     
-//  fhRNCells = qa.fhRNCells; fhXNCells = qa.fhXNCells; fhYNCells = qa.fhYNCells; fhZNCells = qa.fhZNCells;
-//  fhRE      = qa.fhRE;      fhXE      = qa.fhXE;      fhYE      = qa.fhYE;      fhZE      = qa.fhZE;    fhXYZ     = qa.fhXYZ;
-//  fhRCellE  = qa.fhRCellE;  fhXCellE  = qa.fhXCellE;  fhYCellE  = qa.fhYCellE;  fhZCellE = qa.fhZCellE; fhXYZCell = qa.fhXYZCell;
-//     
-//  fhDeltaCellClusterRNCells = qa.fhDeltaCellClusterRNCells; fhDeltaCellClusterXNCells = qa.fhDeltaCellClusterXNCells; 
-//  fhDeltaCellClusterYNCells = qa.fhDeltaCellClusterYNCells; fhDeltaCellClusterZNCells = qa.fhDeltaCellClusterZNCells;
-//  fhDeltaCellClusterRE      = qa.fhDeltaCellClusterRE;      fhDeltaCellClusterXE      = qa.fhDeltaCellClusterXE;  
-//  fhDeltaCellClusterYE      = qa.fhDeltaCellClusterYE;      fhDeltaCellClusterZE      = qa.fhDeltaCellClusterZE;
-//     
-//  fhNCells    = qa.fhNCells;
-//  fhAmplitude = qa.fhAmplitude;
-//  fhAmpId     = qa.fhAmpId;
-//  fhTime      = qa.fhTime;
-//  fhTimeId    = qa.fhTimeId;
-//  fhTimeAmp   = qa.fhTimeAmp;
-//  fhEtaPhiAmp = qa.fhEtaPhiAmp;
-//     
-//  fhCaloCorrNClusters = qa.fhCaloCorrNClusters; fhCaloCorrEClusters = qa.fhCaloCorrEClusters;
-//  fhCaloCorrNCells = qa.fhCaloCorrNCells;  fhCaloCorrECells = qa.fhCaloCorrECells;
-//     
-//  fhEMod = qa.fhEMod; fhNClustersMod = qa.fhNClustersMod; 
-//  fhNCellsPerClusterMod = qa.fhNCellsPerClusterMod; fhNCellsMod = qa.fhNCellsMod;  
-//  fhGridCellsMod = qa.fhGridCellsMod;  fhGridCellsEMod = qa.fhGridCellsEMod; fhGridCellsTimeMod = qa.fhGridCellsTimeMod; 
-//  fhAmplitudeMod = qa.fhAmplitudeMod; fhAmplitudeModFraction = qa.fhAmplitudeModFraction; 
-//  fhIMMod=qa.fhIMMod; fhIMCellCutMod=qa.fhIMCellCutMod;
-//     
-//  fhGenGamPt = qa.fhGenGamPt  ; fhGenGamEta = qa.fhGenGamEta  ; fhGenGamPhi = qa.fhGenGamPhi  ;
-//  fhGenPi0Pt = qa.fhGenPi0Pt  ; fhGenPi0Eta = qa.fhGenPi0Eta  ; fhGenPi0Phi = qa.fhGenPi0Phi  ;
-//  fhGenEtaPt = qa.fhGenEtaPt  ; fhGenEtaEta = qa.fhGenEtaEta  ; fhGenEtaPhi = qa.fhGenEtaPhi  ;
-//  fhGenOmegaPt = qa.fhGenOmegaPt  ; fhGenOmegaEta = qa.fhGenOmegaEta  ; fhGenOmegaPhi = qa.fhGenOmegaPhi  ;
-//  fhGenElePt = qa.fhGenElePt  ; fhGenEleEta = qa.fhGenEleEta  ; fhGenElePhi = qa.fhGenElePhi ;       
-//
-//  fhEMVxyz = qa.fhEMVxyz ;  fhEMR = qa.fhEMR ; fhHaVxyz = qa.fhHaVxyz ;  fhHaR = qa.fhHaR ;
-//  fhGamE = qa.fhGamE ;fhGamPt = qa.fhGamPt ;fhGamPhi = qa.fhGamPhi ;fhGamEta = qa.fhGamEta ; 
-//  fhGamDeltaE   = qa.fhDeltaE; fhGamDeltaPt  = qa.fhDeltaPt; fhGamDeltaPhi = qa.fhDeltaPhi; fhGamDeltaEta = qa.fhDeltaEta;
-//     
-//  fhGamRatioE   = qa.fhGamRatioE;  fhGamRatioPt  = qa.fhGamRatioPt;  fhGamRatioPhi = qa.fhGamRatioPhi;  fhGamRatioEta = qa.fhGamRatioEta;
-//
-//  fhEleE = qa.fhEleE ;fhElePt = qa.fhElePt ;fhElePhi = qa.fhElePhi ;fhEleEta = qa.fhEleEta ;
-//  fhPi0E = qa.fhPi0E ;fhPi0Pt = qa.fhPi0Pt ;fhPi0Phi = qa.fhPi0Phi ;fhPi0Eta = qa.fhPi0Eta ; 
-//  fhNeHadE = qa.fhNeHadE ;fhNeHadPt = qa.fhNeHadPt ;fhNeHadPhi = qa.fhNeHadPhi ;fhNeHadEta = qa.fhNeHadEta ; 
-//  fhChHadE = qa.fhChHadE ;fhChHadPt = qa.fhChHadPt ;fhChHadPhi = qa.fhChHadPhi ;fhChHadEta = qa.fhChHadEta ;
-//  fhGenGamAccE = qa.fhGenGamAccE ;  fhGenPi0AccE = qa.fhGenPi0AccE ;
-//  fhGenGamAccPt = qa.fhGenGamAccPt ;fhGenGamAccEta = qa.fhGenGamAccEta ;fhGenGamAccPhi = qa.fhGenGamAccPhi ;
-//  fhGenPi0AccPt = qa.fhGenPi0AccPt ;fhGenPi0AccEta = qa.fhGenPi0AccEta; fhGenPi0AccPhi = qa.fhGenPi0AccPhi ; 
-//             
-//  fhGamECharged = qa.fhGamECharged; fhGamPtCharged = qa.fhGamPtCharged; fhGamPhiCharged = qa.fhGamPhiCharged; fhGamEtaCharged = qa.fhGamEtaCharged;  
-//  fhEleECharged = qa.fhEleECharged; fhElePtCharged = qa.fhElePtCharged; fhElePhiCharged = qa.fhElePhiCharged; fhEleEtaCharged = qa.fhEleEtaCharged; 
-//  fhPi0ECharged = qa.fhPi0ECharged; fhPi0PtCharged = qa.fhPi0PtCharged; fhPi0PhiCharged = qa.fhPi0PhiCharged; fhPi0EtaCharged = qa.fhPi0EtaCharged;  
-//  fhNeHadECharged = qa.fhNeHadECharged; fhNeHadPtCharged = qa.fhNeHadPtCharged; fhNeHadPhiCharged = qa.fhNeHadPhiCharged; fhNeHadEtaCharged = qa.fhNeHadEtaCharged;  
-//  fhChHadECharged = qa.fhChHadECharged; fhChHadPtCharged = qa.fhChHadPtCharged; fhChHadPhiCharged = qa.fhChHadPhiCharged; fhChHadEtaCharged = qa.fhChHadEtaCharged;  
-//     
-//  fh1pOverE    = qa.fh1pOverE;
-//  fh1dR        = qa.fh1dR;
-//  fh2MatchdEdx = qa.fh2MatchdEdx;
-//  fh2EledEdx   = qa.fh2EledEdx;      
-//     
-//  fhMCEle1pOverE    = qa.fhMCEle1pOverE; 
-//  fhMCEle1dR        = qa.fhMCEle1dR; 
-//  fhMCEle2MatchdEdx = qa.fhMCEle2MatchdEdx ;
-//     
-//  fhMCChHad1pOverE = qa.fhMCChHad1pOverE; fhMCChHad1dR = qa.fhMCChHad1dR;  fhMCChHad2MatchdEdx = qa.fhMCChHad2MatchdEdx; 
-//  fhMCNeutral1pOverE = qa.fhMCNeutral1pOverE; fhMCNeutral1dR = qa.fhMCNeutral1dR;  fhMCNeutral2MatchdEdx = qa.fhMCNeutral2MatchdEdx; 
-//  fh1pOverER02 = qa.fh1pOverER02;  fhMCEle1pOverER02 = qa.fhMCEle1pOverER02;  fhMCChHad1pOverER02 = qa.fhMCChHad1pOverER02;  
-//  fhMCNeutral1pOverER02 = qa.fhMCNeutral1pOverER02;
-//     
-//  return *this;
-//
-//}
-
 //________________________________________________________________________________________________________________________________________________
 //AliAnaCalorimeterQA::~AliAnaCalorimeterQA() {
        // dtor
@@ -423,6 +286,13 @@ TList *  AliAnaCalorimeterQA::GetCreateOutputObjects()
        fhEtaPhiE->SetZTitle("E (GeV) ");
        outputContainer->Add(fhEtaPhiE);
        
+       fhClusterTimeEnergy  = new TH2F ("hClusterTimeEnergy","energy vs TOF, reconstructed clusters",
+                                                  nptbins,ptmin,ptmax, ntimebins,timemin,timemax); 
+       fhClusterTimeEnergy->SetXTitle("E (GeV) ");
+       fhClusterTimeEnergy->SetYTitle("TOF (ns)");
+       outputContainer->Add(fhClusterTimeEnergy);
+       
+       
        //Shower shape
        fhLambda  = new TH3F ("hLambda","#lambda_{0}^{2} vs #lambda_{1}^{2} vs energy, reconstructed clusters",
                                                   ssbins,ssmin,ssmax,ssbins,ssmin,ssmax,nptbins,ptmin,ptmax); 
@@ -1498,6 +1368,8 @@ void AliAnaCalorimeterQA::InitParameters()
   fStyleMacro  = "" ;
   fNModules    = 12; // set maximum to maximum number of EMCAL modules
   fNRCU        = 2;  // set maximum number of RCU in EMCAL per SM
+  fTimeCutMin  = -1;
+  fTimeCutMax  = 9999999;
        
   fHistoPOverEBins     = 100 ;  fHistoPOverEMax     = 10.  ;  fHistoPOverEMin     = 0. ;
   fHistodEdxBins       = 200 ;  fHistodEdxMax       = 400. ;  fHistodEdxMin       = 0. ;  
@@ -1527,6 +1399,7 @@ void AliAnaCalorimeterQA::Print(const Option_t * opt) const
   printf("Select Calorimeter %s \n",fCalorimeter.Data());
   printf("Make plots?        %d \n",fMakePlots);       
   printf("Plots style macro  %s \n",fStyleMacro.Data()); 
+  printf("Time Cut: %3.1f < TOF  < %3.1f\n", fTimeCutMin, fTimeCutMax);
   printf("Histograms: %3.1f < p/E  < %3.1f, Nbin = %d\n", fHistoPOverEMin, fHistoPOverEMax, fHistoPOverEBins);
   printf("Histograms: %3.1f < dEdx < %3.1f, Nbin = %d\n", fHistodEdxMin,   fHistodEdxMax,   fHistodEdxBins);
   printf("Histograms: %3.1f < dR (track cluster)   < %3.1f, Nbin = %d\n", fHistodRMin,     fHistodRMax,     fHistodRBins);
@@ -1645,6 +1518,7 @@ void  AliAnaCalorimeterQA::MakeAnalysisFillHistograms()
        
        Float_t pos[3] ;
        Float_t showerShape[3] ;
+       Double_t tof = 0;
        //Loop over CaloClusters
        //if(nCaloClusters > 0)printf("QA  : Vertex Cut passed %f, cut %f, entries %d, %s\n",v[2], 40., nCaloClusters, fCalorimeter.Data());
        for(Int_t iclus = 0; iclus < nCaloClusters; iclus++){
@@ -1661,6 +1535,10 @@ void  AliAnaCalorimeterQA::MakeAnalysisFillHistograms()
                        //Get cluster kinematics
                        clus->GetPosition(pos);
                        clus->GetMomentum(mom,v);
+                       tof = clus->GetTOF()*1e9;
+                       printf("QA:TOF %f\n",tof);
+                       if(tof < fTimeCutMin || tof > fTimeCutMax) continue;
+                       printf("QA:TOF %f\n",tof);
                        
                        //Check only certain regions
                        Bool_t in = kTRUE;
@@ -1808,6 +1686,9 @@ void  AliAnaCalorimeterQA::MakeAnalysisFillHistograms()
                        //Get cluster kinematics
                        clus->GetPosition(pos);
                        clus->GetMomentum(mom,v);
+                       tof = clus->GetTOF()*1e9;
+                       if(tof < fTimeCutMin || tof > fTimeCutMax) continue;
+
                        //Check only certain regions
                        Bool_t in = kTRUE;
                        if(IsFiducialCutOn()) in =  GetFiducialCut()->IsInFiducialCut(mom,fCalorimeter) ;
@@ -1909,7 +1790,7 @@ void  AliAnaCalorimeterQA::MakeAnalysisFillHistograms()
                //Fill histograms related to single cluster or track matching
                //-----------------------------------------------------------
 
-               ClusterHistograms(mom, pos, showerShape, nCaloCellsPerCluster, nModule, nTracksMatched, track, labels, nLabel); 
+               ClusterHistograms(mom, tof, pos, showerShape, nCaloCellsPerCluster, nModule, nTracksMatched, track, labels, nLabel);    
                
                         
                //-----------------------------------------------------------
@@ -2036,6 +1917,8 @@ void  AliAnaCalorimeterQA::MakeAnalysisFillHistograms()
                                }
                                amp     = cell->GetAmplitude(iCell);
                                time    = cell->GetTime(iCell)*1e9;//transform time to ns
+                               if(time < fTimeCutMin || time > fTimeCutMax) continue;
+
                                //printf("%s: time %g\n",fCalorimeter.Data(), time);
                                id      = cell->GetCellNumber(iCell);
                                fhAmplitude->Fill(amp);
@@ -2236,7 +2119,7 @@ void  AliAnaCalorimeterQA::MakeAnalysisFillHistograms()
 
 
 //__________________________________
-void AliAnaCalorimeterQA::ClusterHistograms(const TLorentzVector mom, Float_t *pos, Float_t *showerShape,
+void AliAnaCalorimeterQA::ClusterHistograms(const TLorentzVector mom, const Double_t tof, Float_t *pos, Float_t *showerShape,
                                            const Int_t nCaloCellsPerCluster,const Int_t nModule,
                                            const Int_t nTracksMatched,  const TObject * track,  
                                            const Int_t * labels, const Int_t nLabels){
@@ -2272,6 +2155,7 @@ void AliAnaCalorimeterQA::ClusterHistograms(const TLorentzVector mom, Float_t *p
        fhXYZ    ->Fill(pos[0], pos[1],pos[2]);
        Float_t rxyz = TMath::Sqrt(pos[0]*pos[0]+pos[1]*pos[1]);//+pos[2]*pos[2]);
        fhRE     ->Fill(rxyz,e);
+       fhClusterTimeEnergy->Fill(e,tof);
        
        //Shower shape parameters
        fhLambda->Fill(showerShape[0], showerShape[1], e);
@@ -2883,6 +2767,8 @@ void AliAnaCalorimeterQA::ReadHistograms(TList* outputList)
        fhEta     = (TH1F *) outputList->At(index++);
        fhEtaPhiE = (TH3F *) outputList->At(index++);
        
+       fhClusterTimeEnergy = (TH2F*) outputList->At(index++);
+       
        fhLambda      = (TH3F *)  outputList->At(index++);
        fhDispersion  = (TH2F *)  outputList->At(index++);
        
index 42f2645..d5c2dbe 100755 (executable)
@@ -34,7 +34,7 @@ private:
 public:
   virtual ~AliAnaCalorimeterQA() {;} //virtual dtor
   
-  void ClusterHistograms(const TLorentzVector mom, Float_t *pos, Float_t * showerShape, 
+  void ClusterHistograms(const TLorentzVector mom, const Double_t tof, Float_t *pos, Float_t * showerShape, 
                                                 const Int_t nCaloCellsPerCluster, const Int_t nModule,
                                                 const Int_t nTracksMatched, const TObject* track, 
                                                 const Int_t * labels, const Int_t nLabels);
@@ -71,6 +71,10 @@ public:
        
   void SetNumberOfModules(Int_t nmod) {fNModules = nmod;}
 
+  void SetTimeCut(Double_t min, Double_t max) {fTimeCutMin = min; fTimeCutMax = max;}
+  Double_t GetTimeCutMin() const {return fTimeCutMin;}
+  Double_t GetTimeCutMax() const {return fTimeCutMax;}
+
   //Histogram binning setters
 
   Int_t GetNewRebinForRePlotting(TH1D*histo, const Float_t newXmin, const Float_t newXmax,
@@ -202,13 +206,15 @@ public:
        
  private:
   
-  TString fCalorimeter ;    // Calorimeter selection
-  TString fStyleMacro  ;    // Location of macro for plots style
-  Bool_t  fMakePlots   ;    // Print plots
-  Bool_t  fCorrelateCalos ; // Correlate PHOS/EMCAL clusters
-  Int_t   fNModules    ;    // Number of EMCAL/PHOS modules, set as many histogras as modules 
-  Int_t   fNRCU        ;    // Number of EMCAL/PHOS RCU, set as many histogras as RCU 
-
+  TString  fCalorimeter ;    // Calorimeter selection
+  TString  fStyleMacro  ;    // Location of macro for plots style
+  Bool_t   fMakePlots   ;    // Print plots
+  Bool_t   fCorrelateCalos ; // Correlate PHOS/EMCAL clusters
+  Int_t    fNModules    ;    // Number of EMCAL/PHOS modules, set as many histogras as modules 
+  Int_t    fNRCU        ;    // Number of EMCAL/PHOS RCU, set as many histogras as RCU 
+  Double_t fTimeCutMin  ;    // Remove clusters/cells with time smaller than this value, in ns
+  Double_t fTimeCutMax  ;    // Remove clusters/cells with time larger than this value, in ns
+       
   //Histograms
   //Histogram Bins
   Int_t   fHistoPOverEBins;        // p/E histogram number of bins
@@ -290,6 +296,7 @@ public:
        
   TH1F * fhNClusters; //! Number of clusters
        
+  TH2F * fhClusterTimeEnergy;   //! Cluster Time vs Energy 
   TH1F * fhCellTimeSpreadRespectToCellMax; //! Difference of the time of cell with maximum dep energy and the rest of cells
   TH1F * fhCellIdCellLargeTimeSpread;      //! Cells with large time respect to max (diff > 100 ns)
        
@@ -463,7 +470,7 @@ public:
   TH2F *fhMCChHad1pOverER02;    //! p/E for track-cluster matches, dR > 0.2, MC charged hadrons
   TH2F *fhMCNeutral1pOverER02;  //! p/E for track-cluster matches, dR > 0.2, MC neutral
        
-       ClassDef(AliAnaCalorimeterQA,8)
+       ClassDef(AliAnaCalorimeterQA,9)
 } ;
 
 
index d2543f0..6e93995 100755 (executable)
@@ -48,6 +48,7 @@ ClassImp(AliAnaPhoton)
     AliAnaPartCorrBaseClass(), fCalorimeter(""), 
     fMinDist(0.),fMinDist2(0.),fMinDist3(0.),fRejectTrackMatch(0),
        fCheckConversion(kFALSE),fAddConvertedPairsToAOD(kFALSE), fMassCut(0),
+       fTimeCutMin(-1), fTimeCutMax(9999999),
        fhPtPhoton(0),fhPhiPhoton(0),fhEtaPhoton(0),
     //MC
     fhDeltaE(0), fhDeltaPt(0),fhRatioE(0), fhRatioPt(0),fh2E(0),fh2Pt(0),
@@ -73,7 +74,7 @@ AliAnaPhoton::AliAnaPhoton(const AliAnaPhoton & g) :
   fMinDist(g.fMinDist),fMinDist2(g.fMinDist2), fMinDist3(g.fMinDist3),
   fRejectTrackMatch(g.fRejectTrackMatch),
   fCheckConversion(g.fCheckConversion),fAddConvertedPairsToAOD(g.fAddConvertedPairsToAOD),
-  fMassCut(g.fMassCut),
+  fMassCut(g.fMassCut), fTimeCutMin(g.fTimeCutMin), fTimeCutMax(g.fTimeCutMax),        
   fhPtPhoton(g.fhPtPhoton),fhPhiPhoton(g.fhPhiPhoton),fhEtaPhoton(g.fhEtaPhoton), 
   //MC
   fhDeltaE(g.fhDeltaE), fhDeltaPt(g.fhDeltaPt), 
@@ -104,8 +105,11 @@ AliAnaPhoton & AliAnaPhoton::operator = (const AliAnaPhoton & g)
   fMinDist  = g.fMinDist;
   fMinDist2 = g.fMinDist2;
   fMinDist3 = g.fMinDist3;
-  fMassCut     = g.fMassCut;
+  fMassCut  = g.fMassCut;
        
+  fTimeCutMin = g.fTimeCutMin; 
+  fTimeCutMax = g.fTimeCutMax; 
+
   fRejectTrackMatch       = g.fRejectTrackMatch;
   fCheckConversion        = g.fCheckConversion;
   fAddConvertedPairsToAOD = g.fAddConvertedPairsToAOD;
@@ -423,6 +427,9 @@ void AliAnaPhoton::InitParameters()
   fMinDist3 = 5.;
   fMassCut  = 0.03; //30 MeV
        
+  fTimeCutMin  = -1;
+  fTimeCutMax  = 9999999;
+
   fRejectTrackMatch       = kTRUE ;
   fCheckConversion        = kFALSE;
   fAddConvertedPairsToAOD = kFALSE;
@@ -475,7 +482,11 @@ void  AliAnaPhoton::MakeAnalysisFillAOD()
                  
     //If too small or big pt, skip it
     if(mom.Pt() < GetMinPt() || mom.Pt() > GetMaxPt() ) continue ; 
-         
+    Double_t tof = calo->GetTOF()*1e9;
+       printf("Photon:TOF %f\n",tof);
+       if(tof < fTimeCutMin || tof > fTimeCutMax) continue;
+       printf("Photon2:TOF %f\n",tof);
+
        //printf("AliAnaPhoton::Current Event %d; Current File Name : %s, E %f, pT %f, Ecl %f\n",GetReader()->GetEventNumber(),(GetReader()->GetCurrentFileName()).Data(), mom.E(), mom.Pt(),calo->E());
 
     //Check acceptance selection
@@ -845,6 +856,8 @@ void AliAnaPhoton::Print(const Option_t * opt) const
   printf("Check Pair Conversion                = %d\n",fCheckConversion);
   printf("Add conversion pair to AOD           = %d\n",fAddConvertedPairsToAOD);
   printf("Conversion pair mass cut             = %f\n",fMassCut);
+  printf("Time Cut: %3.1f < TOF  < %3.1f\n", fTimeCutMin, fTimeCutMax);
+
   printf("    \n") ;
        
 } 
index f23cde1..6eb7c51 100755 (executable)
@@ -72,6 +72,10 @@ public:
   Float_t GetMassCut()    const {return fMassCut ; }
   void SetMassCut(Float_t m)    {fMassCut = m ; }
        
+  void SetTimeCut(Double_t min, Double_t max) {fTimeCutMin = min; fTimeCutMax = max;}
+  Double_t GetTimeCutMin() const {return fTimeCutMin;}
+  Double_t GetTimeCutMax() const {return fTimeCutMax;} 
+       
   private:
  
   TString fCalorimeter ; // Calorimeter where the gamma is searched;
@@ -82,7 +86,9 @@ public:
   Bool_t  fCheckConversion;        // Combine pairs of clusters with mass close to 0
   Bool_t  fAddConvertedPairsToAOD; // Put Converted pairs in AOD
   Float_t fMassCut;                // Mass cut for the conversion pairs selection
-       
+  Double_t fTimeCutMin  ;    // Remove clusters/cells with time smaller than this value, in ns
+  Double_t fTimeCutMax  ;    // Remove clusters/cells with time larger than this value, in ns
+
   //Histograms  
   TH1F * fhPtPhoton   ; //! Number of identified photon vs transerse momentum 
   TH2F * fhPhiPhoton  ; //! Azimuthal angle of identified  photon vs transerse momentum 
@@ -128,7 +134,7 @@ public:
   TH2F * fhPhiUnknown;  //! Phi of identified  Unknown gamma
   TH2F * fhEtaUnknown;  //! eta of identified  Unknown gamma
 
-   ClassDef(AliAnaPhoton,6)
+   ClassDef(AliAnaPhoton,7)
 
 } ;