ROOT logo
#ifndef ALIANAEMCALTRIGGERCLUSTERS_H
#define ALIANAEMCALTRIGGERCLUSTERS_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice     */

//_________________________________________________________________________
//
// Class for study of EMCAL trigger behaviour
//
// -- Author: Gustavo Conesa (CNRS-LPSC-Grenoble)
//

// --- ROOT system ---
class TH2F ;
class TH1F;
class TString ;
class TObjString;
class TList ;

// --- ANALYSIS system ---
#include "AliAnaCaloTrackCorrBaseClass.h"

class AliAnaEMCALTriggerClusters : public AliAnaCaloTrackCorrBaseClass {

 public: 
           AliAnaEMCALTriggerClusters() ;     // default ctor
  virtual ~AliAnaEMCALTriggerClusters() { ; } // virtual dtor
	
  //---------------------------------------
  // General analysis frame methods
  //---------------------------------------
  
  TObjString * GetAnalysisCuts();
  
  TList      * GetCreateOutputObjects();
  
  void         Init();

  void         InitParameters();

  void         MakeAnalysisFillHistograms() ; 
  
  void         Print(const Option_t * opt)const;
  
  void         FillBadTriggerEventHistogram();
  
  void         FillRawClusterTriggerBCHistograms(Int_t idcalo,       Float_t ecluster,   Float_t tofcluster,
                                                 Float_t etacluster, Float_t phicluster);
  
  // Analysis parameters setters getters

  void         SetNCellCut(Int_t n)                { fNCellsCut = n               ; }
  Double_t     GetNCellCut()                 const { return fNCellsCut            ; }
  
  void         SetM02(Float_t min, Float_t max)    { fMinM02 = min; fMaxM02 = max ; }
  Float_t      GetM02Min()                   const { return fMinM02               ; }
  Float_t      GetM02Max()                   const { return fMaxM02               ; }
  
  Bool_t       IsTrackMatchRejectionOn()     const { return fRejectTrackMatch     ; }
  void         SwitchOnTrackMatchRejection()       { fRejectTrackMatch = kTRUE    ; }
  void         SwitchOffTrackMatchRejection()      { fRejectTrackMatch = kFALSE   ; }
  
  private:
 
  Bool_t  fRejectTrackMatch ;                         // Reject clusters which have an associated TPC track
  Int_t   fNCellsCut ;                                // Accept for the analysis clusters with more than fNCellsCut cells
  Float_t fMinM02  ;                                  // Remove clusters with large M02
  Float_t fMaxM02  ;                                  // Remove clusters with small M02
  
  TLorentzVector fMomentum ;                          //! Cluster momentum
  
  // Histograms
  
  TH1F * fhE               ;                          //! Raw clusters E
  TH1F * fhESelected       ;                          //! Selected custers E
  TH2F * fhEtaPhi          ;                          //! Raw Pseudorapidity vs Phi of clusters for E > 0.5
  TH2F * fhEtaPhiSelected  ;                          //! Pseudorapidity vs Phi of clusters for E > 0.5
  TH2F * fhEtaPhiEMCALBC0  ;                          //! Pseudorapidity vs Phi of clusters for E > 0.5
  TH2F * fhEtaPhiEMCALBC1  ;                          //! Pseudorapidity vs Phi of clusters for E > 0.5
  TH2F * fhEtaPhiEMCALBCN  ;                          //! Pseudorapidity vs Phi of clusters for E > 0.5

  TH2F * fhEtaPhiTriggerEMCALBC[11] ;                 //! Pseudorapidity vs Phi of clusters for E > 2
  TH2F * fhTimeTriggerEMCALBC  [11] ;                 //! Time distribution of clusters, when trigger is in a given BC
  TH2F * fhTimeTriggerEMCALBCPileUpSPD[11];           //! Time distribution of clusters, when trigger is in a given BC, tagged as pile-up SPD

