X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWGGA%2FEMCALTasks%2FAliAnalysisTaskEMCALTriggerQA.h;h=c3dee985142557e72b149d1fdf2c2d65507aeb4d;hb=0319d47a86ccd85865597f33c7135d91f31a5f69;hp=94bf8f55df113eb096ffd6ad42f6279cdebc585d;hpb=cf1701705cdb3d47f12ac9294440fdbde196872a;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWGGA/EMCALTasks/AliAnalysisTaskEMCALTriggerQA.h b/PWGGA/EMCALTasks/AliAnalysisTaskEMCALTriggerQA.h index 94bf8f55df1..c3dee985142 100644 --- a/PWGGA/EMCALTasks/AliAnalysisTaskEMCALTriggerQA.h +++ b/PWGGA/EMCALTasks/AliAnalysisTaskEMCALTriggerQA.h @@ -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,21 +25,40 @@ class AliEMCALRecoUtils; class AliAnalysisTaskEMCALTriggerQA : public AliAnalysisTaskSE { public: - AliAnalysisTaskEMCALTriggerQA(); // default constructor AliAnalysisTaskEMCALTriggerQA(const char *name); // named constructor virtual ~AliAnalysisTaskEMCALTriggerQA() { ; } // destructor + void ClusterAnalysis(); + + void FillCellMaps(); + + void FillTriggerPatchMaps(TString triggerclasses); + 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); + void FillCorrelationHistograms(); + + void FillEventCounterHistogram(); + + void FillL1GammaPatchHistograms(); + + void FillL1JetPatchHistograms(); + + void FillMapHistograms(); + + void FillV0Histograms(); + void Init() ; void InitHistogramArrays() ; + void InitCellPatchMaps(); + void LocalInit() { Init() ; } void UserCreateOutputObjects(); @@ -45,16 +70,29 @@ public: 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 ; } @@ -66,7 +104,10 @@ public: 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 @@ -85,6 +126,28 @@ private: 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 @@ -116,8 +179,8 @@ private: 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 *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 @@ -130,44 +193,52 @@ 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 *fhV0[10]; //! V0 distribution for a 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, kCentralTrig = 8, kSemiCentralTrig = 9 }; + 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 *fhClusMBPure[3]; //! Clusters E distribution for pure MB trigger TH1F *fhClusMaxMBPure[3]; //! Maximum E Cluster per event distribution for pure MB trigger - TH1F *fhClus[10]; //! Clusters E distribution for a trigger - TH1F *fhClusMax[10]; //! Maximum E Cluster per event distribution for 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[10]; //! Clusters Centrality vs E distribution for a trigger - TH2F *fhClusCenMax[10]; //! Maximum E Cluster vs Centrality per event distribution for a 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[10]; //! Clusters V0 vs E distribution for a trigger - TH2F *fhClusV0Max[10]; //! 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[10]; //! Clusters eta vs E distribution for a trigger - TH2F *fhClusEtaMax[10]; //! Maximum E Cluster vs Eta 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[10]; //! Clusters Phi vs E distribution for a trigger - TH2F *fhClusPhiMax[10]; //! Maximum E Cluster vs Phi 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[10]; //! Clusters eta vs phi distribution for a trigger, energy above 10 GeV - TH2F *fhClusEtaPhiHighCluMax[10]; //! Maximum E Cluster, Phi vs Eta per event distribution for a trigger, energy above 10 GeV + 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[10]; //! Clusters maximum energy cell index eta vs phi distribution for MB trigger, energy above 10 GeV - TH2F *fhClusEtaPhiHighCellMaxCluMax[10]; //! Maximum E Cluster, maximum energy cell index Phi vs Eta per event distribution for MB trigger, energy above 10 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[10]; //! Clusters eta vs phi distribution for MB trigger, energy below 10 GeV - TH2F *fhClusEtaPhiLowCluMax[10]; //! Maximum E Cluster, Phi vs Eta per event distribution for MB trigger, energy below 10 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[10]; //! Clusters maximum energy cell index eta vs phi distribution for MB trigger, energy below 10 GeV - TH2F *fhClusEtaPhiLowCellMaxCluMax[10]; //! Maximum E Cluster, maximum energy cell index Phi vs Eta per event distribution for MB trigger, energy below 10 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 @@ -183,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& operator=(const AliAnalysisTaskEMCALTriggerQA&); // not implemented - ClassDef(AliAnalysisTaskEMCALTriggerQA, 11); + ClassDef(AliAnalysisTaskEMCALTriggerQA, 14); }; #endif