AliPhysics  251aa1e (251aa1e)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliAnalysisTaskChargedJetsHadronCF.h
Go to the documentation of this file.
1 #ifndef ALIANALYSISTASKCHARGEDJETSHADRONCF_H
2 #define ALIANALYSISTASKCHARGEDJETSHADRONCF_H
3 /* Copyright(c) 1998-2016, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice */
5 
6 class THn;
7 
8 //###############################################################################################################################################3
18 //
20 {
21  public:
23  AliChargedJetsHadronCFCuts(const char* cutName, const char* outputName, Double_t minPt, Double_t maxPt, Double_t minCent, Double_t maxCent, Double_t lowerOffset, Double_t offset2D, Double_t slope2D)
24  {
25  fCutName = cutName;
26  fOutputName = outputName;
27  fPtMin = minPt;
28  fPtMax = maxPt;
29  fCentMin = minCent;
30  fCentMax = maxCent;
31 
32  fCutLowerPercentageOffset = lowerOffset;
33  fCut2DOffset = offset2D;
34  fCut2DSlope = slope2D;
35 
36  fAcceptedJets = 0;
37  fArrayIndex = -1;
38  }
40  {
41  // Simple kinematic cuts
42  if(pt < fPtMin || pt >= fPtMax)
43  return kFALSE;
44  if(cent < fCentMin || cent >= fCentMax)
45  return kFALSE;
46 
47  // Lower MC percentage cut
48  if(ptRatio < fCutLowerPercentageOffset)
49  return kFALSE;
50 
51  // Value of the 2D cut line. We cut everything above that
52  Double_t cutLineValue = fCut2DSlope*mcPt + fCut2DOffset;
53  if(ptRatio > cutLineValue)
54  return kFALSE;
55 
56  return kTRUE;
57  }
58 
66 
70 
73 };
74 
75 //###############################################################################################################################################3
76 
88 //
90  public:
91 
93  AliAnalysisTaskChargedJetsHadronCF(const char *name);
95 
97  void Terminate(Option_t *option);
98 
99  // ######### SETTERS/GETTERS
100  void ActivateJetEmbedding(const char* embArray, const char* embTrackArray, Double_t maxDistance, Int_t numMatchedJets)
101  {
102  fJetEmbeddingMaxDistance = maxDistance;
103  fJetEmbeddingArrayName = embArray;
104  fJetEmbeddingTrackArrayName = embTrackArray;
105  fJetEmbeddingNumMatchedJets = numMatchedJets;
106  }
107  void ActivateJetVetoInEmbedding(const char* vetoArray, Double_t jetVetoMinPt, Double_t jetVetoMaxPt, Bool_t jetVetoJetByJet)
108  {
109  fJetVetoArrayName = vetoArray;
110  fJetVetoMinPt = jetVetoMinPt;
111  fJetVetoMaxPt = jetVetoMaxPt;
112  fJetVetoJetByJet = jetVetoJetByJet;
113  }
114  void AddJetEmbeddingCut(const char* cutName, const char* outputName, Double_t minPt, Double_t maxPt, Double_t minCent, Double_t maxCent, Double_t lowerOffset, Double_t offset2D, Double_t slope2D)
115  {
116  AliChargedJetsHadronCFCuts tmpCut(cutName, outputName, minPt, maxPt, minCent, maxCent, lowerOffset, offset2D, slope2D);
117  fJetEmbeddingCuts.push_back(tmpCut);
118  }
119 
124  void SetJetParticleArrayName(const char* name) { fJetParticleArrayName = name; }
125  void SetTrackParticleArrayName(const char* name) { fTrackParticleArrayName = name; }
126 
129 
130  void ActivateJetExtraction(Double_t percentage, Double_t minPt, Double_t maxPt) {fExtractionPercentage = percentage; fExtractionMinPt = minPt; fExtractionMaxPt = maxPt;}
131  void ActivateEventExtraction(Double_t percentage, Double_t minJetPt, Double_t maxJetPt) {fEventExtractionPercentage = percentage; fEventExtractionMinJetPt = minJetPt; fEventExtractionMaxJetPt = maxJetPt;}
132 
133  protected:
134  void ExecOnce();
135  Bool_t Run();
136 
137  // ######### META FUNCTIONS
138  void BinLogAxis(const THn *h, Int_t axisNumber);
139  void AddJetToTree(AliEmcalJet* jet);
140  void AddEventToTree();
141  void AddJetToOutputArray(AliEmcalJet* jet);
142  void AddTrackToOutputArray(AliVTrack* track);
143  void FillHistogramsTracks(AliVTrack* track);
144  void FillHistogramsJets(AliEmcalJet* jet, const char* cutName);
146 
157 
160  std::vector<TClonesArray*> fJetsOutput;
161  TClonesArray *fTracksOutput;
164  TClonesArray *fJetEmbeddingArray;
171  std::vector<AliChargedJetsHadronCFCuts> fJetEmbeddingCuts;
172 
173  TClonesArray *fJetVetoArray;
178  std::vector<AliEmcalJet*> fMatchedJets;
179  std::vector<AliEmcalJet*> fMatchedJetsReference;
180  TRandom3* fRandom;
181 
182 
183  // Criteria for the selection of jets that are passed to the correlation task
186 
187  // Event properties
194 
195  // ######### HISTOGRAM FUNCTIONS
196  void FillHistogram(const char * key, Double_t x);
197  void FillHistogram(const char * key, Double_t x, Double_t y);
198  void FillHistogram(const char * key, Double_t x, Double_t y, Double_t add);
199  void FillHistogram3D(const char * key, Double_t x, Double_t y, Double_t z, Double_t add = 0);
200 
201  template <class T> T* AddHistogram1D(const char* name = "CustomHistogram", const char* title = "NO_TITLE", const char* options = "", Int_t xBins = 100, Double_t xMin = 0.0, Double_t xMax = 20.0, const char* xTitle = "x axis", const char* yTitle = "y axis");
202  template <class T> T* AddHistogram2D(const char* name = "CustomHistogram", const char* title = "NO_TITLE", const char* options = "", Int_t xBins = 100, Double_t xMin = 0.0, Double_t xMax = 20.0, Int_t yBins = 100, Double_t yMin = 0.0, Double_t yMax = 20.0, const char* xTitle = "x axis", const char* yTitle = "y axis", const char* zTitle = "z axis");
203  template <class T> T* AddHistogram3D(const char* name = "CustomHistogram", const char* title = "NO_TITLE", const char* options = "", Int_t xBins = 100, Double_t xMin = 0.0, Double_t xMax = 20.0, Int_t yBins = 100, Double_t yMin = 0.0, Double_t yMax = 20.0, Int_t zBins = 100, Double_t zMin = 0.0, Double_t zMax = 20.0, const char* xTitle = "x axis", const char* yTitle = "y axis", const char* zTitle = "z axis");
204 
205  // ######### HELPER FUNCTIONS
206  void GetTrackMCRatios(AliEmcalJet* jet, AliEmcalJet* mcJet, Double_t& trackRatio, Double_t& ptRatio);
209  Bool_t IsTrackInCone(AliVParticle* track, Double_t eta, Double_t phi, Double_t radius);
211  void GetMatchingJets();
212 
213  void GetLeadingJets(const char* opt, AliEmcalJet*& jetLeading, AliEmcalJet*& jetSubLeading);
214  void GetLeadingJetsInArray(TClonesArray* arr, const char* opt, AliEmcalJet*& jetLeading, AliEmcalJet*& jetSubLeading);
216 
217 
218  private:
221 
223  ClassDef(AliAnalysisTaskChargedJetsHadronCF, 8) // Charged jet+h analysis support task
225 };
226 
227 
228 //###############################################################################################################################################3
229 
239 //
241 {
242  public:
243  AliBasicJetConstituent() : fEta(0), fPhi(0), fpT(0), fCharge(0), fPID(0) {}
245  : fEta(eta), fPhi(phi), fpT(pt), fCharge(charge), fPID(pid)
246  {
247  }
249 
250  Double_t Pt() { return fpT; }
251  Double_t Phi() { return fPhi; }
252  Double_t Eta() { return fEta; }
253  Short_t Charge() { return fCharge; }
254  Short_t PID() { return fPID; }
255 
256  private:
262 };
263 
264 //###############################################################################################################################################3
275 //
277 {
278  public:
280  AliBasicJet(Float_t eta, Float_t phi, Float_t pt, Short_t charge, Float_t radius, Float_t area, Float_t partid, Float_t bgrd, Float_t magfield, Float_t vtxX, Float_t vtxY, Float_t vtxZ, Long64_t id, Short_t cent)
281  : fEta(eta), fPhi(phi), fpT(pt), fCharge(charge), fRadius(radius), fArea(area), fPDGCode(partid), fBackgroundDensity(bgrd), fMagneticField(magfield), fVertexX(vtxX), fVertexY(vtxY), fVertexZ(vtxZ), fEventID(id), fCentrality(cent), fConstituents()
282  {}
283  ~AliBasicJet();
284 
285  // Basic jet properties
286  Double_t Pt() { return fpT; }
287  Double_t TruePt() { return fTruepT; }
288  Double_t Phi() { return fPhi; }
289  Double_t Eta() { return fEta; }
290  Short_t Charge() { return fCharge; }
291  Double_t Radius() { return fRadius; }
292  Double_t Area() { return fArea; }
293  Int_t PDGCode() { return fPDGCode; }
296  Double_t VertexX() { return fVertexX; }
297  Double_t VertexY() { return fVertexY; }
298  Double_t VertexZ() { return fVertexZ; }
299  Long64_t EventID() { return fEventID; }
302 
303  // Basic constituent functions
306  {
307  AliBasicJetConstituent c (eta, phi, pt, charge, pid);
308  AddJetConstituent(&c);
309  }
310  void AddJetConstituent(AliBasicJetConstituent* constituent) {fConstituents.push_back(*constituent); }
311  void SetTruePt(Double_t val) {fTruepT = val;}
312 
313 
314  private:
330 
331  std::vector<AliBasicJetConstituent> fConstituents;
332 
333 };
334 
335 
336 #endif
Int_t charge
Int_t fArrayIndex
array index that holds the output array index
AliBasicJet(Float_t eta, Float_t phi, Float_t pt, Short_t charge, Float_t radius, Float_t area, Float_t partid, Float_t bgrd, Float_t magfield, Float_t vtxX, Float_t vtxY, Float_t vtxZ, Long64_t id, Short_t cent)
Double_t fEventExtractionMaxJetPt
maximum jet pt of recorded events
double Double_t
Definition: External.C:58
Double_t fPtMin
valid for jets above this pT
Bool_t fJetVetoJetByJet
If true, the jet veto will be applied on a jet-by-jet basis.
T * AddHistogram1D(const char *name="CustomHistogram", const char *title="NO_TITLE", const char *options="", Int_t xBins=100, Double_t xMin=0.0, Double_t xMax=20.0, const char *xTitle="x axis", const char *yTitle="y axis")
const char * title
Definition: MakeQAPdf.C:26
void GetLeadingJets(const char *opt, AliEmcalJet *&jetLeading, AliEmcalJet *&jetSubLeading)
std::vector< AliChargedJetsHadronCFCuts > fJetEmbeddingCuts
Cuts used in jet embedding.
Double_t fCentMax
valid for centralities below
AliBasicJetConstituent(Float_t eta, Float_t phi, Float_t pt, Short_t charge, Short_t pid)
long long Long64_t
Definition: External.C:43
AliBasicJetConstituent * GetJetConstituent(Int_t index)
void * fJetsTreeBuffer
! buffer for one jet (that will be saved to the tree)
Container with name, TClonesArray and cuts for particles.
Support task for (charged) jet-hadron correlations.
Int_t fPythiaExtractionMode
Mode which PYTHIA-jets to extract for fJetOutputMode==6: 0: all, 1: quark-jets, 2: gluon jets...
AliChargedJetsHadronCFCuts(const char *cutName, const char *outputName, Double_t minPt, Double_t maxPt, Double_t minCent, Double_t maxCent, Double_t lowerOffset, Double_t offset2D, Double_t slope2D)
TCanvas * c
Definition: TestFitELoss.C:172
void AddJetConstituent(AliBasicJetConstituent *constituent)
Int_t fJetOutputMode
mode which jets are written to array (0: all accepted, 1: leading, 2: subleading, 3: leading+subleadi...
Double_t fEventExtractionMinJetPt
minimum jet pt of recorded events
std::vector< AliEmcalJet * > fMatchedJetsReference
Jets matched in an event (reference)
Double_t fEventExtractionPercentage
percentage of events that is recorded
Simple class containing basic information for a constituent.
std::vector< TClonesArray * > fJetsOutput
! vector of arrays of basic correlation particles attached to the event (jets)
Float_t fBackgroundDensity
background
AliEmcalJet * fSubleadingJet
! subleading jet (calculated event-by-event)
Double_t fCentMin
valid for centralities above
Simple class containing basic information for a jet.
void FillHistogram3D(const char *key, Double_t x, Double_t y, Double_t z, Double_t add=0)
Container class of cuts for AliAnalysisTaskChargedJetsHadronCF.
UShort_t T(UShort_t m, UShort_t t)
Definition: RingBits.C:60
void GetLeadingJetsInArray(TClonesArray *arr, const char *opt, AliEmcalJet *&jetLeading, AliEmcalJet *&jetSubLeading)
TClonesArray * fJetEmbeddingArray
! Array of generated jets imported into task (for embedding)
void GetTrackMCRatios(AliEmcalJet *jet, AliEmcalJet *mcJet, Double_t &trackRatio, Double_t &ptRatio)
void AddJetConstituent(Float_t eta, Float_t phi, Float_t pt, Short_t charge, Short_t pid=0)
Float_t fVertexX
event vertex X
Long64_t fEventID
Unique event id.
int Int_t
Definition: External.C:63
TString fJetParticleArrayName
Name of fJetsOutput array (if one uses only one)
float Float_t
Definition: External.C:68
T * AddHistogram3D(const char *name="CustomHistogram", const char *title="NO_TITLE", const char *options="", Int_t xBins=100, Double_t xMin=0.0, Double_t xMax=20.0, Int_t yBins=100, Double_t yMin=0.0, Double_t yMax=20.0, Int_t zBins=100, Double_t zMin=0.0, Double_t zMax=20.0, const char *xTitle="x axis", const char *yTitle="y axis", const char *zTitle="z axis")
TString fJetEmbeddingArrayName
Name of array used to match jets.
Int_t fNumberOfCentralityBins
Number of centrality bins.
std::vector< AliEmcalJet * > fMatchedJets
Jets matched in an event (embedded)
TString fJetEmbeddingTrackArrayName
Name of array used to match tracks of jets.
Float_t fVertexY
event vertex Y
Int_t fPDGCode
PDG code of source particle.
Double_t fExtractionPercentage
percentage that is recorded
Double_t fJetVetoMinPt
Min pt cut applied on the fJetVetoArray jets.
Double_t fJetVetoMaxPt
Max pt cut applied on the fJetVetoArray jets.
TString fTrackParticleArrayName
Name of fTracksOutput array.
Int_t mode
Definition: anaM.C:40
TClonesArray * fTracksOutput
! Array of basic correlation particles attached to the event (tracks)
AliEmcalJet * fLeadingJet
! leading jet (calculated event-by-event)
Double_t fExtractionMinPt
minimum pt of recorded jets
Double_t fPtMax
valid for jets below this pT
void ActivateJetEmbedding(const char *embArray, const char *embTrackArray, Double_t maxDistance, Int_t numMatchedJets)
short Short_t
Definition: External.C:23
Float_t fMagneticField
event magnetic field
TTree * fJetsTree
! Jets that will be saved to a tree (optionally)
Bool_t IsTrackInCone(AliVParticle *track, Double_t eta, Double_t phi, Double_t radius)
Bool_t fJetEmbeddingUsePerTrackMCPercentage
When cutting on MC percentage, calculate it per track and not for all MC tracks.
Int_t fAcceptedJets
temporary var that holds how many jets passed
void ActivateJetVetoInEmbedding(const char *vetoArray, Double_t jetVetoMinPt, Double_t jetVetoMaxPt, Bool_t jetVetoJetByJet)
TString fJetVetoArrayName
Name of array used for veto jets.
Short_t fPID
most probably PID code/PDG code
Int_t fJetEmbeddingNumMatchedJets
Number of matched leading jets that will be used.
AliEmcalJet * fInitialPartonMatchedJet1
! On PYTHIA data and fJetOutputMode=6, this holds the PDG code of the initial collisions that was mat...
AliEmcalJet * fInitialPartonMatchedJet2
! On PYTHIA data and fJetOutputMode=6, this holds the PDG code of the initial collisions that was mat...
TString fOutputName
array name that is used to output objects associated with this cuts
std::vector< AliBasicJetConstituent > fConstituents
vector of constituents
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
Definition: AliEmcalJet.h:44
Bool_t fJetEmbeddingUseBgrdForMCPercentage
When cutting on MC percentage, use bgrd. corr to calculate MC percentage.
AliAnalysisTaskChargedJetsHadronCF & operator=(const AliAnalysisTaskChargedJetsHadronCF &)
const char Option_t
Definition: External.C:48
void ActivateEventExtraction(Double_t percentage, Double_t minJetPt, Double_t maxJetPt)
Double_t fExtractionMaxPt
maximum pt of recorded jets
void AddJetEmbeddingCut(const char *cutName, const char *outputName, Double_t minPt, Double_t maxPt, Double_t minCent, Double_t maxCent, Double_t lowerOffset, Double_t offset2D, Double_t slope2D)
Bool_t IsCutFulfilled(Double_t pt, Double_t mcPt, Double_t cent, Double_t ptRatio)
bool Bool_t
Definition: External.C:53
Double_t fJetEmbeddingMaxDistance
Max distance allowed to accept an embedded jet.
void FillHistogramsJets(AliEmcalJet *jet, const char *cutName)
void ActivateJetExtraction(Double_t percentage, Double_t minPt, Double_t maxPt)
Int_t fAcceptedJets
! number accepted jets (calculated event-by-event)
T * AddHistogram2D(const char *name="CustomHistogram", const char *title="NO_TITLE", const char *options="", Int_t xBins=100, Double_t xMin=0.0, Double_t xMax=20.0, Int_t yBins=100, Double_t yMin=0.0, Double_t yMax=20.0, const char *xTitle="x axis", const char *yTitle="y axis", const char *zTitle="z axis")
Container for jet within the EMCAL jet framework.
TClonesArray * fJetVetoArray
! Array of jets imported into task used for veto a matching/embedding
Int_t fAcceptedTracks
! number accepted tracks (calculated event-by-event)
Float_t fVertexZ
event vertex Z
Float_t fTruepT
true pT (optional, e.g. from matching)
Int_t fConstPtFilterBit
For const pt plot, filter bit.