  TH2F * fhEtaPhiTriggerEMCALBCUM[11] ;               //! Pseudorapidity vs Phi of clusters for E > 2, not matched to trigger
  TH2F * fhTimeTriggerEMCALBCUM  [11] ;               //! Time distribution of clusters, when trigger is in a given BC, not matched to trigger
  
  TH2F * fhEtaPhiTriggerEMCALBCCluster  [11] ;        //! Pseudorapidity vs Phi of trigger clusters
  TH2F * fhTimeTriggerEMCALBCCluster ;                //! Time distribution of clusters, when trigger cluster is in a given BC
  TH2F * fhEtaPhiTriggerEMCALBCUMCluster[11] ;        //! Pseudorapidity vs Phi of highest E cluster  in event, not matched to trigger
  TH2F * fhTimeTriggerEMCALBCUMCluster ;              //! Time distribution of highest energy cluster in event, when trigger is in a given BC, not
  
  TH2F * fhEtaPhiTriggerEMCALBCClusterOverTh     ;    //! Pseudorapidity vs Phi of trigger clusters, over nominal threshold
  TH2F * fhEtaPhiTriggerEMCALBCUMClusterOverTh   ;    //! Pseudorapidity vs Phi of highest E cluster  in event, not matched to trigger, over nominal threshold
  TH2F * fhEtaPhiTriggerEMCALBCClusterBelowTh1   ;    //! Pseudorapidity vs Phi of trigger clusters, 1 GeV below nominal threshold
  TH2F * fhEtaPhiTriggerEMCALBCUMClusterBelowTh1 ;    //! Pseudorapidity vs Phi of highest E cluster  in event, not matched to trigger, 2 GeV below nominal threshold
  TH2F * fhEtaPhiTriggerEMCALBCClusterBelowTh2   ;    //! Pseudorapidity vs Phi of trigger clusters, 1 GeV below nominal threshold
  TH2F * fhEtaPhiTriggerEMCALBCUMClusterBelowTh2 ;    //! Pseudorapidity vs Phi of highest E cluster  in event, not matched to trigger, 2 GeV below nominal threshold

  TH2F * fhEtaPhiTriggerEMCALBCExotic            ;    //! Pseudorapidity vs Phi of trigger exotic clusters
  TH2F * fhTimeTriggerEMCALBCExotic              ;    //! Time distribution of clusters, when trigger exotic cluster
  TH2F * fhEtaPhiTriggerEMCALBCUMExotic          ;    //! Pseudorapidity vs Phi of highest E exotic cluster  in event, not matched to trigger
  TH2F * fhTimeTriggerEMCALBCUMExotic            ;    //! Time distribution of highest energy exotic cluster in event, not matched to trigger

  TH2F * fhEtaPhiTriggerEMCALBCBad               ;    //! Pseudorapidity vs Phi of trigger exotic clusters
  TH2F * fhTimeTriggerEMCALBCBad                 ;    //! Time distribution of clusters, when trigger exotic
  TH2F * fhEtaPhiTriggerEMCALBCUMBad             ;    //! Pseudorapidity vs Phi of highest E exotic cluster  in event, not matched to trigger
  TH2F * fhTimeTriggerEMCALBCUMBad               ;    //! Time distribution of highest energy exotic cluster in event, not matched to trigger
  
  TH2F * fhEtaPhiTriggerEMCALBCBadExotic         ;    //! Pseudorapidity vs Phi of trigger exotic and bad clusters
  TH2F * fhTimeTriggerEMCALBCBadExotic           ;    //! Time distribution of clusters, when trigger exotic and bad cluster
  TH2F * fhEtaPhiTriggerEMCALBCUMBadExotic       ;    //! Pseudorapidity vs Phi of highest E exotic cluster  in event, not matched to trigger
  TH2F * fhTimeTriggerEMCALBCUMBadExotic         ;    //! Time distribution of highest energy exotic cluster in event, not matched to trigger
  
