]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/Correlations/JCORRAN/AliJDiJetAnalysis.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / Correlations / JCORRAN / AliJDiJetAnalysis.h
1 /* Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
2  * See cxx source for full Copyright notice */
3
4 // Short comment describing what this class does needed!
5
6 //===========================================================
7 // Dummy comment, should be replaced by a real one
8 //===========================================================
9
10 #ifndef ALIJDIJETANALYSIS_H
11 #define ALIJDIJETANALYSIS_H
12
13 #include <vector>
14 #include <TObjArray.h>
15 #include "AliJBaseCard.h"
16 #include "AliJConst.h"
17 #include "AliJJet.h"
18 //#include "AliJHistosDiJetAnalysis.h"
19 #include "AliJHistManager.h"
20
21 class AliJDiJet {
22     public:
23         AliJDiJet():fJet(){ ; }
24         AliJDiJet(AliJJet*i,AliJJet*j):fJet(){SetJets(i,j);}
25         void SetJet( int i, AliJJet* j ){ Safe(i);fJet[i]=j; }
26         void SetJets( AliJJet* i, AliJJet*j){ Safe(2);fJet[0]=i;fJet[1]=j; }
27         double DPt( AliJDiJet & dijet, int i, int j );
28         double PtPair(){ return (jet(0)+jet(1)).Pt(); }
29         double kTA(){ return LeadingPt()*TMath::Sin( DPhi() ); }
30         double DPhi(){ return jet(0).DeltaPhi(jet(1)); }
31         double DR(){ return jet(0).DeltaR(jet(1)); }
32         double DEta(){ return jet(0).Eta() - jet(1).Eta(); }
33         double DPt(){ return jet(0).Pt() - jet(1).Pt();}
34         double PtAsymm(){ return  (jet(0).Pt() -jet(1).Pt())/(jet(0).Pt()+jet(1).Pt()); }
35         double EAsymm(){ return  (jet(0).E() -jet(1).E())/(jet(0).E()+jet(1).E()); }
36         double InvM(){ return (jet(0)+jet(1)).M(); }
37         void Clear(){ fJet.clear(); }
38         void Add(AliJJet*j){ fJet.push_back(j); } 
39         int GetEntries(){ return fJet.size(); }
40         void Safe( UInt_t x ){ if( fJet.size()<x) fJet.resize(x); }
41         double LeadingPt(){ double pt0=jet(0).Pt();double pt1=jet(1).Pt();return pt0>pt1?pt0:pt1;}
42
43         AliJJet& jet(int i){ Safe(i);return (*this)(i); }
44         AliJJet& operator()(int i ){
45             if( i > 1 || i< 0) { cout<<"wrong index"<<endl;exit(2);  }
46             if( !fJet[i] ){ cout<<"Empty jet"<<endl;exit(3); }
47             return* fJet[i];
48         }
49
50         vector<AliJJet*> fJet;
51 };
52
53
54 class AliJDiJetAnalysis{
55     public:
56         enum { 
57             kJDiJetLeadingSubLeading,
58             kLeadingSubLeadingOpposite,
59             kJDiJetMarta,
60             //kJDiJetAtlas,
61             kJNDiJetSelection
62         };
63         enum { 
64             kJIncomingJet, kJOutgoingJet, 
65             kJFullJet, kJFullJet08, 
66             kJChargedJet, kJChargedJet08, 
67             //kJIdealJet, 
68             kJMultiPartonAll, 
69             kJNJetType 
70         };
71         enum{ kJEtaAll, kJEtaAlice, kJNJetSelection};
72
73         AliJDiJetAnalysis();
74         AliJDiJetAnalysis( AliJBaseCard * card );
75         AliJDiJetAnalysis( const AliJDiJetAnalysis & obj );
76         AliJDiJetAnalysis& operator=(const AliJDiJetAnalysis & obj);
77
78         AliJDiJet * GetDiJets(int type, int js, int djs);
79         TObjArray * GetJets(int type, int js);
80
81         void FillHistosJets();
82         void FillHistosDiJet();
83         void CreateHistos();
84
85
86         void AddJets(TObjArray * jets ){ 
87             if( !jets ) {
88                 cout<<"JWARN_C1 in AddJets jets="<<jets<<endl;
89                 //return;
90             }
91             fJetListOfList.Add( (TObject*)jets ); 
92             if( !jets ) return;
93             for( int i=0;i<jets->GetEntriesFast();i++ ){
94                 //((AliJJet*)jets->At(i))->ReSum();
95             }
96         } // TODO clean before event
97
98
99         int GetNJets(){ return GetJetList()->GetEntriesFast(); }
100         TObjArray* GetJetList(){ return fJetList; }
101         Double_t GetJetEtaRange(){ return fJetEtaRange; }
102         void SetJetEtaRange(double eta){ fJetEtaRange=eta; }
103         void SetJetList(TObjArray* jetlist){ fJetList=jetlist; }
104         void SetInputList(TObjArray * ilist){ fInputList = ilist;}
105         void SetTrackJetMap(std::vector<int> * v){ fTrackJetMap=v;}
106         void SetJetPtBin( TVector * b){ fJetPtBins=b; }
107
108         AliJJet & Jet( int i ){ return *(AliJJet*) fJetList->At(i); }
109         TObjArray * GetDiJetList( int i ){ return (TObjArray*)fJetListOfList[i]; }
110         void FillJetPythiaComperisonHistos(int ref, int typ, int js);
111
112         void UserCreateOutputObjects();
113         void UserExec();
114         void Terminate() const;
115
116         void ClearBeforeEvent();
117
118         void FillPythiaDiJet(int js );
119
120     private:
121         TObjArray * fInputList; // comment needed
122         TObjArray * fJetList; // comment needed
123         TObjArray fJetListOfList; // !comment needed
124         AliJDiJet *fDiJets[kJNJetType][kJNJetSelection][kJNDiJetSelection]; // comment needed
125         TObjArray *fJets[kJNJetType][kJNJetSelection]; // comment needed
126         bool   fIsFullAcceptance; // comment needed
127         double fJetEtaRange; // comment needed
128         int   fIsMartasDiJet; // comment needed
129         std::vector<int> *fTrackJetMap; // comment needed
130
131         TVector *fJetPtBins;
132         TVector *fJetPtPairBins;
133         double   fJetPtMinCut;
134
135
136
137         double fMeanDiJetPt;
138
139         // PYTHIA8
140         double fParton23Pt;
141
142         AliJBaseCard * fCard; // comment needed
143
144
145         //== Histogram
146         AliJHistManager * fHMG;
147         AliJBin fJetPtBin;
148         AliJBin fJetPtPairBin;
149         AliJBin fInvMBin;
150         AliJBin fJetTypeBin;
151         AliJBin fJetSelectionBin;
152         AliJBin fDiJetSelectionBin;
153         AliJBin fJetRBin;
154         AliJBin fJetDRBin;
155         AliJBin fDiJetBinTypeBin;
156         AliJBin fPYJetTypeBin;
157         AliJBin fBin2;
158
159         //== Jets
160         AliJTH1D fhJetPt ;
161         AliJTH1D fhJetPhi;
162         AliJTH1D fhJetEta;
163         AliJTH1D fhJetNConst;
164         AliJTH1D fhJetEnergy;
165
166         AliJTProfile fhJetEnergyComp;
167         AliJTProfile fhJetPtComp;
168         AliJTH1D fhJetDRToRef;
169         AliJTH1D fhJetDPhiToRef;
170         //== DiJets;
171         AliJTH1D fhDiJetPtPair;
172         AliJTH1D fhDiJetInvM;
173         AliJTH1D fhDiJetKtA;
174         AliJTH1D fhDiJetDeltaR;     //!
175         AliJTH1D fhDiJetDeltaPhi;
176         AliJTH1D fhDiJetDeltaEta;
177         AliJTH1D fhDiJetPtAsymm;
178         AliJTH1D fhDiJetEAsymm;
179         AliJTH1D fhDiJetMultiplicity;
180
181         //== PYTHIA
182         AliJTH1D fhPythiaJetPtPair;
183         AliJTH1D fhPythiaJetSum;
184
185         int fDiJetBin[kJNJetType][kJNJetSelection][kJNDiJetSelection][10];
186 };
187
188 #endif
189