In case of AOD analysis where cell time is not available, assign to the cell the...
authorgconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 4 Sep 2011 18:01:24 +0000 (18:01 +0000)
committergconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 4 Sep 2011 18:01:24 +0000 (18:01 +0000)
PWG4/CaloCalib/AliAnalysisTaskEMCALClusterize.cxx
PWG4/CaloCalib/AliAnalysisTaskEMCALClusterize.h

index 5a41d12..2074219 100644 (file)
@@ -75,7 +75,8 @@ AliAnalysisTaskEMCALClusterize::AliAnalysisTaskEMCALClusterize(const char *name)
   , fOutputAODBranch(0), fOutputAODBranchName("newEMCALClusters")
   , fFillAODFile(kTRUE), fFillAODHeader(0),    fFillAODCaloCells(0)
   , fRun(-1),            fRecoUtils(0),        fConfigName("")
-  , fCellLabels(),       fCellSecondLabels(),  fMaxEvent(1000000000),  fDoTrackMatching(kFALSE)
+  , fCellLabels(),       fCellSecondLabels(),  fCellTime()
+  , fMaxEvent(1000000000),  fDoTrackMatching(kFALSE)
   , fSelectCell(kFALSE)
 {
   //ctor
@@ -83,13 +84,16 @@ AliAnalysisTaskEMCALClusterize::AliAnalysisTaskEMCALClusterize(const char *name)
   for(Int_t j = 0; j < 24*48*11; j++)  {
     fCellLabels[j]       = -1;
     fCellSecondLabels[j] = -1;
+    fCellTime[j]         =  0.;        
   }  
+  
   fDigitsArr       = new TClonesArray("AliEMCALDigit",200);
   fClusterArr      = new TObjArray(100);
   fCaloClusterArr  = new TObjArray(1000);
   fRecParam        = new AliEMCALRecParam;
   fBranchNames     = "ESD:AliESDHeader.,EMCALCells.";
   fRecoUtils       = new AliEMCALRecoUtils();
+  
 }
 
 //________________________________________________________________________
@@ -110,6 +114,7 @@ AliAnalysisTaskEMCALClusterize::AliAnalysisTaskEMCALClusterize()
   for(Int_t j = 0; j < 24*48*11; j++)  {
     fCellLabels[j]       = -1;
     fCellSecondLabels[j] = -1;
+    fCellTime[j]         =  0.;        
   }
   fDigitsArr       = new TClonesArray("AliEMCALDigit",200);
   fClusterArr      = new TObjArray(100);
@@ -472,6 +477,7 @@ void AliAnalysisTaskEMCALClusterize::UserExec(Option_t *)
                 fRecoUtils->GetEMCALChannelStatus(imod, ieta, iphi)){
               fCellLabels[cellNumber]      =-1; //reset the entry in the array for next event
               fCellSecondLabels[cellNumber]=-1; //reset the entry in the array for next event
+              fCellTime[cellNumber]        = 0.;        
               continue;
             }
             
@@ -543,8 +549,10 @@ void AliAnalysisTaskEMCALClusterize::UserExec(Option_t *)
         if (clus->GetNLabels()>=2) label2 = clus->GetLabelAt(1) ;
         UShort_t * index    = clus->GetCellsAbsId() ;
         for(Int_t icell=0; icell < clus->GetNCells(); icell++ ){
-          fCellLabels[index[icell]]      =label;
-          fCellSecondLabels[index[icell]]=label2;
+          fCellLabels[index[icell]]       = label;
+          fCellSecondLabels[index[icell]] = label2;
+          fCellTime[icell]                = clus->GetTOF();        
+
           //printf("1) absID %d, label[0] %d label[1] %d\n",index[icell], fCellLabels[index[icell]],fCellSecondLabels[index[icell]]);
         }
         nClustersOrg++;
@@ -579,6 +587,7 @@ void AliAnalysisTaskEMCALClusterize::UserExec(Option_t *)
          fRecoUtils->GetEMCALChannelStatus(imod, ieta, iphi)){
         fCellLabels[id]      =-1; //reset the entry in the array for next event
         fCellSecondLabels[id]=-1; //reset the entry in the array for next event
+        fCellTime[id]        = 0.;        
         //printf("Remove channel %d\n",id);
         continue;
       }
@@ -589,6 +598,9 @@ void AliAnalysisTaskEMCALClusterize::UserExec(Option_t *)
         amp *=fRecoUtils->GetEMCALChannelRecalibrationFactor(imod,ieta,iphi);
       }
       
+      // In case of AOD analysis cell time is 0, approximate replacing by time of the cluster the digit belongs.
+      if (time*1e9 < 1.) time = fCellTime[id];
+      
       //Create the digit, put a fake primary deposited energy to trick the clusterizer when checking the most likely primary
       new((*fDigitsArr)[idigit]) AliEMCALDigit( fCellLabels[id], fCellLabels[id],id, amp, time,AliEMCALDigit::kHG,idigit, 0, 0, 1); 
       //if(fCellLabels[id]>=0)printf("2) Digit cell %d, label %d\n",id,fCellLabels[id]) ;
index 269a174..bd6462f 100644 (file)
@@ -121,13 +121,14 @@ class AliAnalysisTaskEMCALClusterize : public AliAnalysisTaskSE {
   
   Int_t                  fCellLabels[12672];       // Array with MC label to be passed to digit. 
   Int_t                  fCellSecondLabels[12672]; // Array with Second MC label to be passed to digit. 
-  
+  Double_t               fCellTime[12672];         // Array with cluster time to be passed to digit in case of AODs 
+
   Int_t                  fMaxEvent;         // Set a maximum event
   
   Bool_t                 fDoTrackMatching;  // On/Off the matching recalulation to speed up analysis in PbPb
   Bool_t                 fSelectCell;       // Reject cells from cluster if energy is too low and recalculate position/energy and other
   
-  ClassDef(AliAnalysisTaskEMCALClusterize, 9);
+  ClassDef(AliAnalysisTaskEMCALClusterize, 10);
 };
 
 #endif //ALIANALYSISTASKEMCALCLUSTERIZE_H