  TH2F * fhEtaPhiTriggerEMCALBCExoticCluster     ;    //! Pseudorapidity vs Phi of trigger exotic clusters
  TH2F * fhTimeTriggerEMCALBCExoticCluster       ;    //! Time distribution of clusters, when trigger exotic cluster
  TH2F * fhEtaPhiTriggerEMCALBCUMExoticCluster   ;    //! Pseudorapidity vs Phi of highest E exotic cluster  in event, not matched to trigger
  TH2F * fhTimeTriggerEMCALBCUMExoticCluster     ;    //! Time distribution of highest energy exotic cluster in event, not matched to trigger
  
  TH2F * fhEtaPhiTriggerEMCALBCBadCluster        ;    //! Pseudorapidity vs Phi of trigger bad clusters
  TH2F * fhTimeTriggerEMCALBCBadCluster          ;    //! Time distribution of clusters, when trigger bad cluster is in a given BC
  TH2F * fhEtaPhiTriggerEMCALBCUMBadCluster      ;    //! Pseudorapidity vs Phi of highest E bad cluster  in event, not matched to trigger
  TH2F * fhTimeTriggerEMCALBCUMBadCluster        ;    //! Time distribution of highest energy bad cluster in event, when trigger is in a given BC, not

  TH2F * fhEtaPhiTriggerEMCALBCBadExoticCluster  ;    //! Pseudorapidity vs Phi of trigger exotic and bad clusters
  TH2F * fhTimeTriggerEMCALBCBadExoticCluster    ;    //! Time distribution of clusters, when trigger exotic and bad cluster
  TH2F * fhEtaPhiTriggerEMCALBCUMBadExoticCluster;    //! Pseudorapidity vs Phi of highest E exotic and bad cluster in event, not matched to trigger
  TH2F * fhTimeTriggerEMCALBCUMBadExoticCluster  ;    //! Time distribution of highest energy exotic and bad cluster in event, not matched to trigger
  
  TH2F * fhTimeTriggerEMCALBCBadMaxCell          ;    //! Time distribution of trigger clusters, when trigger bad max cell
  TH2F * fhTimeTriggerEMCALBCUMBadMaxCell        ;    //! Time distribution of highest energy bad max cell cluster in event, when trigger is not found
  TH2F * fhTimeTriggerEMCALBCBadMaxCellExotic    ;    //! Time distribution of trigger clusters, when trigger exotic cluster with bad max cell
  TH2F * fhTimeTriggerEMCALBCUMBadMaxCellExotic  ;    //! Time distribution of highest energy exotic with bad max cell cluster in event, when trigger is not found
  
  TH2F * fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster ;  //! Pseudorapidity vs Phi of highest E bad cluster  in event, not matched to trigger, rematched open time trigger
  TH2F * fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster   ;  //! Time distribution of highest energy bad max cell cluster in event, when trigger is not found, rematched open time trigger
  TH2F * fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster; //! Pseudorapidity vs Phi of highest E bad cluster  in event, not matched to trigger, rematched with neigbour patchs
  TH2F * fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster ;  //! Time distribution of highest energy bad max cell cluster in event, when trigger is not found, rematched with neigbour patchs
  TH2F * fhEtaPhiTriggerEMCALBCUMReMatchBothCluster;  //! Pseudorapidity vs Phi of highest E bad cluster  in event, not matched to trigger, rematched open both
  TH2F * fhTimeTriggerEMCALBCUMReMatchBothCluster ;   //! Time distribution of highest energy bad max cell cluster in event, when trigger is not found, rematched open both
  
  TH2F * fhTimeTriggerEMCALBC0UMReMatchOpenTime   ;   //! Time distribution of clusters, not matched to trigger, rematched open time trigger
  TH2F * fhTimeTriggerEMCALBC0UMReMatchCheckNeigh ;   //! Time distribution of clusters, not matched to trigger, rematched with neighbour patchs
  TH2F * fhTimeTriggerEMCALBC0UMReMatchBoth       ;   //! Time distribution of clusters, not matched to trigger, rematched open both
  
