]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/AliJetResponseMaker.h
Transition to new base class (Salvatore/Marta).
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / AliJetResponseMaker.h
1 #ifndef ALIJETRESPONSEMAKER_H
2 #define ALIJETRESPONSEMAKER_H
3
4 // $Id$
5
6 class TClonesArray;
7 class TH2;
8 class THnSparse;
9 class AliNamedArrayI;
10
11 #include "AliEmcalJet.h"
12 #include "AliAnalysisTaskEmcalJetDev.h"
13
14 class AliJetResponseMaker : public AliAnalysisTaskEmcalJetDev {
15  public:
16   AliJetResponseMaker();
17   AliJetResponseMaker(const char *name);
18   virtual ~AliJetResponseMaker();
19
20   enum MatchingType{
21     kNoMatching = 0,
22     kGeometrical = 1,
23     kMCLabel = 2,
24     kSameCollections = 3
25   };
26
27   void                        UserCreateOutputObjects();
28
29   void                        SetMatching(MatchingType t, Double_t p1=1, Double_t p2=1)       { fMatching = t; fMatchingPar1 = p1; fMatchingPar2 = p2; }
30   void                        SetPtHardBin(Int_t b)                                           { fSelectPtHardBin   = b         ; }
31   void                        SetUseCellsToMatch(Bool_t i)                                    { fUseCellsToMatch   = i         ; }
32   void                        SetMinJetMCPt(Float_t pt)                                       { fMinJetMCPt        = pt        ; }
33   void                        SetHistoType(Int_t b)                                           { fHistoType         = b         ; }
34   void                        SetDeltaPtAxis(Int_t b)                                         { fDeltaPtAxis       = b         ; }
35   void                        SetDeltaEtaDeltaPhiAxis(Int_t b)                                { fDeltaEtaDeltaPhiAxis= b       ; }
36   void                        SetNEFAxis(Int_t b)                                             { fNEFAxis           = b         ; }
37   void                        SetZAxis(Int_t b)                                               { fZAxis             = b         ; }
38   void                        SetDoJet2Histogram(Int_t b)                                     { fDoJet2Histogram   = b         ; }
39
40  protected:
41   void                        ExecOnce();
42   void                        DoJetLoop();
43   Bool_t                      FillHistograms();
44   Bool_t                      Run();
45   Bool_t                      DoJetMatching();
46   void                        SetMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, MatchingType matching);
47   void                        GetGeometricalMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, Double_t &d) const;
48   void                        GetMCLabelMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, Double_t &d1, Double_t &d2) const;
49   void                        GetSameCollectionsMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, Double_t &d1, Double_t &d2) const;
50   void                        FillMatchingHistos(Double_t Pt1, Double_t Pt2, Double_t Eta1, Double_t Eta2, Double_t Phi1, Double_t Phi2, 
51                                                  Double_t A1, Double_t A2, Double_t d, Double_t CE1, Double_t CE2, Double_t CorrPt1, Double_t CorrPt2, 
52                                                  Double_t MCPt1, Double_t NEF1, Double_t NEF2, Double_t Z1, Double_t Z2);
53   void                        FillJetHisto(Double_t Phi, Double_t Eta, Double_t Pt, Double_t A, Double_t NEF, Double_t Z, Double_t CorrPt, Double_t MCPt, Int_t Set);
54   void                        AllocateTH2();
55   void                        AllocateTHnSparse();
56
57   MatchingType                fMatching;                               // matching type
58   Double_t                    fMatchingPar1;                           // matching parameter for jet1-jet2 matching
59   Double_t                    fMatchingPar2;                           // matching parameter for jet2-jet1 matching
60   Bool_t                      fUseCellsToMatch;                        // use cells instead of clusters to match jets (slower but sometimes needed)
61   Double_t                    fMinJetMCPt;                             // minimum jet MC pt
62   Int_t                       fHistoType;                              // histogram type (0=TH2, 1=THnSparse)
63   Int_t                       fDeltaPtAxis;                            // add delta pt axis in THnSparse (default=0)
64   Int_t                       fDeltaEtaDeltaPhiAxis;                   // add delta eta and delta phi axes in THnSparse (default=0)
65   Int_t                       fNEFAxis;                                // add NEF axis in matching THnSparse (default=0)
66   Int_t                       fZAxis;                                  // add Z axis in matching THnSparse (default=0)
67   Int_t                       fDoJet2Histogram;                        // add unbiased jet2 histogram (potentially memory consuming if on particle level)
68
69   Bool_t                      fIsJet1Rho;                              //!whether the jet1 collection has to be average subtracted
70   Bool_t                      fIsJet2Rho;                              //!whether the jet2 collection has to be average subtracted
71
72   // General histos
73   TH2                        *fHistLeadingJets1PtArea;                 //!leading jet pt vs. area histogram 1
74   TH2                        *fHistLeadingJets1CorrPtArea;             //!leading jet corr pt vs. area histogram 1
75   TH2                        *fHistLeadingJets2PtArea;                 //!leading jet pt vs. area histogram 2
76   TH2                        *fHistLeadingJets2CorrPtArea;             //!leading jet corr pt vs. area histogram 2
77   TH2                        *fHistLeadingJets2PtAreaAcceptance;       //!leading jet pt vs. area histogram 2 using jet 1 cuts (acceptance, leading hadron bias, ...)
78   TH2                        *fHistLeadingJets2CorrPtAreaAcceptance;   //!leading jet corr pt vs. area histogram 2 using jet 1 cuts (acceptance, leading hadron bias, ...)
79
80   // THnSparse
81   THnSparse                  *fHistJets1;                              //!jet1 THnSparse
82   THnSparse                  *fHistJets2;                              //!jet2 THnSparse
83   THnSparse                  *fHistJets2Acceptance;                    //!jet2 acceptance THnSparse
84   THnSparse                  *fHistMatching;                           //!matching THnSparse
85
86   // Jets 1
87   TH2                        *fHistJets1PhiEta;                        //!phi-eta distribution of jets 1
88   TH2                        *fHistJets1PtArea;                        //!inclusive jet pt vs. area histogram 1
89   TH2                        *fHistJets1CorrPtArea;                    //!inclusive jet pt vs. area histogram 1
90   TH2                        *fHistJets1NEFvsPt;                       //!Jet neutral energy fraction vs. jet pt 1
91   TH2                        *fHistJets1CEFvsCEFPt;                    //!Jet charged energy fraction vs. charged jet pt 1
92   TH2                        *fHistJets1ZvsPt;                         //!Constituent Pt over Jet Pt ratio vs. jet pt 1
93
94   // Jets 2
95   TH2                        *fHistJets2PhiEta;                        //!phi-eta distribution of jets 2
96   TH2                        *fHistJets2PtArea;                        //!inclusive jet pt vs. area histogram 2
97   TH2                        *fHistJets2CorrPtArea;                    //!inclusive jet pt vs. area histogram 2
98   TH2                        *fHistJets2PhiEtaAcceptance;              //!phi-eta distribution of jets 2 using jet 1 cuts (acceptance, leading hadron bias, ...)
99   TH2                        *fHistJets2PtAreaAcceptance;              //!inclusive jet pt vs. area histogram 2 using jet 1 cuts (acceptance, leading hadron bias, ...)
100   TH2                        *fHistJets2CorrPtAreaAcceptance;          //!inclusive jet pt vs. area histogram 2 using jet 1 cuts (acceptance, leading hadron bias, ...)
101   TH2                        *fHistJets2NEFvsPt;                       //!Jet neutral energy fraction vs. jet pt 2
102   TH2                        *fHistJets2CEFvsCEFPt;                    //!Jet charged energy fraction vs. charged jet pt 2
103   TH2                        *fHistJets2ZvsPt;                         //!Constituent Pt over Jet Pt ratio vs. jet pt 2
104
105   // Jet1-Jet2 matching
106   TH2                        *fHistCommonEnergy1vsJet1Pt;              //!common energy 1 (%) vs jet 1 pt
107   TH2                        *fHistCommonEnergy2vsJet2Pt;              //!common energy 2 (%) vs jet 2 pt
108   TH2                        *fHistDistancevsJet1Pt;                   //!distance vs jet 1 pt
109   TH2                        *fHistDistancevsJet2Pt;                   //!distance vs jet 2 pt
110   TH2                        *fHistDistancevsCommonEnergy1;            //!distance vs common energy 1 (%)
111   TH2                        *fHistDistancevsCommonEnergy2;            //!distance vs common energy 2 (%)
112   TH2                        *fHistCommonEnergy1vsCommonEnergy2;       //!common energy 1 (%) vs common energy 2 (%)
113   TH2                        *fHistDeltaEtaDeltaPhi;                   //!delta eta vs delta phi of matched jets
114
115   TH2                        *fHistJet2PtOverJet1PtvsJet2Pt;           //!jet 2 pt over jet 1 pt vs jet 2 pt
116   TH2                        *fHistJet1PtOverJet2PtvsJet1Pt;           //!jet 1 pt over jet 2 pt vs jet 1 pt
117   TH2                        *fHistDeltaPtvsJet1Pt;                    //!delta pt between matched jets vs jet 1 pt
118   TH2                        *fHistDeltaPtvsJet2Pt;                    //!delta pt between matched jets vs jet 2 pt
119   TH2                        *fHistDeltaPtOverJet1PtvsJet1Pt;          //!delta pt / jet 1 pt between matched jets vs jet 1 pt
120   TH2                        *fHistDeltaPtOverJet2PtvsJet2Pt;          //!delta pt / jet 2 pt between matched jets vs jet 2 pt
121   TH2                        *fHistDeltaPtvsDistance;                  //!delta pt between matched jets vs distance
122   TH2                        *fHistDeltaPtvsCommonEnergy1;             //!delta pt between matched jets vs common energy 1 (%)
123   TH2                        *fHistDeltaPtvsCommonEnergy2;             //!delta pt between matched jets vs common energy 2 (%)
124   TH2                        *fHistDeltaPtvsArea1;                     //!delta pt between matched jets vs jet 1 area
125   TH2                        *fHistDeltaPtvsArea2;                     //!delta pt between matched jets vs jet 2 area
126   TH2                        *fHistDeltaPtvsDeltaArea;                 //!delta pt between matched jets vs delta area
127   TH2                        *fHistJet1PtvsJet2Pt;                     //!correlation jet 1 pt vs jet 2 pt
128
129   TH2                        *fHistDeltaCorrPtOverJet1CorrPtvsJet1CorrPt;//!delta pt corr / jet 1 corr pt between matched jets vs jet 1 corr pt
130   TH2                        *fHistDeltaCorrPtOverJet2CorrPtvsJet2CorrPt;//!delta pt corr / jet 2 corr pt between matched jets vs jet 2 corr pt
131   TH2                        *fHistDeltaCorrPtvsJet1CorrPt;            //!delta pt corr between matched jets vs jet 1 corr pt 
132   TH2                        *fHistDeltaCorrPtvsJet2CorrPt;            //!delta pt corr between matched jets vs jet 2 corr pt
133   TH2                        *fHistDeltaCorrPtvsDistance;              //!delta pt corr between matched jets vs distance
134   TH2                        *fHistDeltaCorrPtvsCommonEnergy1;         //!delta pt corr between matched jets vs common energy 1 (%)
135   TH2                        *fHistDeltaCorrPtvsCommonEnergy2;         //!delta pt corr between matched jets vs common energy 2 (%)
136   TH2                        *fHistDeltaCorrPtvsArea1;                 //!delta pt corr between matched jets vs jet 1 area
137   TH2                        *fHistDeltaCorrPtvsArea2;                 //!delta pt corr between matched jets vs jet 2 area
138   TH2                        *fHistDeltaCorrPtvsDeltaArea;             //!delta pt corr between matched jets vs delta area
139   TH2                        *fHistJet1CorrPtvsJet2CorrPt;             //!correlation jet 1 corr pt vs jet 2 corr pt
140
141   TH2                        *fHistDeltaMCPtOverJet1MCPtvsJet1MCPt;    //!jet 1 MC pt - jet2 pt / jet 1 MC pt vs jet 1 pt
142   TH2                        *fHistDeltaMCPtOverJet2PtvsJet2Pt;        //!jet 1 MC pt - jet2 pt / jet 2 pt vs jet 2 pt
143   TH2                        *fHistDeltaMCPtvsJet1MCPt;                //!jet 1 MC pt - jet2 pt vs jet 1 MC pt
144   TH2                        *fHistDeltaMCPtvsJet2Pt;                  //!jet 1 MC pt - jet2 pt vs jet 2 pt
145   TH2                        *fHistDeltaMCPtvsDistance;                //!jet 1 MC pt - jet2 pt vs distance
146   TH2                        *fHistDeltaMCPtvsCommonEnergy1;           //!jet 1 MC pt - jet2 pt vs common energy 1 (%)
147   TH2                        *fHistDeltaMCPtvsCommonEnergy2;           //!jet 1 MC pt - jet2 pt vs common energy 2 (%)
148   TH2                        *fHistDeltaMCPtvsArea1;                   //!jet 1 MC pt - jet2 pt vs jet 1 area
149   TH2                        *fHistDeltaMCPtvsArea2;                   //!jet 1 MC pt - jet2 pt vs jet 2 area
150   TH2                        *fHistDeltaMCPtvsDeltaArea;               //!jet 1 MC pt - jet2 pt vs delta area
151   TH2                        *fHistJet1MCPtvsJet2Pt;                   //!correlation jet 1 MC pt vs jet 2 pt
152
153  private:
154   AliJetResponseMaker(const AliJetResponseMaker&);            // not implemented
155   AliJetResponseMaker &operator=(const AliJetResponseMaker&); // not implemented
156
157   ClassDef(AliJetResponseMaker, 23) // Jet response matrix producing task
158 };
159 #endif