44 #ifndef FairEvtFilterOnSingleParticleCounts_H_ 45 #define FairEvtFilterOnSingleParticleCounts_H_ 48 #include "TParticle.h" 58 std::ostream &operator<<(std::ostream &os, const std::vector<Int_t> &
v);
59 std::ostream &operator<<(std::ostream &os, const std::vector<std::pair<Double_t, Double_t>> &vpair);
60 std::ostream &operator<<(std::ostream &os, const std::vector<std::pair<Int_t, Int_t>> &vpair);
61 std::ostream &operator<<(std::ostream &os, const std::map<Int_t, std::vector<Int_t>> &
PdgGroupId);
84 Bool_t
AndMinMaxPdgCodes(Int_t
min, Int_t
max, Int_t pdgCode1, Int_t pdgCode2 = kInvalidPdgCode, Int_t pdgCode3 = kInvalidPdgCode, Int_t pdgCode4 = kInvalidPdgCode,
85 Int_t pdgCode5 = kInvalidPdgCode, Int_t pdgCode6 = kInvalidPdgCode, Int_t pdgCode7 = kInvalidPdgCode, Int_t pdgCode8 = kInvalidPdgCode);
99 Bool_t
AndMinPdgCodes(Int_t min, Int_t pdgCode1, Int_t pdgCode2 = kInvalidPdgCode, Int_t pdgCode3 = kInvalidPdgCode, Int_t pdgCode4 = kInvalidPdgCode,
100 Int_t pdgCode5 = kInvalidPdgCode, Int_t pdgCode6 = kInvalidPdgCode, Int_t pdgCode7 = kInvalidPdgCode, Int_t pdgCode8 = kInvalidPdgCode)
102 return AndMinMaxPdgCodes(min, 9999, pdgCode1, pdgCode2, pdgCode3, pdgCode4, pdgCode5, pdgCode6, pdgCode7, pdgCode8);
110 Bool_t
AndMaxPdgCodes(Int_t max, Int_t pdgCode1, Int_t pdgCode2 = kInvalidPdgCode, Int_t pdgCode3 = kInvalidPdgCode, Int_t pdgCode4 = kInvalidPdgCode,
111 Int_t pdgCode5 = kInvalidPdgCode, Int_t pdgCode6 = kInvalidPdgCode, Int_t pdgCode7 = kInvalidPdgCode, Int_t pdgCode8 = kInvalidPdgCode)
113 return AndMinMaxPdgCodes(0, max, pdgCode1, pdgCode2, pdgCode3, pdgCode4, pdgCode5, pdgCode6, pdgCode7, pdgCode8);
152 Bool_t
AndPzRange(Double_t min, Double_t max) {
return AndMinMaxMom(min, max,
kMomZ); };
160 Bool_t
AndPhiRange(Double_t min, Double_t max) {
return AndMinMaxGeom(min, max,
kPhi); };
182 Bool_t AndMinMaxMom(Double_t min, Double_t max,
MomState mom);
183 Bool_t AndMinMaxGeom(Double_t min, Double_t max,
GeomState geom);
191 void SetDefaultBoundaries();
194 void CountCharge(TParticle *particle);
196 void CountPdg(TParticle *particle);
199 Bool_t AcceptMomentum(TParticle *particle);
201 Bool_t AcceptGeometry(TParticle *particle);
204 Bool_t AcceptPdgCounter();
206 Bool_t AcceptChargeCounter();
216 std::vector<Int_t> fCountGroupId;
218 std::vector<Int_t> fCountCharge;
221 std::vector<std::pair<Int_t, Int_t>> fGroupIdCountsMinMax;
224 std::vector<std::pair<Int_t, Int_t>> fChargeCountsMinMax;
228 std::vector<std::pair<Double_t, Double_t>> fMomMinMax;
231 std::vector<std::pair<Double_t, Double_t>> fGeomMinMax;
234 Bool_t fFilterCharge;
240 static const Int_t kInvalidPdgCode = 0;
Bool_t AndMaxPdgCodes(Int_t max, std::vector< Int_t > &pdgCodes)
Bool_t AndPRange(Double_t min, Double_t max)
Bool_t AndPzRange(Double_t min, Double_t max)
Bool_t AndMinMaxPdgCodes(Int_t min, Int_t max, Int_t pdgCode1, Int_t pdgCode2=kInvalidPdgCode, Int_t pdgCode3=kInvalidPdgCode, Int_t pdgCode4=kInvalidPdgCode, Int_t pdgCode5=kInvalidPdgCode, Int_t pdgCode6=kInvalidPdgCode, Int_t pdgCode7=kInvalidPdgCode, Int_t pdgCode8=kInvalidPdgCode)
std::pair< Int_t, std::vector< Int_t > > PdgGroupIdPair
Bool_t AndMinMaxAllParticles(Int_t min, Int_t max)
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
Bool_t AndMinPdgCodes(Int_t min, Int_t pdgCode1, Int_t pdgCode2=kInvalidPdgCode, Int_t pdgCode3=kInvalidPdgCode, Int_t pdgCode4=kInvalidPdgCode, Int_t pdgCode5=kInvalidPdgCode, Int_t pdgCode6=kInvalidPdgCode, Int_t pdgCode7=kInvalidPdgCode, Int_t pdgCode8=kInvalidPdgCode)
Bool_t AndMaxPdgCodes(Int_t max, Int_t pdgCode1, Int_t pdgCode2=kInvalidPdgCode, Int_t pdgCode3=kInvalidPdgCode, Int_t pdgCode4=kInvalidPdgCode, Int_t pdgCode5=kInvalidPdgCode, Int_t pdgCode6=kInvalidPdgCode, Int_t pdgCode7=kInvalidPdgCode, Int_t pdgCode8=kInvalidPdgCode)
std::map< Int_t, std::vector< Int_t > >::iterator PdgGroupIdIterator
Bool_t AndVzRange(Double_t min, Double_t max)
Bool_t AndMinCharge(Int_t min, ChargeState charge)
Bool_t AndMinAllParticles(Int_t min)
Bool_t AndMinMaxCharge(Int_t min, Int_t max, ChargeState charge)
Bool_t AndRhoRange(Double_t min, Double_t max)
Bool_t AndMaxCharge(Int_t max, ChargeState charge)
Bool_t AndMinPdgCodes(Int_t min, std::vector< Int_t > &pdgCodes)
Bool_t AndRadiusRange(Double_t min, Double_t max)
Bool_t AndMaxAllParticles(Int_t max)
friend F32vec4 min(const F32vec4 &a, const F32vec4 &b)
Bool_t AndPtRange(Double_t min, Double_t max)
std::map< Int_t, std::vector< Int_t > > PdgGroupId
FairEvtFilterOnSingleParticleCounts()
Bool_t AndThetaRange(Double_t min, Double_t max)
Bool_t AndPhiRange(Double_t min, Double_t max)
Bool_t EventMatches(Int_t evtNr)
virtual ~FairEvtFilterOnSingleParticleCounts()