  TH2F * fhEtaPhiNoTrigger ;                          //! Pseudorapidity vs Phi of highest E exotic cluster  in event, no trigger at all
  TH2F * fhTimeNoTrigger   ;                          //! Time distribution of highest energy exotic cluster in event, no trigger at all
  
  TH2F * fhEtaPhiSelectedEMCALBC0  ;                  //! Pseudorapidity vs Phi of identified  photon for E > 0.5
  TH2F * fhEtaPhiSelectedEMCALBC1  ;                  //! Pseudorapidity vs Phi of identified  photon for E > 0.5
  TH2F * fhEtaPhiSelectedEMCALBCN  ;                  //! Pseudorapidity vs Phi of identified  photon for E > 0.5
  TH2F * fhEtaPhiSelectedTriggerEMCALBC[11];          //! Pseudorapidity vs Phi of photons for E > 0.5
  TH2F * fhTimeSelectedTriggerEMCALBC  [11];          //! Time distribution of photons, when trigger is in a given BC
  TH2F * fhTimeSelectedTriggerEMCALBCPileUpSPD[11] ;  //! Time distribution of photons, when trigger is in a given BC, tagged as pile-up SPD
  TH2F * fhEtaPhiSelectedTriggerEMCALBCUM[11];        //! Pseudorapidity vs Phi of photons for E > 2, not matched to trigger
  TH2F * fhTimeSelectedTriggerEMCALBCUM  [11];        //! Time distribution of photons, when trigger is in a given BC, not matched to trigger

  TH2F * fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime   ;  //! Time distribution of photons in event, when trigger is not found, rematched open time trigger
  TH2F * fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh ;  //! Time distribution of photons in event, when trigger is not found, rematched with neigbour patchs
  TH2F * fhTimeSelectedTriggerEMCALBC0UMReMatchBoth       ;  //! Time distribution of photons in event, when trigger is not found, rematched open both
  
  AliAnaEMCALTriggerClusters(              const AliAnaEMCALTriggerClusters & g) ; // cpy ctor
  AliAnaEMCALTriggerClusters & operator = (const AliAnaEMCALTriggerClusters & g) ; // cpy assignment
  
  ClassDef(AliAnaEMCALTriggerClusters,2)

} ;
 
