]>
Commit | Line | Data |
---|---|---|
914d486c | 1 | #ifndef ALIEMCALJETTASK_H |
2 | #define ALIEMCALJETTASK_H | |
48d874ff | 3 | |
4 | // $Id$ | |
5 | ||
6 | class TClonesArray; | |
b65fac7a | 7 | class AliVEvent; |
48d874ff | 8 | |
7030f36f | 9 | namespace fastjet { |
10 | class PseudoJet; | |
11 | } | |
12 | ||
d14d6e2c | 13 | #include "AliLog.h" |
48d874ff | 14 | #include "AliAnalysisTaskSE.h" |
15 | ||
914d486c | 16 | class AliEmcalJetTask : public AliAnalysisTaskSE { |
48d874ff | 17 | public: |
6a20534a | 18 | |
19 | enum JetType { | |
20 | kNone=0, | |
21 | kKT=1<<0, | |
22 | kAKT=1<<1, | |
23 | kFullJet=1<<2, | |
24 | kChargedJet=1<<3, | |
25 | kNeutralJet=1<<4, | |
26 | kR020Jet=1<<5, | |
27 | kR030Jet=1<<6, | |
28 | kR040Jet=1<<7, | |
29 | kRX1Jet=1<<8, // user defined radii, use SetRadius(Double_t) | |
30 | kRX2Jet=1<<9, | |
d1f2e0d9 | 31 | kRX3Jet=1<<10 |
6a20534a | 32 | }; |
33 | ||
34 | ||
914d486c | 35 | AliEmcalJetTask(); |
36 | AliEmcalJetTask(const char *name); | |
37 | virtual ~AliEmcalJetTask(); | |
48d874ff | 38 | |
b65fac7a | 39 | void UserCreateOutputObjects(); |
40 | void UserExec(Option_t *option); | |
41 | void Terminate(Option_t *option); | |
42 | ||
6a20534a | 43 | void SelectConstituents(UInt_t constSel, UInt_t MCconstSel) { fConstSel = constSel; fMCConstSel = MCconstSel; }; |
44 | void SetAlgo(Int_t a) { if (a==0) fJetType |= kKT; else fJetType |= kAKT; } // for backward compatibility only | |
b65fac7a | 45 | void SetClusName(const char *n) { fCaloName = n ; } |
46 | void SetJetsName(const char *n) { fJetsName = n ; } | |
6a20534a | 47 | void SetJetType(UInt_t t) { fJetType = t ; } |
7030f36f | 48 | void SetMarkConstituents(UInt_t m) { fMarkConst = m ; } |
b65fac7a | 49 | void SetMinJetArea(Double_t a) { fMinJetArea = a ; } |
111318e8 | 50 | void SetMinJetClusPt(Double_t min) { fMinJetClusPt = min ; } |
b65fac7a | 51 | void SetMinJetPt(Double_t j) { fMinJetPt = j ; } |
111318e8 | 52 | void SetMinJetTrackPt(Double_t min) { fMinJetTrackPt = min ; } |
6a20534a | 53 | void SetRadius(Double_t r) { fRadius = r ; if ((fJetType & (kRX1Jet|kRX2Jet|kRX3Jet)) == 0) AliWarning("Radius value will be ignored if jet type is not set to a user defined radius (kRX1Jet,kRX2Jet,kRX3Jet)."); } |
111318e8 | 54 | void SetTracksName(const char *n) { fTracksName = n ; } |
6a20534a | 55 | void SetType(Int_t t) { if (t==0) fJetType |= kFullJet; |
56 | else if (t==1) fJetType |= kChargedJet; | |
57 | else if (t==2) fJetType |= kNeutralJet; } // for backward compatibility only | |
04905231 | 58 | void SetEtaRange(Double_t emi, Double_t ema) {fEtaMin = emi; fEtaMax = ema; } |
59 | void SetPhiRange(Double_t pmi, Double_t pma) {fPhiMin = pmi; fPhiMax = pma; } | |
c9ad772c | 60 | void SetJetEtaRange(Double_t emi, Double_t ema) {fJetEtaMin = emi; fJetEtaMax = ema; } |
61 | void SetJetPhiRange(Double_t pmi, Double_t pma) {fJetPhiMin = pmi; fJetPhiMax = pma; } | |
1f9c287f | 62 | void SetGhostArea(Double_t gharea) { fGhostArea = gharea; } |
a7477843 | 63 | void SetMinMCLabel(Int_t s) { fMinMCLabel = s ; } |
d14d6e2c | 64 | void SelectCollisionCandidates(UInt_t offlineTriggerMask = AliVEvent::kMB) |
65 | { | |
66 | if(!fIsPSelSet) | |
67 | { | |
68 | fIsPSelSet = kTRUE; | |
69 | fOfflineTriggerMask = offlineTriggerMask; | |
70 | } | |
71 | else | |
72 | { | |
73 | AliWarning("Manually setting the event selection for jet finders is not allowed! Using trigger=old_trigger | your_trigger"); | |
74 | fOfflineTriggerMask = fOfflineTriggerMask | offlineTriggerMask; | |
75 | } | |
76 | } | |
6a20534a | 77 | |
78 | UInt_t GetJetType() { return fJetType; } | |
79 | ||
48d874ff | 80 | protected: |
04905231 | 81 | void FindJets(); |
82 | Bool_t DoInit(); | |
ca5c29fa | 83 | Bool_t GetSortedArray(Int_t indexes[], std::vector<fastjet::PseudoJet> array) const; |
48d874ff | 84 | |
900f5135 | 85 | TString fTracksName; // name of track collection |
86 | TString fCaloName; // name of calo cluster collection | |
7efbea04 | 87 | TString fJetsName; // name of jet collection |
6a20534a | 88 | UInt_t fJetType; // jet type (algorithm, radius, constituents) |
89 | UInt_t fConstSel; // select constituents from a previous jet finding | |
90 | UInt_t fMCConstSel; // select MC constituents (label!=0) from a previous jet finding | |
7030f36f | 91 | UInt_t fMarkConst; // constituents are marked (via TObject::SetBit) as belonging to the # leading jets |
48d874ff | 92 | Double_t fRadius; // jet radius |
f5f3c8e9 | 93 | Double_t fMinJetTrackPt; // min jet track momentum (applied before clustering) |
94 | Double_t fMinJetClusPt; // min jet cluster momentum (applied before clustering) | |
04905231 | 95 | Double_t fPhiMin; // minimum phi for constituents (applied before clustering) |
96 | Double_t fPhiMax; // maximum phi for constituents (applied before clustering) | |
97 | Double_t fEtaMin; // minimum eta for constituents (applied before clustering) | |
98 | Double_t fEtaMax; // maximum eta for constituents (applied before clustering) | |
f5f3c8e9 | 99 | Double_t fMinJetArea; // min area to keep jet in output |
100 | Double_t fMinJetPt; // min jet pt to keep jet in output | |
c9ad772c | 101 | Double_t fJetPhiMin; // minimum phi to keep jet in output |
102 | Double_t fJetPhiMax; // maximum phi to keep jet in output | |
103 | Double_t fJetEtaMin; // minimum eta to keep jet in output | |
104 | Double_t fJetEtaMax; // maximum eta to keep jet in output | |
1f9c287f | 105 | Double_t fGhostArea; // ghost area |
a7477843 | 106 | Int_t fMinMCLabel; // minimum MC label value for the tracks/clusters being considered MC particles |
04905231 | 107 | Bool_t fIsInit; //!=true if already initialized |
d14d6e2c | 108 | Bool_t fIsPSelSet; //!=true if physics selection was set |
04905231 | 109 | Bool_t fIsMcPart; //!=true if MC particles are given as input |
110 | Bool_t fIsEmcPart; //!=true if emcal particles are given as input (for clusters) | |
48d874ff | 111 | TClonesArray *fJets; //!jet collection |
b65fac7a | 112 | AliVEvent *fEvent; //!current event |
04905231 | 113 | TClonesArray *fTracks; //!tracks collection |
114 | TClonesArray *fClus; //!cluster collection | |
48d874ff | 115 | |
116 | private: | |
914d486c | 117 | AliEmcalJetTask(const AliEmcalJetTask&); // not implemented |
118 | AliEmcalJetTask &operator=(const AliEmcalJetTask&); // not implemented | |
48d874ff | 119 | |
a7477843 | 120 | ClassDef(AliEmcalJetTask, 9) // Jet producing task |
48d874ff | 121 | }; |
122 | #endif |