put back the trick for the cluster time calibration with old AOD where no time stored...
authorgconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 5 Dec 2012 13:03:09 +0000 (13:03 +0000)
committergconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 5 Dec 2012 13:03:09 +0000 (13:03 +0000)
PWGGA/EMCALTasks/AliAnalysisTaskEMCALClusterize.cxx
PWGGA/EMCALTasks/AliAnalysisTaskEMCALClusterize.h

index 32a225c..f04f6e6 100644 (file)
@@ -77,8 +77,9 @@ AliAnalysisTaskEMCALClusterize::AliAnalysisTaskEMCALClusterize(const char *name)
 , fFillAODFile(kFALSE),   fFillAODHeader(0)
 , fFillAODCaloCells(0),   fRun(-1)
 , fRecoUtils(0),          fConfigName("")
-, fCellLabels(),          fCellSecondLabels()
+, fCellLabels(),          fCellSecondLabels(),        fCellTime()
 , fCellMatchdEta(),       fCellMatchdPhi()
+, fRecalibrateWithClusterTime(0)
 , fMaxEvent(0),           fDoTrackMatching(kFALSE)
 , fSelectCell(kFALSE),    fSelectCellMinE(0),         fSelectCellMinFrac(0)
 , fRemoveLEDEvents(kTRUE),fRemoveExoticEvents(kFALSE)
@@ -94,6 +95,7 @@ AliAnalysisTaskEMCALClusterize::AliAnalysisTaskEMCALClusterize(const char *name)
   {
     fCellLabels[j]       = -1;
     fCellSecondLabels[j] = -1;
+    fCellTime[j]         =  0.;    
     fCellMatchdEta[j]    = -999;
     fCellMatchdPhi[j]    = -999;
   }  
@@ -117,8 +119,9 @@ AliAnalysisTaskEMCALClusterize::AliAnalysisTaskEMCALClusterize()
 , fFillAODFile(kFALSE),     fFillAODHeader(0)
 , fFillAODCaloCells(0),     fRun(-1)
 , fRecoUtils(0),            fConfigName("")
-, fCellLabels(),            fCellSecondLabels()
+, fCellLabels(),            fCellSecondLabels(),        fCellTime()
 , fCellMatchdEta(),         fCellMatchdPhi()
+, fRecalibrateWithClusterTime(0)
 , fMaxEvent(0),             fDoTrackMatching(kFALSE)
 , fSelectCell(kFALSE),      fSelectCellMinE(0),         fSelectCellMinFrac(0)
 , fRemoveLEDEvents(kTRUE),  fRemoveExoticEvents(kFALSE)
@@ -134,6 +137,7 @@ AliAnalysisTaskEMCALClusterize::AliAnalysisTaskEMCALClusterize()
   {
     fCellLabels[j]       = -1;
     fCellSecondLabels[j] = -1;
+    fCellTime[j]         =  0.; 
     fCellMatchdEta[j]    = -999;
     fCellMatchdPhi[j]    = -999;
   }
@@ -163,7 +167,7 @@ AliAnalysisTaskEMCALClusterize::~AliAnalysisTaskEMCALClusterize()
   if (fCaloClusterArr)
   {
     fCaloClusterArr->Delete();
-    delete fCaloClusterArr;
+    delete fCaloClusterArr; 
   }
   
   if(fClusterizer) delete fClusterizer;
