class TClonesArray;
class AliVEvent;
+class AliRhoParameter;
namespace fastjet {
class PseudoJet;
#include "AliLog.h"
#include "AliAnalysisTaskSE.h"
+#include "AliFJWrapper.h"
+#include "AliAODMCParticle.h"
class AliEmcalJetTask : public AliAnalysisTaskSE {
public:
void UserExec(Option_t *option);
void Terminate(Option_t *option);
+ Bool_t IsLocked() { if(fLocked) {AliFatal("Jet finder task is locked! Changing properties is not allowed."); return kTRUE;} else return kFALSE;};
+ void SetLocked() { fLocked = kTRUE;}
void SelectConstituents(UInt_t constSel, UInt_t MCconstSel) { fConstSel = constSel; fMCConstSel = MCconstSel; };
- void SetAlgo(Int_t a) { if (a==0) fJetType |= kKT; else fJetType |= kAKT; } // for backward compatibility only
- void SetClusName(const char *n) { fCaloName = n ; }
- void SetJetsName(const char *n) { fJetsName = n ; }
- void SetJetType(UInt_t t) { fJetType = t ; }
- void SetMarkConstituents(UInt_t m) { fMarkConst = m ; }
- void SetMinJetArea(Double_t a) { fMinJetArea = a ; }
- void SetMinJetClusPt(Double_t min) { fMinJetClusPt = min ; }
- void SetMinJetPt(Double_t j) { fMinJetPt = j ; }
- void SetMinJetTrackPt(Double_t min) { fMinJetTrackPt = min ; }
- 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)."); }
- void SetTrackEfficiency(Double_t t) { fTrackEfficiency = t ; }
- void SetTracksName(const char *n) { fTracksName = n ; }
- void SetType(Int_t t) { if (t==0) fJetType |= kFullJet;
+ void SetAlgo(Int_t a) { if(IsLocked()) return; if (a==0) fJetType |= kKT; else fJetType |= kAKT; } // for backward compatibility only
+ void SetClusName(const char *n) { if(IsLocked()) return; fCaloName = n ; }
+ void SetJetsName(const char *n) { if(IsLocked()) return; fJetsName = n ; }
+ void SetJetsSubName(const char *n) { fJetsSubName = n ; }
+ void SetJetType(UInt_t t) { if(IsLocked()) return; fJetType = t ; }
+ void SetMarkConstituents(UInt_t m) { if(IsLocked()) return; fMarkConst = m ; }
+ void SetMinJetArea(Double_t a) { if(IsLocked()) return; fMinJetArea = a ; }
+ void SetMinJetClusPt(Double_t min) { if(IsLocked()) return; fMinJetClusPt = min ; }
+ void SetMinJetPt(Double_t j) { if(IsLocked()) return; fMinJetPt = j ; }
+ void SetMinJetTrackPt(Double_t min) { if(IsLocked()) return; fMinJetTrackPt = min ; }
+ void SetRadius(Double_t r) { if(IsLocked()) return; 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)."); }
+ void SetTrackEfficiency(Double_t t) { if(IsLocked()) return; fTrackEfficiency = t ; }
+ void SetTracksName(const char *n) { if(IsLocked()) return; fTracksName = n ; }
+ void SetType(Int_t t) { if(IsLocked()) return;
+ if (t==0) fJetType |= kFullJet;
else if (t==1) fJetType |= kChargedJet;
else if (t==2) fJetType |= kNeutralJet; } // for backward compatibility only
- void SetEtaRange(Double_t emi, Double_t ema) {fEtaMin = emi; fEtaMax = ema; }
- void SetPhiRange(Double_t pmi, Double_t pma) {fPhiMin = pmi; fPhiMax = pma; }
- void SetJetEtaRange(Double_t emi, Double_t ema) {fJetEtaMin = emi; fJetEtaMax = ema; }
- void SetJetPhiRange(Double_t pmi, Double_t pma) {fJetPhiMin = pmi; fJetPhiMax = pma; }
- void SetGhostArea(Double_t gharea) { fGhostArea = gharea; }
- void SetMinMCLabel(Int_t s) { fMinMCLabel = s ; }
- void SetRecombScheme(Int_t scheme) { fRecombScheme = scheme; }
+ void SetEtaRange(Double_t emi, Double_t ema) {if(IsLocked()) return; fEtaMin = emi; fEtaMax = ema; }
+ void SetPhiRange(Double_t pmi, Double_t pma) {if(IsLocked()) return; fPhiMin = pmi; fPhiMax = pma; }
+ void SetJetEtaRange(Double_t emi, Double_t ema) {if(IsLocked()) return; fJetEtaMin = emi; fJetEtaMax = ema; }
+ void SetJetPhiRange(Double_t pmi, Double_t pma) {if(IsLocked()) return; fJetPhiMin = pmi; fJetPhiMax = pma; }
+ void SetGhostArea(Double_t gharea) { if(IsLocked()) return; fGhostArea = gharea; }
+ void SetMinMCLabel(Int_t s) { if(IsLocked()) return; fMinMCLabel = s ; }
+ void SetRecombScheme(Int_t scheme) { if(IsLocked()) return; fRecombScheme = scheme; }
void SelectCollisionCandidates(UInt_t offlineTriggerMask = AliVEvent::kMB)
{
if(!fIsPSelSet)
fOfflineTriggerMask = fOfflineTriggerMask | offlineTriggerMask;
}
}
- void SetLegacyMode(Bool_t mode) { fLegacyMode ^= mode; }
+ void SetLegacyMode(Bool_t mode) { if(IsLocked()) return; fLegacyMode = mode; }
+ void SetMCFlag(UInt_t m) { if(IsLocked()) return; fMCFlag = m ; }
+ void SelectHIJING(Bool_t s) { if(IsLocked()) return; if (s) fGeneratorIndex = 0; else fGeneratorIndex = -1; }
+ void SetGeneratorIndex(Short_t i) { if(IsLocked()) return; fGeneratorIndex = i; }
+ void SelectPhysicalPrimaries(Bool_t s) { if(IsLocked()) return;
+ if (s) fMCFlag |= AliAODMCParticle::kPhysicalPrim ;
+ else fMCFlag &= ~AliAODMCParticle::kPhysicalPrim ; }
+
void SetCodeDebug(Bool_t val) { fCodeDebug = val; }
+ void SetRhoName(const char *n) { fRhoName = n ; }
+ void SetRhomName(const char *n) { fRhomName = n ; }
+ void SetGenericSubtractionJetMass(Bool_t b) { fDoGenericSubtractionJetMass = b; }
+ void SetGenericSubtractionGR(Bool_t b, Double_t rmax = 2., Double_t dr = 0.04, Double_t ptmin = 0.) { fDoGenericSubtractionGR = b; fRMax=rmax; fDRStep=dr; fPtMinGR=ptmin;}
+ void SetConstituentSubtraction(Bool_t b) { fDoConstituentSubtraction = b; }
+ void SetUseExternalBkg(Bool_t b, Double_t rho, Double_t rhom) { fUseExternalBkg = b; fRho = rho; fRhom = rhom;}
+
UInt_t GetJetType() { return fJetType; }
Bool_t GetLegacyMode() { return fLegacyMode; }
+ TString GetJetsSubName() { return fJetsSubName; }
const char* GetJetsName() { return fJetsName.Data(); }
Double_t GetRadius() { return fRadius; }
const char* GetTracksName() { return fTracksName.Data(); }
const char* GetClusName() { return fCaloName.Data(); }
+ const char* GetRhoName() { return fRhoName.Data(); }
UInt_t GetMarkConstituents() { return fMarkConst; }
Double_t GetMinJetArea() { return fMinJetArea; }
Double_t GetMinJetClusPt() { return fMinJetClusPt; }
TString fTracksName; // name of track collection
TString fCaloName; // name of calo cluster collection
TString fJetsName; // name of jet collection
+ TString fJetsSubName; // name of subtracted jet collection
UInt_t fJetType; // jet type (algorithm, radius, constituents)
UInt_t fConstSel; // select constituents from a previous jet finding
UInt_t fMCConstSel; // select MC constituents (label!=0) from a previous jet finding
Int_t fMinMCLabel; // minimum MC label value for the tracks/clusters being considered MC particles
Int_t fRecombScheme; // recombination scheme used by fastjet
Double_t fTrackEfficiency; // artificial tracking inefficiency (0...1)
+ UInt_t fMCFlag; // select MC particles with flags
+ Short_t fGeneratorIndex; // select MC particles with generator index (default = -1 = switch off selection)
Bool_t fIsInit; //!=true if already initialized
+ Bool_t fLocked; // true if lock is set
Bool_t fIsPSelSet; //!=true if physics selection was set
Bool_t fIsMcPart; //!=true if MC particles are given as input
Bool_t fIsEmcPart; //!=true if emcal particles are given as input (for clusters)
Bool_t fLegacyMode; //! if true, enable FJ 2.x behavior
Bool_t fCodeDebug; // use nontested code changes
+
+ Bool_t fDoGenericSubtractionJetMass; // calculate generic subtraction
+ Bool_t fDoGenericSubtractionGR; // calculate generic subtraction for angular structure function GR
+ Bool_t fDoConstituentSubtraction; // calculate constituent subtraction
+ Bool_t fUseExternalBkg; // use external background for generic subtractor
+ TString fRhoName; // name of rho
+ TString fRhomName; // name of rhom
+ Double_t fRho; // pT background density
+ Double_t fRhom; // mT background density
+ Double_t fRMax; // R max for GR calculation
+ Double_t fDRStep; // step width for GR calculation
+ Double_t fPtMinGR; // min pT for GR calculation
+
+
TClonesArray *fJets; //!jet collection
+ TClonesArray *fJetsSub; //!subtracted jet collection
AliVEvent *fEvent; //!current event
TClonesArray *fTracks; //!tracks collection
TClonesArray *fClus; //!cluster collection
+ AliRhoParameter *fRhoParam; //!event rho
+ AliRhoParameter *fRhomParam; //!event rhom
private:
AliEmcalJetTask(const AliEmcalJetTask&); // not implemented
AliEmcalJetTask &operator=(const AliEmcalJetTask&); // not implemented
- ClassDef(AliEmcalJetTask, 11) // Jet producing task
+ ClassDef(AliEmcalJetTask, 15) // Jet producing task
};
#endif