#ifndef ALIANALYSISTASKEMCALTRIGGERQA_H #define ALIANALYSISTASKEMCALTRIGGERQA_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ //-------------------------------------------------------------------------// // Fill histograms with basic QA information for EMCAL offline trigger // // Author: Nicolas Arbor (LPSC-Grenoble), Rachid Guernane (LPSC-Grenoble) // // Gustavo Conesa Balbastre (LPSC-Grenoble) // // // //-------------------------------------------------------------------------// //--- Root --- class TList; class TH1F; class TH2I; class TH2F; class AliEMCALGeometry; class TProfile2D; //--- AliRoot --- class AliEMCALRecoUtils; #include "AliEMCALGeoParams.h" #include "AliAnalysisTaskSE.h" class AliAnalysisTaskEMCALTriggerQA : public AliAnalysisTaskSE { public: AliAnalysisTaskEMCALTriggerQA(); // default constructor AliAnalysisTaskEMCALTriggerQA(const char *name); // named constructor virtual ~AliAnalysisTaskEMCALTriggerQA() { ; } // destructor void UserCreateOutputObjects(); // you should create your output objects in that function if possible void UserExec(Option_t *option); // function called for each event void SetGeometryName(TString name) { fGeoName = name ; } AliEMCALRecoUtils* GetRecoUtils() { return fRecoUtils ; } //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 ; } private: TList *fOutputList; //! Output list AliEMCALRecoUtils *fRecoUtils; // RecoUtils AliEMCALGeometry *fGeometry; // Access to EMCAL geometry utils TString fGeoName; // Name of geometry used 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 *fhFORAmpL1J; //! FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column, with L1 Jet 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 *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 *fhL1JPatch; //! 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 TH2F *fhGPMaxVV0TT; //! V0 signal vs maximum gamma L1 patch TH2F *fhJPMaxVV0TT; //! V0 signal vs maximum jet L1 patch 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 *fhL1JPatchMax; //! FOR of max. amplitude patch with L1 Jet patch associated // Cluster vs trigger histograms 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 // Histograms bins Int_t fNBinsSTUSignal ; // Number of bins for STU total signal histograms Float_t fMaxSTUSignal ; // Maximum value for TRU total signal histograms Int_t fNBinsTRUSignal ; // Number of bins for TRU total signal histograms Float_t fMaxTRUSignal ; // Maximum value for TRU total signal histograms Int_t fNBinsV0Signal ; // Number of bins for V0 total signal histograms Float_t fMaxV0Signal ; // Maximum value for V0 total signal histograms Int_t fNBinsSTUFEERatio ; // Number of bins for STU/FEE ratios histograms Float_t fMaxSTUFEERatio ; // Maximum value for STU/FEE ratios histograms Int_t fNBinsSTUTRURatio ; // Number of bins for STU/TRU ratios histograms 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 //Constants needed by the class: EMCAL static const int fgkFALTRORows = AliEMCALGeoParams::fgkEMCALRows*(AliEMCALGeoParams::fgkEMCALModules-7)/2; // total number // 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 // (ALTRO channels in one SM times 2 SM divided by 2 per FALTRO) AliAnalysisTaskEMCALTriggerQA(const AliAnalysisTaskEMCALTriggerQA&); //not implemented AliAnalysisTaskEMCALTriggerQA& operator=(const AliAnalysisTaskEMCALTriggerQA&); //not implemented ClassDef(AliAnalysisTaskEMCALTriggerQA, 9); }; #endif