fParticleMaxPhi(10),
fTrackBitMap(0),
fMCTrackBitMap(0),
- fMinMCLabel(0)
+ fMinMCLabel(0),
+ fMCFlag(0),
+ fGeneratorIndex(-1)
{
// Default constructor.
fParticleMaxPhi(10),
fTrackBitMap(0),
fMCTrackBitMap(0),
- fMinMCLabel(0)
+ fMinMCLabel(0),
+ fMCFlag(0),
+ fGeneratorIndex(-1)
{
// Standard constructor.
return GetAcceptParticle(i);
}
+
//________________________________________________________________________
AliVParticle* AliParticleContainer::GetNextAcceptParticle(Int_t i)
{
if (vp->Eta() < fParticleMinEta || vp->Eta() > fParticleMaxEta ||
vp->Phi() < fParticleMinPhi || vp->Phi() > fParticleMaxPhi)
return kFALSE;
+
+ if ((vp->GetFlag() & fMCFlag) != fMCFlag)
+ return kFALSE;
+
+ if (fGeneratorIndex >= 0 && fGeneratorIndex != vp->GetGeneratorIndex())
+ return kFALSE;
return kTRUE;
}
class AliVEvent;
class AliVParticle;
+#include "AliAODMCParticle.h"
+
#include "AliEmcalContainer.h"
class AliParticleContainer : public AliEmcalContainer {
void SetParticleEtaLimits(Double_t min, Double_t max) { fParticleMaxEta = max ; fParticleMinEta = min ; }
void SetParticlePhiLimits(Double_t min, Double_t max) { fParticleMaxPhi = max ; fParticleMinPhi = min ; }
void SetTrackBitMap(UInt_t m) { fTrackBitMap = m ; }
+ void SetMCFlag(UInt_t m) { fMCFlag = m ; }
+ void SelectHIJING(Bool_t s) { if (s) fGeneratorIndex = 0; else fGeneratorIndex = -1; }
+ void SetGeneratorIndex(Short_t i) { fGeneratorIndex = i ; }
+ void SelectPhysicalPrimaries(Bool_t s) { if (s) fMCFlag |= AliAODMCParticle::kPhysicalPrim ;
+ else fMCFlag &= ~AliAODMCParticle::kPhysicalPrim ; }
protected:
Double_t fParticlePtCut; // cut on particle pt
UInt_t fTrackBitMap; // bit map of accepted tracks (non MC)
UInt_t fMCTrackBitMap; // bit map of accepted MC tracks
Int_t fMinMCLabel; // minimum MC label value for the tracks/clusters being considered MC particles
+ UInt_t fMCFlag; // select MC particles with flags
+ Short_t fGeneratorIndex; // select MC particles with generator index (default = -1 = switch off selection)
private:
AliParticleContainer(const AliParticleContainer& obj); // copy constructor
AliParticleContainer& operator=(const AliParticleContainer& other); // assignment
- ClassDef(AliParticleContainer,1);
+ ClassDef(AliParticleContainer,2);
};
fMinMCLabel(0),
fRecombScheme(fastjet::pt_scheme),
fTrackEfficiency(1.),
+ fMCFlag(0),
+ fGeneratorIndex(-1),
fIsInit(0),
fLocked(0),
fIsPSelSet(0),
fMinMCLabel(0),
fRecombScheme(fastjet::pt_scheme),
fTrackEfficiency(1.),
+ fMCFlag(0),
+ fGeneratorIndex(-1),
fIsInit(0),
fLocked(0),
fIsPSelSet(0),
else {
AliDebug(2,Form("Track %d matches the bit mask (%d, %d)", iTracks, fConstSel, t->TestBits(TObject::kBitMask)));
}
- }
+ }
+ if ((t->GetFlag() & fMCFlag) != fMCFlag) {
+ AliDebug(2,Form("Skipping track %d because it does not match the MC flags", iTracks));
+ continue;
+ }
+ if (fGeneratorIndex >= 0 && t->GetGeneratorIndex() != fGeneratorIndex) {
+ AliDebug(2,Form("Skipping track %d because it does not match the MC generator index", iTracks));
+ continue;
+ }
if (t->Pt() < fMinJetTrackPt)
continue;
Double_t eta = t->Eta();
#include "AliLog.h"
#include "AliAnalysisTaskSE.h"
#include "AliFJWrapper.h"
+#include "AliAODMCParticle.h"
class AliEmcalJetTask : public AliAnalysisTaskSE {
public:
fOfflineTriggerMask = fOfflineTriggerMask | offlineTriggerMask;
}
}
- void SetLegacyMode(Bool_t mode) { if(IsLocked()) return; 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 ; }
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
AliEmcalJetTask(const AliEmcalJetTask&); // not implemented
AliEmcalJetTask &operator=(const AliEmcalJetTask&); // not implemented
- ClassDef(AliEmcalJetTask, 13) // Jet producing task
+ ClassDef(AliEmcalJetTask, 14) // Jet producing task
};
#endif
AliParticleContainer *trackCont2 = jetTask->AddParticleContainer(ntracks2);
+ trackCont2->SelectPhysicalPrimaries(kTRUE);
AliClusterContainer *clusCont2 = jetTask->AddClusterContainer(nclusters2);
AliJetContainer *jetCont2 = jetTask->AddJetContainer(njets2, cutType, jetradius2);
jetCont2->SetRhoName(nrho2);