@@ -578,6 +582,7 @@ void AliAnalysisTaskEMCALClusterize::ClusterizeCells()
       {
         fCellLabels[index[icell]]       = label;
         fCellSecondLabels[index[icell]] = label2;
+        fCellTime[index[icell]]         = clus->GetTOF();    
         fCellMatchdEta[index[icell]]    = clus->GetTrackDz();
         fCellMatchdPhi[index[icell]]    = clus->GetTrackDx();
         //printf(" %d,", index[icell] );
@@ -603,22 +608,28 @@ void AliAnalysisTaskEMCALClusterize::ClusterizeCells()
     id = cells->GetCellNumber(icell);
     Bool_t accept = fRecoUtils->AcceptCalibrateCell(id,bc,amp,time,cells);
     
-    // Do not include cells with too low energy, nor exotic cell, nor too large time
-    if( amp  < fRecParam->GetMinECut() ||
-        time > fRecParam->GetTimeMax() ||
-        time < fRecParam->GetTimeMin()    ) accept = kFALSE;
+    // Do not include cells with too low energy, nor exotic cell
+    if(amp < fRecParam->GetMinECut() ) accept = kFALSE;
+    
+    // In case of old AOD analysis cell time is -1 s, approximate replacing by time of the cluster the digit belongs.
+    if (fRecalibrateWithClusterTime)
+    { 
+      time = fCellTime[id];
+      //printf("cell %d time org %f - ",id, time*1.e9);
+      fRecoUtils->RecalibrateCellTime(id,bc,time);
+      //printf("recal %f\n",time*1.e9);
+    }
     
     if(  accept && fRecoUtils->IsExoticCell(id,cells,bc))
     {
       accept = kFALSE;
     }
     
-    //printf("cell %d, amp %2.3f time %2.3f, accept %d\n",id, amp, time*1.e9,accept);
-    
     if( !accept )
     {
       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.; 
       fCellMatchdEta[id]   =-999;
       fCellMatchdPhi[id]   =-999;
       if( DebugLevel() > 2 )
@@ -718,6 +729,7 @@ void AliAnalysisTaskEMCALClusterize::ClusterUnfolding()
           {
             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.;   
             fCellMatchdEta[cellNumber]   =-999;
             fCellMatchdPhi[cellNumber]   =-999;
             continue;
@@ -943,7 +955,11 @@ void AliAnalysisTaskEMCALClusterize::FillCaloClusterInEvent()
       Int_t absId0 = newCluster->GetCellsAbsId()[0]; // Assign match of first cell in cluster
       newCluster->SetTrackDistance(fCellMatchdPhi[absId0],fCellMatchdEta[absId0]);
     }
-        
+    
+    //printf("New cluster E %f, Time  %e, Id = ", newCluster->E(), newCluster->GetTOF() );
+    //for(Int_t icell=0; icell < newCluster->GetNCells(); icell++ ) printf(" %d,", newCluster->GetCellsAbsId() [icell] );
+    //printf("\n");
+    
     // Calculate distance to bad channel for new cluster. Make sure you give the list of bad channels.
     fRecoUtils->RecalculateClusterDistanceToBadChannel(fGeom, fEvent->GetEMCALCells(), newCluster);
     
@@ -1399,11 +1415,9 @@ void AliAnalysisTaskEMCALClusterize::RecPoints2Clusters()
     clus->SetPosition(g);
     clus->SetNCells(ncellsTrue);
     clus->SetCellsAbsId(absIds);
-    
     clus->SetCellsAmplitudeFraction(ratios);
     clus->SetChi2(-1); //not yet implemented
     clus->SetTOF(recPoint->GetTime()) ; //time-of-flight
-    
     clus->SetNExMax(recPoint->GetNExMax()); //number of local maxima
     clus->SetDistanceToBadChannel(recPoint->GetDistanceToBadTower()); 
     
index 29a2dc9..571a2d4 100644 (file)
@@ -78,6 +78,9 @@ class AliAnalysisTaskEMCALClusterize : public AliAnalysisTaskSE {
   void           SwitchOffFillAODHeader()                       { fFillAODHeader     = kFALSE  ; } 
   void           SwitchOnFillAODCaloCells()                     { fFillAODCaloCells  = kTRUE   ; }
   void           SwitchOffFillAODCaloCells()                    { fFillAODCaloCells  = kFALSE  ; } 
+
+  void           SwitchOnRecalibrateWithClusterTime()           { fRecalibrateWithClusterTime  = kTRUE   ; }
+  void           SwitchOffRecalibrateWithClusterTime()          { fRecalibrateWithClusterTime  = kFALSE  ; }
   
   //Algorithms settings
   
@@ -175,9 +178,12 @@ 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 
   Float_t                fCellMatchdEta[12672];    // Array with cluster-track dPhi 
   Float_t                fCellMatchdPhi[12672];    // Array with cluster-track dEta 
 
+  Bool_t                 fRecalibrateWithClusterTime; // Use fCellTime to store time of cells in cluster
+  
   Int_t                  fMaxEvent;                // Set a maximum event
   
   Bool_t                 fDoTrackMatching;         // On/Off the matching recalulation to speed up analysis in PbPb
@@ -206,7 +212,7 @@ class AliAnalysisTaskEMCALClusterize : public AliAnalysisTaskSE {
   AliAnalysisTaskEMCALClusterize(           const AliAnalysisTaskEMCALClusterize&); // not implemented
   AliAnalysisTaskEMCALClusterize& operator=(const AliAnalysisTaskEMCALClusterize&); // not implemented
 
-  ClassDef(AliAnalysisTaskEMCALClusterize, 23);
+  ClassDef(AliAnalysisTaskEMCALClusterize, 24);
 
 };