#endif//ALIANAEMCALTRIGGERCLUSTERS_H



 AliAnaEMCALTriggerClusters.h:1
 AliAnaEMCALTriggerClusters.h:2
 AliAnaEMCALTriggerClusters.h:3
 AliAnaEMCALTriggerClusters.h:4
 AliAnaEMCALTriggerClusters.h:5
 AliAnaEMCALTriggerClusters.h:6
 AliAnaEMCALTriggerClusters.h:7
 AliAnaEMCALTriggerClusters.h:8
 AliAnaEMCALTriggerClusters.h:9
 AliAnaEMCALTriggerClusters.h:10
 AliAnaEMCALTriggerClusters.h:11
 AliAnaEMCALTriggerClusters.h:12
 AliAnaEMCALTriggerClusters.h:13
 AliAnaEMCALTriggerClusters.h:14
 AliAnaEMCALTriggerClusters.h:15
 AliAnaEMCALTriggerClusters.h:16
 AliAnaEMCALTriggerClusters.h:17
 AliAnaEMCALTriggerClusters.h:18
 AliAnaEMCALTriggerClusters.h:19
 AliAnaEMCALTriggerClusters.h:20
 AliAnaEMCALTriggerClusters.h:21
 AliAnaEMCALTriggerClusters.h:22
 AliAnaEMCALTriggerClusters.h:23
 AliAnaEMCALTriggerClusters.h:24
 AliAnaEMCALTriggerClusters.h:25
 AliAnaEMCALTriggerClusters.h:26
 AliAnaEMCALTriggerClusters.h:27
 AliAnaEMCALTriggerClusters.h:28
 AliAnaEMCALTriggerClusters.h:29
 AliAnaEMCALTriggerClusters.h:30
 AliAnaEMCALTriggerClusters.h:31
 AliAnaEMCALTriggerClusters.h:32
 AliAnaEMCALTriggerClusters.h:33
 AliAnaEMCALTriggerClusters.h:34
 AliAnaEMCALTriggerClusters.h:35
 AliAnaEMCALTriggerClusters.h:36
 AliAnaEMCALTriggerClusters.h:37
 AliAnaEMCALTriggerClusters.h:38
 AliAnaEMCALTriggerClusters.h:39
 AliAnaEMCALTriggerClusters.h:40
 AliAnaEMCALTriggerClusters.h:41
 AliAnaEMCALTriggerClusters.h:42
 AliAnaEMCALTriggerClusters.h:43
 AliAnaEMCALTriggerClusters.h:44
 AliAnaEMCALTriggerClusters.h:45
 AliAnaEMCALTriggerClusters.h:46
 AliAnaEMCALTriggerClusters.h:47
 AliAnaEMCALTriggerClusters.h:48
 AliAnaEMCALTriggerClusters.h:49
 AliAnaEMCALTriggerClusters.h:50
 AliAnaEMCALTriggerClusters.h:51
 AliAnaEMCALTriggerClusters.h:52
 AliAnaEMCALTriggerClusters.h:53
 AliAnaEMCALTriggerClusters.h:54
 AliAnaEMCALTriggerClusters.h:55
 AliAnaEMCALTriggerClusters.h:56
 AliAnaEMCALTriggerClusters.h:57
 AliAnaEMCALTriggerClusters.h:58
 AliAnaEMCALTriggerClusters.h:59
 AliAnaEMCALTriggerClusters.h:60
 AliAnaEMCALTriggerClusters.h:61
 AliAnaEMCALTriggerClusters.h:62
 AliAnaEMCALTriggerClusters.h:63
 AliAnaEMCALTriggerClusters.h:64
 AliAnaEMCALTriggerClusters.h:65
 AliAnaEMCALTriggerClusters.h:66
 AliAnaEMCALTriggerClusters.h:67
 AliAnaEMCALTriggerClusters.h:68
 AliAnaEMCALTriggerClusters.h:69
 AliAnaEMCALTriggerClusters.h:70
 AliAnaEMCALTriggerClusters.h:71
 AliAnaEMCALTriggerClusters.h:72
 AliAnaEMCALTriggerClusters.h:73
 AliAnaEMCALTriggerClusters.h:74
 AliAnaEMCALTriggerClusters.h:75
 AliAnaEMCALTriggerClusters.h:76
 AliAnaEMCALTriggerClusters.h:77
 AliAnaEMCALTriggerClusters.h:78
 AliAnaEMCALTriggerClusters.h:79
 AliAnaEMCALTriggerClusters.h:80
 AliAnaEMCALTriggerClusters.h:81
 AliAnaEMCALTriggerClusters.h:82
 AliAnaEMCALTriggerClusters.h:83
 AliAnaEMCALTriggerClusters.h:84
 AliAnaEMCALTriggerClusters.h:85
 AliAnaEMCALTriggerClusters.h:86
 AliAnaEMCALTriggerClusters.h:87
 AliAnaEMCALTriggerClusters.h:88
 AliAnaEMCALTriggerClusters.h:89
 AliAnaEMCALTriggerClusters.h:90
 AliAnaEMCALTriggerClusters.h:91
 AliAnaEMCALTriggerClusters.h:92
 AliAnaEMCALTriggerClusters.h:93
 AliAnaEMCALTriggerClusters.h:94
 AliAnaEMCALTriggerClusters.h:95
 AliAnaEMCALTriggerClusters.h:96
 AliAnaEMCALTriggerClusters.h:97
 AliAnaEMCALTriggerClusters.h:98
 AliAnaEMCALTriggerClusters.h:99
 AliAnaEMCALTriggerClusters.h:100
 AliAnaEMCALTriggerClusters.h:101
 AliAnaEMCALTriggerClusters.h:102
 AliAnaEMCALTriggerClusters.h:103
 AliAnaEMCALTriggerClusters.h:104
 AliAnaEMCALTriggerClusters.h:105
 AliAnaEMCALTriggerClusters.h:106
 AliAnaEMCALTriggerClusters.h:107
 AliAnaEMCALTriggerClusters.h:108
 AliAnaEMCALTriggerClusters.h:109
 AliAnaEMCALTriggerClusters.h:110
 AliAnaEMCALTriggerClusters.h:111
 AliAnaEMCALTriggerClusters.h:112
 AliAnaEMCALTriggerClusters.h:113
 AliAnaEMCALTriggerClusters.h:114
 AliAnaEMCALTriggerClusters.h:115
 AliAnaEMCALTriggerClusters.h:116
 AliAnaEMCALTriggerClusters.h:117
 AliAnaEMCALTriggerClusters.h:118
 AliAnaEMCALTriggerClusters.h:119
 AliAnaEMCALTriggerClusters.h:120
 AliAnaEMCALTriggerClusters.h:121
 AliAnaEMCALTriggerClusters.h:122
 AliAnaEMCALTriggerClusters.h:123
 AliAnaEMCALTriggerClusters.h:124
 AliAnaEMCALTriggerClusters.h:125
 AliAnaEMCALTriggerClusters.h:126
 AliAnaEMCALTriggerClusters.h:127
 AliAnaEMCALTriggerClusters.h:128
 AliAnaEMCALTriggerClusters.h:129
 AliAnaEMCALTriggerClusters.h:130
 AliAnaEMCALTriggerClusters.h:131
 AliAnaEMCALTriggerClusters.h:132
 AliAnaEMCALTriggerClusters.h:133
 AliAnaEMCALTriggerClusters.h:134
 AliAnaEMCALTriggerClusters.h:135
 AliAnaEMCALTriggerClusters.h:136
 AliAnaEMCALTriggerClusters.h:137
 AliAnaEMCALTriggerClusters.h:138
 AliAnaEMCALTriggerClusters.h:139
 AliAnaEMCALTriggerClusters.h:140
 AliAnaEMCALTriggerClusters.h:141
 AliAnaEMCALTriggerClusters.h:142
 AliAnaEMCALTriggerClusters.h:143
 AliAnaEMCALTriggerClusters.h:144
 AliAnaEMCALTriggerClusters.h:145
 AliAnaEMCALTriggerClusters.h:146
 AliAnaEMCALTriggerClusters.h:147
 AliAnaEMCALTriggerClusters.h:148
 AliAnaEMCALTriggerClusters.h:149
 AliAnaEMCALTriggerClusters.h:150
 AliAnaEMCALTriggerClusters.h:151
 AliAnaEMCALTriggerClusters.h:152
 AliAnaEMCALTriggerClusters.h:153
 AliAnaEMCALTriggerClusters.h:154
 AliAnaEMCALTriggerClusters.h:155
 AliAnaEMCALTriggerClusters.h:156
 AliAnaEMCALTriggerClusters.h:157
 AliAnaEMCALTriggerClusters.h:158
 AliAnaEMCALTriggerClusters.h:159
 AliAnaEMCALTriggerClusters.h:160
 AliAnaEMCALTriggerClusters.h:161
 AliAnaEMCALTriggerClusters.h:162
 AliAnaEMCALTriggerClusters.h:163
 AliAnaEMCALTriggerClusters.h:164
 AliAnaEMCALTriggerClusters.h:165
 AliAnaEMCALTriggerClusters.h:166
 AliAnaEMCALTriggerClusters.h:167
 AliAnaEMCALTriggerClusters.h:168
 AliAnaEMCALTriggerClusters.h:169
 AliAnaEMCALTriggerClusters.h:170
 AliAnaEMCALTriggerClusters.h:171
 AliAnaEMCALTriggerClusters.h:172
 AliAnaEMCALTriggerClusters.h:173