]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGGA/EMCALTasks/AliAnalysisTaskEMCALClusterize.h
changes from Alexis
[u/mrichter/AliRoot.git] / PWGGA / EMCALTasks / AliAnalysisTaskEMCALClusterize.h
index 29a2dc927f5e21d4801231c4c43ed399df22aeca..a9baa0d5e2f17325392fde6671aa28bf196d8c7e 100644 (file)
@@ -17,6 +17,8 @@ class AliEMCALCalibData;
 class AliCaloCalibPedestal;
 class AliEMCALClusterizer;
 class AliEMCALAfterBurnerUF;
+class AliEMCALRecPoint;
+class AliAODCaloCluster;
 #include "AliEMCALRecParam.h"
 #include "AliEMCALRecoUtils.h"
 
@@ -37,11 +39,14 @@ class AliAnalysisTaskEMCALClusterize : public AliAnalysisTaskSE {
   // Event methods, settings
   
   Bool_t         AcceptEventEMCAL();
-  void           SwitchOnSelectEMCALEvent()                    { fSelectEMCALEvent = kTRUE   ; }
-  void           SwitchOffSelectEMCALEvent()                   { fSelectEMCALEvent = kFALSE  ; }
-  void           SetEMCALEnergyCut(Float_t cut)                { fEMCALEnergyCut = cut       ; }
-  void           SetEMCALNcellsCut(Int_t cut)                  { fEMCALNcellsCut = cut       ; }
+  void           SwitchOnSelectEMCALEvent()                    { fSelectEMCALEvent   = kTRUE   ; }
+  void           SwitchOffSelectEMCALEvent()                   { fSelectEMCALEvent   = kFALSE  ; }
+  void           SetEMCALEnergyCut(Float_t cut)                { fEMCALEnergyCut     = cut     ; }
+  void           SetEMCALNcellsCut(Int_t cut)                  { fEMCALNcellsCut     = cut     ; }
 
+  void           SwitchOnInputAODFilter()                      { fInputFromFilter    = kTRUE   ; }
+  void           SwitchOffInputAODFilter()                     { fInputFromFilter    = kFALSE  ; }
+  
   void           CheckAndGetEvent();
   
   Bool_t         IsExoticEvent();
@@ -78,6 +83,11 @@ 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
   
@@ -102,7 +112,8 @@ class AliAnalysisTaskEMCALClusterize : public AliAnalysisTaskSE {
   void           SwitchOnCellEnergySelection()                  { fSelectCell        = kTRUE   ; }
   void           SwitchOffCellEnergySelection()                 { fSelectCell        = kFALSE  ; } 
   void           SetCellCuts(Float_t e, Float_t frac)           { fSelectCellMinE    = e       ; 
-                                                                  fSelectCellMinFrac = frac    ; }  
+                                                                  fSelectCellMinFrac = frac    ; }
+  void           SetRejectBelowThreshold(Bool_t reject)         { fRejectBelowThreshold =reject ; }
   // OADB options settings
   
   void           AccessOADB() ;
@@ -117,21 +128,34 @@ class AliAnalysisTaskEMCALClusterize : public AliAnalysisTaskSE {
   // Centrality selection
   
   AliCentrality* GetCentrality()                                { return InputEvent()->GetCentrality() ; } //Look in AOD reader, different there
-  void          SetCentralityClass(TString name)                { fCentralityClass   = name            ; }
-  TString       GetCentralityClass()                      const { return fCentralityClass              ; }
-  Float_t       GetEventCentrality()                            { if(GetCentrality()) return GetCentrality()->GetCentralityPercentile(fCentralityClass) ;
+  void           SetCentralityClass(TString name)               { fCentralityClass   = name            ; }
+  TString        GetCentralityClass()                     const { return fCentralityClass              ; }
+  Float_t        GetEventCentrality()                           { if(GetCentrality()) return GetCentrality()->GetCentralityPercentile(fCentralityClass) ;
                                                                   else                return -1.       ; }
-  void          SetCentralityBin(Int_t min, Int_t max) //Set the centrality bin to select the event. If used, then need to get percentile
+  void           SetCentralityBin(Int_t min, Int_t max) //Set the centrality bin to select the event. If used, then need to get percentile
                                                                 { fCentralityBin[0]=min ; fCentralityBin[1]=max ; }
-  Float_t       GetCentralityBin(Int_t i)                 const { if(i < 0 || i > 1) return -1 ; 
+  Float_t        GetCentralityBin(Int_t i)                const { if(i < 0 || i > 1) return -1 ; 
                                                                   else               return fCentralityBin[i]   ; }
   
- private:
+  //MC label methods
+  
+  void           RemapMCLabelForAODs(Int_t &label);
+  void           SwitchOnRemapMCLabelForAODs()                  { fRemapMCLabelForAODs  = kTRUE   ; }
+  void           SwitchOffRemapMCLabelForAODs()                 { fRemapMCLabelForAODs  = kFALSE  ; }
+
+  void           SetClustersMCLabelFrom2SelectedLabels(AliEMCALRecPoint* recPoint, AliAODCaloCluster *clus) ;
+  void           SetClustersMCLabelFromOriginalClusters(AliAODCaloCluster * clus) ;
+  
+  void           SwitchOnUseClusterMCLabelForCell(Int_t opt = 2) { fSetCellMCLabelFromCluster = opt ; }
+  void           SwitchOffUseClusterMCLabelForCell()             { fSetCellMCLabelFromCluster = 0   ; }
+
+private:
     
   virtual void   FillCaloClusterInEvent();
   
   virtual void   RecPoints2Clusters();
   
+  virtual void   ResetArrays();
   
   AliVEvent             *fEvent;                   // Event 
   
@@ -173,17 +197,23 @@ class AliAnalysisTaskEMCALClusterize : public AliAnalysisTaskSE {
   AliEMCALRecoUtils*     fRecoUtils;               // Access to factorized reconstruction algorithms
   TString                fConfigName;              // Name of analysis configuration file
   
-  Int_t                  fCellLabels[12672];       // Array with MC label to be passed to digit. 
+  
+  Int_t                  fOrgClusterCellId[12672]; // Array ID of cluster to wich the cell belongs in unmodified clusters
+  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
   Bool_t                 fSelectCell;              // Reject cells from cluster if energy is too low and recalculate position/energy and other
   Float_t                fSelectCellMinE;          // Min energy cell threshold, after unfolding
   Float_t                fSelectCellMinFrac;       // Min fraction of cell energy after unfolding cut
+  Bool_t                 fRejectBelowThreshold;    // split (false-default) or reject (true) cell energy below threshold after UF
   Bool_t                 fRemoveLEDEvents;         // Remove LED events, use only for LHC11a 
   Bool_t                 fRemoveExoticEvents;      // Remove exotic events
   
@@ -203,10 +233,19 @@ class AliAnalysisTaskEMCALClusterize : public AliAnalysisTaskSE {
   Float_t                fEMCALEnergyCut;         //  At least an EMCAL cluster with this energy in the event
   Int_t                  fEMCALNcellsCut;         //  At least an EMCAL cluster with fNCellsCut cells over fEnergyCut
 
+  Int_t                  fSetCellMCLabelFromCluster; // Use cluster MC label as cell label:
+                                                     // 0 - get the MC label stored in cells
+                                                     // 1 - from old way, select 2 most likely labels
+                                                     // 2 - from new way, get the original clusters, add all the MC labels (useful for any reclusterization with output V1 clusters)
+  Bool_t                 fRemapMCLabelForAODs ;      // Remap AOD cells MC label
+
+  
+  Bool_t                 fInputFromFilter ;          // Get the input from AODs from the filter 
+  
   AliAnalysisTaskEMCALClusterize(           const AliAnalysisTaskEMCALClusterize&); // not implemented
   AliAnalysisTaskEMCALClusterize& operator=(const AliAnalysisTaskEMCALClusterize&); // not implemented
 
-  ClassDef(AliAnalysisTaskEMCALClusterize, 23);
+  ClassDef(AliAnalysisTaskEMCALClusterize, 28);
 
 };