]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGGA/EMCALTasks/AliAnalysisTaskEMCALTriggerQA.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGGA / EMCALTasks / AliAnalysisTaskEMCALTriggerQA.h
index af6b110744cd34224863b29880ad877bd051ea4f..c3dee985142557e72b149d1fdf2c2d65507aeb4d 100644 (file)
@@ -1,7 +1,13 @@
 #ifndef ALIANALYSISTASKEMCALTRIGGERQA_H
 #define ALIANALYSISTASKEMCALTRIGGERQA_H
 
-// $Id$
+//------------------------------------------------------------------------//
+//  Fill histograms with basic QA information for EMCAL offline trigger   //
+//  Author: Nicolas Arbor (LPSC-Grenoble), Rachid Guernane (LPSC-Grenoble)//
+//          Gustavo Conesa Balbastre  (LPSC-Grenoble)                     //
+//                                                                        //
+//  $Id$ //
+//------------------------------------------------------------------------//
 
 //--- Root ---
 class TList;
@@ -19,51 +25,165 @@ class AliEMCALRecoUtils;
 class AliAnalysisTaskEMCALTriggerQA : public AliAnalysisTaskSE 
 {
 public:
-  AliAnalysisTaskEMCALTriggerQA();                   // default constructor
   
   AliAnalysisTaskEMCALTriggerQA(const char *name);   // named constructor
   
   virtual ~AliAnalysisTaskEMCALTriggerQA() { ; }     // destructor
   
+  void   ClusterAnalysis();
   
-  void   UserCreateOutputObjects();    // you should create your output objects in that function if possible
+  void   FillCellMaps();
   
-  void   UserExec(Option_t *option);   // function called for each event
+  void   FillTriggerPatchMaps(TString triggerclasses);
   
-  void   SetGeometryName(TString name)  { fGeoName = name ; } 
-    
-  AliEMCALRecoUtils* GetRecoUtils()     { return fRecoUtils ; }
+  void   FillClusterHistograms(Int_t triggerNumber, Bool_t maxCluster,
+                               Float_t e,Float_t eta,Float_t phi,
+                               Float_t ietamax,Float_t iphimax,
+                               Float_t centrality, Float_t v0AC);
   
-  //Histogram setters
+  void   FillCorrelationHistograms();
+  
+  void   FillEventCounterHistogram();
+  
+  void   FillL1GammaPatchHistograms();
+  
+  void   FillL1JetPatchHistograms();
+  
+  void   FillMapHistograms();
+  
+  void   FillV0Histograms();
+  
+  void   Init() ;
+
+  void   InitHistogramArrays() ;
+
+  void   InitCellPatchMaps();
+  
+  void   LocalInit()                     { Init()                       ; }
+
+  void   UserCreateOutputObjects();    
+  
+  void   UserExec(Option_t *option);   
+  
+  AliEMCALRecoUtils* GetRecoUtils()      { if(!fRecoUtils) fRecoUtils = new AliEMCALRecoUtils ;
+                                           return fRecoUtils            ; }
+  
+  void   SetEtaPhiEnMin(Float_t en)      { fEtaPhiEnMin       = en      ; }
+
+  void   SetTriggerEventBit(TString list) ;
+  
+  // OADB and geometry settings
+  
+  void   InitGeometry();
+  
+  void   SetGeometryName(TString name)   { fGeoName           = name    ; }   
+  void   SetEventTriggerL1Bit(Int_t ega, Int_t eje)
+                                         { fBitEGA   = ega ; fBitEJE = eje; }
+
+  void   AccessOADB() ;
+  
+  void   SwitchOnEMCALOADB()             { fAccessOADB        = kTRUE   ; }
+  void   SwitchOffEMCALOADB()            { fAccessOADB        = kFALSE  ; }
+
+  void   SwitchOnMCData()                { fMCData            = kTRUE   ; }
+  void   SwitchOffMCData()               { fMCData            = kFALSE  ; }
+
+  void   SwitchOnV0SignalHistograms()    { fFillV0SigHisto    = kTRUE   ; }
+  void   SwitchOffV0SignalHistograms()   { fFillV0SigHisto    = kFALSE  ; }
+  
+  void   SwitchOnClusterAcceptanceHistograms()  { fFillClusAcceptHisto = kTRUE   ; }
+  void   SwitchOffClusterAcceptanceHistograms() { fFillClusAcceptHisto = kFALSE  ; }
   
+  void   SetOADBFilePath(TString path)   { fOADBFilePath      = path    ; }
+  
+  //Histogram setters
+
   void   SetTRUTotalSignalHistogramsRange(Int_t nbins,  Float_t max) { fNBinsTRUSignal   = nbins; fMaxTRUSignal   = max ; }
   void   SetSTUTotalSignalHistogramsRange(Int_t nbins,  Float_t max) { fNBinsSTUSignal   = nbins; fMaxSTUSignal   = max ; }
   void   SetV0TotalSignalHistogramsRange (Int_t nbins,  Float_t max) { fNBinsV0Signal    = nbins; fMaxV0Signal    = max ; }
   void   SetSTUFEERatioHistogramsRange   (Int_t nbins,  Float_t max) { fNBinsSTUFEERatio = nbins; fMaxSTUFEERatio = max ; }
   void   SetSTUTRURatioHistogramsRange   (Int_t nbins,  Float_t max) { fNBinsSTUTRURatio = nbins; fMaxSTUFEERatio = max ; }
   void   SetClusterEHistogramsRange      (Int_t nbins,  Float_t max) { fNBinsClusterE    = nbins; fMaxClusterE    = max ; }
+  void   SetClusterEtaHistogramsRange    (Int_t nbins,  Float_t max) { fNBinsClusterEta  = nbins; fMaxClusterEta  = max ; }
+  void   SetClusterPhiHistogramsRange    (Int_t nbins,  Float_t max, Float_t min)
+  { fNBinsClusterPhi  = nbins; fMaxClusterPhi  = max ;  fMinClusterPhi = min ; }
   
 private:
   TList            *fOutputList;      //! Output list
   
   AliEMCALRecoUtils *fRecoUtils;      //  RecoUtils
 
+  Bool_t            fGeoSet  ;        //  Geometry already set
   AliEMCALGeometry *fGeometry;        //  Access to EMCAL geometry utils
   TString           fGeoName;         //  Name of geometry used
   
+  Bool_t            fOADBSet ;        //  AODB parameters already set
+  Bool_t            fAccessOADB ;     //  Get calibration from OADB for EMCAL
+  TString           fOADBFilePath ;   //  Default path $ALICE_ROOT/OADB/EMCAL, if needed change
+  
+  Int_t             fBitEGA;          //  fBitEGA
+  Int_t             fBitEJE;          //  fBitEJE
+  
+  Float_t           fEtaPhiEnMin;     //  Min energy for Eta/Phi histograms   
+  
+  Int_t             fSTUTotal;        // Sum of STU time sums
+  Float_t           fTRUTotal;        // Sum of TRU amplitudes
+  Float_t           fV0Trigger;       // V0 signal from trigger
+  Float_t           fV0A;             // V0 A signal
+  Float_t           fV0C;             // V0 C signal
+  
+  Bool_t            fFillV0SigHisto;  // V0 signal creation and fill
+  Bool_t            fFillClusAcceptHisto; // Fill eta/phi distributions
+  Bool_t            fMCData;          //  Simulation On/Off
+
+  // Event by event trigger recognition bit
+  Bool_t            fEventMB   ;      // Bit for MB events
+  Bool_t            fEventL0   ;      // Bit for L0 events
+  Bool_t            fEventL1G  ;      // Bit for L1 Gamma 1 events
+  Bool_t            fEventL1G2 ;      // Bit for L1 Gamma 2 events
+  Bool_t            fEventL1J  ;      // Bit for L1 Jet 1 events
+  Bool_t            fEventL1J2 ;      // Bit for L1 JEt 2 events
+  Bool_t            fEventCen  ;      // Bit for Central events
+  Bool_t            fEventSem  ;      // Bit for Semi Central events
+  
+  // Histograms
+  
   TH1F             *fhNEvents;        //! Number of selected events
   TH2F             *fhFORAmp;         //! FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column
   TH2F             *fhFORAmpL1G;      //! FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column, with L1 Gamma trigger event
+  TH2F             *fhFORAmpL1G2;     //! FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column, with L1 Gamma2 trigger event
   TH2F             *fhFORAmpL1J;      //! FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column, with L1 Jet trigger event
+  TH2F             *fhFORAmpL1J2;     //! FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column, with L1 Jet2 trigger event
   TH2F             *fhL0Amp;          //! FALTRO signal per Row and Column for FOR involves L0 patch
   TH2F             *fhL0AmpL1G;       //! FALTRO signal per Row and Column for FOR involves L0 patch, with L1G trigger event
   TH2F             *fhL0AmpL1J;       //! FALTRO signal per Row and Column for FOR involves L0 patch, with L1J trigger event
   TH2F             *fhL1Amp;          //! STU signal per Row and Column for FOR involves L0 patch
   TH2F             *fhL1GAmp;         //! STU signal per Row and Column for FOR position of L1 Gamma patch (top-left)
+  TH2F             *fhL1G2Amp;        //! STU signal per Row and Column for FOR position of L1 Gamma2 patch (top-left)
   TH2F             *fhL1JAmp;         //! STU signal per Row and Column for FOR position of L1 Jet patch (top-left)
-  TH2F             *fhL0Patch;        //! FOR with L0 patch associated
-  TH2F             *fhL1GPatch;       //! FOR with L1 Gamma patch associated
+  TH2F             *fhL1J2Amp;        //! STU signal per Row and Column for FOR position of L1 Jet2 patch (top-left)
+  TH2F             *fhL1FOREnergy;    //! STU signal per Row and Column for FOR position vs FOR energy
+  
+  TH2F             *fhL0Patch;                //! FOR with L0 patch associated
+  TH2F             *fhL1GPatch;               //! FOR with L1 Gamma patch associated
+  TH2F             *fhL1G2Patch;              //! FOR with L1 Gamma patch associated
+  TH2F             *fhL1GPatchNotFake;        //! FOR with L1 Gamma patch associated but no energy in the related cells
+  TH2F             *fhL1GPatchFake;           //! FOR with L1 Gamma patch associated
+  TH2F             *fhL1GPatchNotAllFake;     //! FOR with at least 1 L1 Gamma patch associated that has energy in the related celles : not a fake event
+  TH2F             *fhL1GPatchAllFake;        //! FOR without any L1 Gamma patch associated with energy in the related cells: fake patch
+  TH2F             *fhL1GPatchNotAllFakeMax;  //! FOR with at least one L1 Gamma patch associated with energy in the related cell, maximal energy patch : not fake events
+  TH2F             *fhL1GPatchAllFakeMax;     //! FOR without any L1 Gamma patch associated with energy in the related cell, maximal energy patch : fake events
+  TH1F             *fhL1GPatchNotAllFakeMaxE; //! Energy distrib of FOR for non fake events, patch of maximal energy
+  TH1F             *fhL1GPatchAllFakeMaxE;    //! Energy distrib FOR for fake events, patch of maximal energy
+  TH1F             *fhL1GPatchNotAllFakeE;       //! Energy distrib of FOR for non fake events, all patch energy
+  TH1F             *fhL1GPatchAllFakeE;       //! Energy distrib of FOR forfake events, all patch energy
+  TH1F             *fhL1GPatchFakeE;          //! Energy distrib of FOR for fake events, all patch energy
+  TH1F             *fhL1GPatchNotFakeE;       //! Energy distrib of FOR for non fake events, all patch energy
+  TH2F             *fhNPatchFake;             //! number of fake patchs per event vs. if all were fakes or not
+  TH2F             *fhNPatchNotFake;          //! number of non fake patchs per events vs. if all were fakes or not
+  
   TH2F             *fhL1JPatch;       //! FOR with L1 Jet patch associated
+  TH2F             *fhL1J2Patch;      //! FOR with L1 Jet patch associated
   TH2F             *fhFEESTU;         //! Correlation FEE vs STU
   TH2F             *fhTRUSTU;         //! Correlation TRU vs STU
   TH2I             *fhV0STU;          //! Total signal STU vs V0C+V0S
@@ -73,135 +193,53 @@ private:
   TProfile2D       *fhFORMeanAmp;     //! Mean FastOR(FEE) signal per Row and Column
   TProfile2D       *fhL0MeanAmp;      //! Mean FastOR(TRU) signal per Row and Column
   TProfile2D       *fhL1MeanAmp;      //! Mean FastOR(STU) signal per Row and Column
-  TH1F             *fhV0MB;           //! V0 distribution for MB triggered event
-  TH1F             *fhV0L1G;          //! V0 distribution for L1G triggered event
-  TH1F             *fhV0L1J;          //! V0 distribution for L1J triggered event
   TH2F             *fhL1GPatchMax;    //! FOR of max. amplitude patch with L1 Gamma patch associated
+  TH2F             *fhL1G2PatchMax;   //! FOR of max. amplitude patch with L1 Gamma patch associated
   TH2F             *fhL1JPatchMax;    //! FOR of max. amplitude patch with L1 Jet patch associated  
+  TH2F             *fhL1J2PatchMax;   //! FOR of max. amplitude patch with L1 Jet patch associated
   
   // Cluster vs trigger histograms
+  enum triggerType{ kMBTrig                = 0,  kL0Trig            = 1,
+                    kL1GammaTrig           = 2,  kL1GammaTrig2      = 3,
+                    kL1JetTrig             = 4,  kL1JetTrig2        = 5,
+                    kL1GammaOnlyTrig       = 6,  kL1JetOnlyTrig     = 7,
+                    kL1Gamma2OnlyGammaTrig = 8,  kL1Jet2OnlyJetTrig = 9,
+                    kCentralTrig           = 10, kSemiCentralTrig   = 11 };
   
-  TH1F             *fhClusMB;         //! Clusters distribution for MB trigger
-  TH1F             *fhClusMBPure;     //! Clusters distribution for MB trigger
-  TH1F             *fhClusL0;         //! Clusters distribution for L0 trigger 
-  TH1F             *fhClusL1G;        //! Clusters distribution for L1G trigger
-  TH1F             *fhClusL1J;        //! Clusters distribution for L1J trigger
-  TH1F             *fhClusL1GOnly;    //! Clusters distribution for L1G trigger and not L1J
-  TH1F             *fhClusL1JOnly;    //! Clusters distribution for L1J trigger and not L1G
-  TH1F             *fhClusMaxMB;      //! Maximum E Cluster per event distribution for MB trigger
-  TH1F             *fhClusMaxMBPure;  //! Maximum E Cluster per event distribution for MB trigger
-  TH1F             *fhClusMaxL0;      //! Maximum E Cluster per event distribution for L0 trigger      
-  TH1F             *fhClusMaxL1G;     //! Maximum E Cluster per event distribution for L1G trigger
-  TH1F             *fhClusMaxL1J;     //! Maximum E Cluster per event distribution for L1J trigger
-  TH1F             *fhClusMaxL1GOnly; //! Maximum E Cluster per event distribution for L1G trigger and not L1J
-  TH1F             *fhClusMaxL1JOnly; //! Maximum E Cluster per event distribution for L1J trigger and not L1G
-
-  TH2F             *fhClusCenMB;            //! Clusters Centrality vs E distribution for MB trigger
-  TH2F             *fhClusCenL0;            //! Clusters Centrality vs E distribution for L0 trigger   
-  TH2F             *fhClusCenL1G;           //! Clusters Centrality vs E distribution for L1G trigger
-  TH2F             *fhClusCenL1J;           //! Clusters Centrality vs E distribution for L1J trigger
-  TH2F             *fhClusCenL1GOnly;       //! Clusters Centrality vs E distribution for L1G trigger and not L1J
-  TH2F             *fhClusCenL1JOnly;       //! Clusters Centrality vs E distribution for L1J trigger and not L1G
-  TH2F             *fhClusCenMaxMB;         //! Maximum E Cluster  vs Centrality per event distribution for MB trigger
-  TH2F             *fhClusCenMaxL0;         //! Maximum E Cluster  vs Centrality  per event distribution for L0 trigger        
-  TH2F             *fhClusCenMaxL1G;        //! Maximum E Cluster  vs Centrality  per event distribution for L1G trigger
-  TH2F             *fhClusCenMaxL1J;        //! Maximum E Cluster  vs Centrality  per event distribution for L1J trigger
-  TH2F             *fhClusCenMaxL1GOnly;    //! Maximum E Cluster  vs Centrality  per event distribution for L1G trigger and not L1J
-  TH2F             *fhClusCenMaxL1JOnly;    //! Maximum E Cluster  vs Centrality  per event distribution for L1J trigger and not L1G  
-  
-  TH2F             *fhClusV0MB;            //! Clusters Centrality vs E distribution for MB trigger
-  TH2F             *fhClusV0L0;            //! Clusters Centrality vs E distribution for L0 trigger    
-  TH2F             *fhClusV0L1G;           //! Clusters Centrality vs E distribution for L1G trigger
-  TH2F             *fhClusV0L1J;           //! Clusters Centrality vs E distribution for L1J trigger
-  TH2F             *fhClusV0L1GOnly;       //! Clusters Centrality vs E distribution for L1G trigger and not L1J
-  TH2F             *fhClusV0L1JOnly;       //! Clusters Centrality vs E distribution for L1J trigger and not L1G
-  TH2F             *fhClusV0MaxMB;         //! Maximum E Cluster  vs Centrality per event distribution for MB trigger
-  TH2F             *fhClusV0MaxL0;         //! Maximum E Cluster  vs Centrality  per event distribution for L0 trigger 
-  TH2F             *fhClusV0MaxL1G;        //! Maximum E Cluster  vs Centrality  per event distribution for L1G trigger
-  TH2F             *fhClusV0MaxL1J;        //! Maximum E Cluster  vs Centrality  per event distribution for L1J trigger
-  TH2F             *fhClusV0MaxL1GOnly;    //! Maximum E Cluster  vs Centrality  per event distribution for L1G trigger and not L1J
-  TH2F             *fhClusV0MaxL1JOnly;    //! Maximum E Cluster  vs Centrality  per event distribution for L1J trigger and not L1G 
-  
-  TH2F             *fhClusEtaMB;            //! Clusters eta vs E distribution for MB trigger
-  TH2F             *fhClusEtaL0;            //! Clusters eta vs E distribution for L0 trigger  
-  TH2F             *fhClusEtaL1G;           //! Clusters eta vs E distribution for L1G trigger
-  TH2F             *fhClusEtaL1J;           //! Clusters eta vs E distribution for L1J trigger
-  TH2F             *fhClusEtaL1GOnly;       //! Clusters eta vs E distribution for L1G trigger and not L1J
-  TH2F             *fhClusEtaL1JOnly;       //! Clusters eta vs E distribution for L1J trigger and not L1G
-  TH2F             *fhClusEtaMaxMB;         //! Maximum E Cluster  vs Eta per event distribution for MB trigger
-  TH2F             *fhClusEtaMaxL0;         //! Maximum E Cluster  vs Eta  per event distribution for L0 trigger       
-  TH2F             *fhClusEtaMaxL1G;        //! Maximum E Cluster  vs Eta  per event distribution for L1G trigger
-  TH2F             *fhClusEtaMaxL1J;        //! Maximum E Cluster  vs Eta  per event distribution for L1J trigger
-  TH2F             *fhClusEtaMaxL1GOnly;    //! Maximum E Cluster  vs Eta  per event distribution for L1G trigger and not L1J
-  TH2F             *fhClusEtaMaxL1JOnly;    //! Maximum E Cluster  vs Eta  per event distribution for L1J trigger and not L1G
-
-  TH2F             *fhClusPhiMB;            //! Clusters Phi vs E distribution for MB trigger
-  TH2F             *fhClusPhiL0;            //! Clusters Phi vs E distribution for L0 trigger  
-  TH2F             *fhClusPhiL1G;           //! Clusters Phi vs E distribution for L1G trigger
-  TH2F             *fhClusPhiL1J;           //! Clusters Phi vs E distribution for L1J trigger
-  TH2F             *fhClusPhiL1GOnly;       //! Clusters Phi vs E distribution for L1G trigger and not L1J
-  TH2F             *fhClusPhiL1JOnly;       //! Clusters Phi vs E distribution for L1J trigger and not L1G
-  TH2F             *fhClusPhiMaxMB;         //! Maximum E Cluster  vs Phi per event distribution for MB trigger
-  TH2F             *fhClusPhiMaxL0;         //! Maximum E Cluster  vs Phi  per event distribution for L0 trigger       
-  TH2F             *fhClusPhiMaxL1G;        //! Maximum E Cluster  vs Phi  per event distribution for L1G trigger
-  TH2F             *fhClusPhiMaxL1J;        //! Maximum E Cluster  vs Phi  per event distribution for L1J trigger
-  TH2F             *fhClusPhiMaxL1GOnly;    //! Maximum E Cluster  vs Phi  per event distribution for L1G trigger and not L1J
-  TH2F             *fhClusPhiMaxL1JOnly;    //! Maximum E Cluster  vs Phi  per event distribution for L1J trigger and not L1G
-
-  TH2F             *fhClusEtaPhiHighMB;            //! Clusters eta vs phi distribution for MB trigger, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighL0;            //! Clusters eta vs phi distribution for L0 trigger, energy above 10 GeV    
-  TH2F             *fhClusEtaPhiHighL1G;           //! Clusters eta vs phi distribution for L1G trigger, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighL1J;           //! Clusters eta vs phi distribution for L1J trigger, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighL1GOnly;       //! Clusters eta vs phi distribution for L1G trigger and not L1J, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighL1JOnly;       //! Clusters eta vs phi distribution for L1J trigger and not L1G, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighCluMaxMB;      //! Maximum E Cluster, Phi vs Eta per event distribution for MB trigger, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighCluMaxL0;      //! Maximum E Cluster, Phi vs Eta per event distribution for L0 trigger, energy above 10 GeV        
-  TH2F             *fhClusEtaPhiHighCluMaxL1G;     //! Maximum E Cluster, Phi vs Eta per event distribution for L1G trigger, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighCluMaxL1J;     //! Maximum E Cluster, Phi vs Eta per event distribution for L1J trigger, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighCluMaxL1GOnly; //! Maximum E Cluster, Phi vs Eta per event distribution for L1G trigger and not L1J, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighCluMaxL1JOnly; //! Maximum E Cluster, Phi vs Eta per event distribution for L1J trigger and not L1G, energy above 10 GeV
-  
-  TH2F             *fhClusEtaPhiHighCellMaxMB;            //! Clusters maximum energy cell index eta vs phi distribution for MB trigger, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighCellMaxL0;            //! Clusters maximum energy cell index eta vs phi distribution for L0 trigger, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighCellMaxL1G;           //! Clusters maximum energy cell index eta vs phi distribution for L1G trigger, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighCellMaxL1J;           //! Clusters maximum energy cell index eta vs phi distribution for L1J trigger, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighCellMaxL1GOnly;       //! Clusters maximum energy cell index eta vs phi distribution for L1G trigger and not L1J, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighCellMaxL1JOnly;       //! Clusters maximum energy cell index eta vs phi distribution for L1J trigger and not L1G, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighCellMaxCluMaxMB;      //! Maximum E Cluster, maximum energy cell index Phi vs Eta per event distribution for MB trigger, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighCellMaxCluMaxL0;      //! Maximum E Cluster, maximum energy cell index Phi vs Eta per event distribution for L0 trigger, energy above 10 GeV       
-  TH2F             *fhClusEtaPhiHighCellMaxCluMaxL1G;     //! Maximum E Cluster, maximum energy cell index Phi vs Eta per event distribution for L1G trigger, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighCellMaxCluMaxL1J;     //! Maximum E Cluster, maximum energy cell index Phi vs Eta per event distribution for L1J trigger, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighCellMaxCluMaxL1GOnly; //! Maximum E Cluster, maximum energy cell index Phi vs Eta per event distribution for L1G trigger and not L1J, energy above 10 GeV
-  TH2F             *fhClusEtaPhiHighCellMaxCluMaxL1JOnly; //! Maximum E Cluster, maximum energy cell index Phi vs Eta per event distribution for L1J trigger and not L1G, energy above 10 GeV
-  
-  TH2F             *fhClusEtaPhiLowMB;            //! Clusters eta vs phi distribution for MB trigger, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowL0;            //! Clusters eta vs phi distribution for L0 trigger, energy below 10 GeV     
-  TH2F             *fhClusEtaPhiLowL1G;           //! Clusters eta vs phi distribution for L1G trigger, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowL1J;           //! Clusters eta vs phi distribution for L1J trigger, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowL1GOnly;       //! Clusters eta vs phi distribution for L1G trigger and not L1J, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowL1JOnly;       //! Clusters eta vs phi distribution for L1J trigger and not L1G, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowCluMaxMB;      //! Maximum E Cluster, Phi vs Eta per event distribution for MB trigger, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowCluMaxL0;      //! Maximum E Cluster, Phi vs Eta per event distribution for L0 trigger, energy below 10 GeV 
-  TH2F             *fhClusEtaPhiLowCluMaxL1G;     //! Maximum E Cluster, Phi vs Eta per event distribution for L1G trigger, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowCluMaxL1J;     //! Maximum E Cluster, Phi vs Eta per event distribution for L1J trigger, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowCluMaxL1GOnly; //! Maximum E Cluster, Phi vs Eta per event distribution for L1G trigger and not L1J, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowCluMaxL1JOnly; //! Maximum E Cluster, Phi vs Eta per event distribution for L1J trigger and not L1G, energy below 10 GeV
-  
-  TH2F             *fhClusEtaPhiLowCellMaxMB;            //! Clusters maximum energy cell index eta vs phi distribution for MB trigger, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowCellMaxL0;            //! Clusters maximum energy cell index eta vs phi distribution for L0 trigger, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowCellMaxL1G;           //! Clusters maximum energy cell index eta vs phi distribution for L1G trigger, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowCellMaxL1J;           //! Clusters maximum energy cell index eta vs phi distribution for L1J trigger, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowCellMaxL1GOnly;       //! Clusters maximum energy cell index eta vs phi distribution for L1G trigger and not L1J, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowCellMaxL1JOnly;       //! Clusters maximum energy cell index eta vs phi distribution for L1J trigger and not L1G, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowCellMaxCluMaxMB;      //! Maximum E Cluster, maximum energy cell index Phi vs Eta per event distribution for MB trigger, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowCellMaxCluMaxL0;      //! Maximum E Cluster, maximum energy cell index Phi vs Eta per event distribution for L0 trigger, energy below 10 GeV        
-  TH2F             *fhClusEtaPhiLowCellMaxCluMaxL1G;     //! Maximum E Cluster, maximum energy cell index Phi vs Eta per event distribution for L1G trigger, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowCellMaxCluMaxL1J;     //! Maximum E Cluster, maximum energy cell index Phi vs Eta per event distribution for L1J trigger, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowCellMaxCluMaxL1GOnly; //! Maximum E Cluster, maximum energy cell index Phi vs Eta per event distribution for L1G trigger and not L1J, energy below 10 GeV
-  TH2F             *fhClusEtaPhiLowCellMaxCluMaxL1JOnly; //! Maximum E Cluster, maximum energy cell index Phi vs Eta per event distribution for L1J trigger and not L1G, energy below 10 GeV
+  TH1F             *fhClusMBPure[3];       //! Clusters E distribution for pure MB trigger
+  TH1F             *fhClusMaxMBPure[3];    //! Maximum E Cluster per event distribution for pure MB trigger
   
+  static const int  fgkTriggerCombi = 12;   // total number of trigger combinations defined above
   
+  TH1F             *fhClus   [fgkTriggerCombi];                     //! Clusters E distribution for a trigger
+  TH1F             *fhClusMax[fgkTriggerCombi];                     //! Maximum E Cluster per event distribution for MB trigger
+
+  TH2F             *fhClusCen   [fgkTriggerCombi];                  //! Clusters Centrality vs E distribution for a trigger
+  TH2F             *fhClusCenMax[fgkTriggerCombi];                  //! Maximum E Cluster  vs Centrality per event distribution for a trigger
   
+  TH2F             *fhClusV0   [fgkTriggerCombi];                   //! Clusters V0 vs E distribution for a trigger
+  TH2F             *fhClusV0Max[fgkTriggerCombi];                   //! Maximum E Cluster  vs Centrality per event distribution for a trigger
+
+  TH2F             *fhClusEta   [fgkTriggerCombi];                  //! Clusters eta vs E distribution for a trigger
+  TH2F             *fhClusEtaMax[fgkTriggerCombi];                  //! Maximum E Cluster  vs Eta per event distribution for a trigger
+
+  TH2F             *fhClusPhi   [fgkTriggerCombi];                   //! Clusters Phi vs E distribution for a trigger
+  TH2F             *fhClusPhiMax[fgkTriggerCombi];                   //! Maximum E Cluster  vs Phi per event distribution for a trigger
+
+  TH2F             *fhClusEtaPhiHigh      [fgkTriggerCombi];         //! Clusters eta vs phi distribution for a trigger, energy above fEtaPhiEnMin GeV
+  TH2F             *fhClusEtaPhiHighCluMax[fgkTriggerCombi];         //! Maximum E Cluster, Phi vs Eta per event distribution for a trigger, energy above fEtaPhiEnMin GeV
+  TH2F             *fhClusEtaPhiHighCellMax      [fgkTriggerCombi];  //! Clusters maximum energy cell index eta vs phi distribution for a trigger, energy above fEtaPhiEnMin GeV
+  TH2F             *fhClusEtaPhiHighCellMaxCluMax[fgkTriggerCombi];  //! Maximum E Cluster, maximum energy cell index Phi vs Eta per event distribution for MB trigger, energy above fEtaPhiEnMin GeV
+  TH2F             *fhClusEtaPhiLow      [fgkTriggerCombi];          //! Clusters eta vs phi distribution for a trigger, energy below fEtaPhiEnMin GeV
+  TH2F             *fhClusEtaPhiLowCluMax[fgkTriggerCombi];          //! Maximum E Cluster, Phi vs Eta per event distribution for MB trigger, energy below fEtaPhiEnMin GeV
+  TH2F             *fhClusEtaPhiLowCellMax      [fgkTriggerCombi];   //! Clusters maximum energy cell index eta vs phi distribution for a trigger, energy below fEtaPhiEnMin GeV
+  TH2F             *fhClusEtaPhiLowCellMaxCluMax[fgkTriggerCombi];   //! Maximum E Cluster, maximum energy cell index Phi vs Eta per event distribution for MB trigger, energy below fEtaPhiEnMin GeV
+
+  TH1F             *fhV0[fgkTriggerCombi];//! V0 distribution for a triggered event
+
   // Histograms bins
   
   Int_t             fNBinsSTUSignal   ;     // Number of bins for STU total signal histograms
@@ -216,21 +254,43 @@ private:
   Float_t           fMaxSTUTRURatio   ;     // Maximum value for STU/TRU ratios histograms
   Int_t             fNBinsClusterE    ;     // Number of bins for E cluster histograms
   Float_t           fMaxClusterE      ;     // Maximum value for E cluster histograms
-
+  Int_t             fNBinsClusterPhi  ;     // Number of bins for Phi cluster histograms
+  Float_t           fMaxClusterPhi    ;     // Maximum value for Phi cluster histograms
+  Float_t           fMinClusterPhi    ;     // Maximum value for Phi cluster histograms
+  Int_t             fNBinsClusterEta  ;     // Number of bins for Eta cluster histograms
+  Float_t           fMaxClusterEta    ;     // Maximum value for Eta cluster histograms
+  
+  
   //Constants needed by the class: EMCAL 
-  static const int  fgkFALTRORows = AliEMCALGeoParams::fgkEMCALRows*(AliEMCALGeoParams::fgkEMCALModules-7)/2;   // total number 
+  //static const int  fgkFALTRORows = AliEMCALGeoParams::fgkEMCALRows*(AliEMCALGeoParams::fgkEMCALModules-7)/2;   // total number
+  static const int  fgkFALTRORows = 60; //AliEMCALGeoParams::fgkEMCALSTURows-4; // total number, temporary, not considers DCal
   // of fake altro rows    in EMCAL
   // (ALTRO channels in one SM times 5 SM divided by 2 per FALTRO)
   
-  static const int  fgkFALTROCols = AliEMCALGeoParams::fgkEMCALCols; // total number of fake altro columns in EMCAL 
+  static const int  fgkFALTROCols = AliEMCALGeoParams::fgkEMCALSTUCols; // total number of fake altro columns in EMCAL
   // (ALTRO channels in one SM times 2 SM divided by 2 per FALTRO)
   
+  // cell, patch maps
+  Double_t fMapCell     [fgkFALTRORows][fgkFALTROCols]; // Cell map
+  Double_t fMapCellL1G  [fgkFALTRORows][fgkFALTROCols]; // Cell map for L1G
+  Double_t fMapCellL1G2 [fgkFALTRORows][fgkFALTROCols]; // Cell map for L1G2
+  Double_t fMapCellL1J  [fgkFALTRORows][fgkFALTROCols]; // Cell map for L1J
+  Double_t fMapCellL1J2 [fgkFALTRORows][fgkFALTROCols]; // Cell map for L1J2
+  Double_t fMapTrigL0   [fgkFALTRORows][fgkFALTROCols]; // Patch map for L0
+  Double_t fMapTrigL1   [fgkFALTRORows][fgkFALTROCols]; // Patch map for L1
+  Double_t fMapTrigL0L1G[fgkFALTRORows][fgkFALTROCols]; // Patch map for L0L1G
+  Double_t fMapTrigL0L1J[fgkFALTRORows][fgkFALTROCols]; // Patch map for L0L1J
+  Double_t fMapTrigL1G  [fgkFALTRORows][fgkFALTROCols]; // Patch map for L1G
+  Double_t fMapTrigL1G2 [fgkFALTRORows][fgkFALTROCols]; // Patch map for L1G2
+  Double_t fMapTrigL1J  [fgkFALTRORows][fgkFALTROCols]; // Patch map for L1J
+  Double_t fMapTrigL1J2 [fgkFALTRORows][fgkFALTROCols]; // Patch map for L1J2
+
   
-  AliAnalysisTaskEMCALTriggerQA(const AliAnalysisTaskEMCALTriggerQA&);            //not implemented
+  AliAnalysisTaskEMCALTriggerQA           (const AliAnalysisTaskEMCALTriggerQA&); // not implemented
   
-  AliAnalysisTaskEMCALTriggerQA& operator=(const AliAnalysisTaskEMCALTriggerQA&); //not implemented
+  AliAnalysisTaskEMCALTriggerQA& operator=(const AliAnalysisTaskEMCALTriggerQA&); // not implemented
   
-  ClassDef(AliAnalysisTaskEMCALTriggerQA, 9);   
+  ClassDef(AliAnalysisTaskEMCALTriggerQA, 14);
 };
 
 #endif