32 #ifndef FairEvtFilterOnSingleParticleCounts_H_ 33 #define FairEvtFilterOnSingleParticleCounts_H_ 36 #include "TParticle.h" 46 std::ostream &operator<<(std::ostream &os, const std::vector<Int_t> &
v);
47 std::ostream &operator<<(std::ostream &os, const std::vector<std::pair<Double_t, Double_t>> &vpair);
48 std::ostream &operator<<(std::ostream &os, const std::vector<std::pair<Int_t, Int_t>> &vpair);
49 std::ostream &operator<<(std::ostream &os, const std::map<Int_t, std::vector<Int_t>> &
PdgGroupId);
72 Bool_t
AndMinMaxPdgCodes(Int_t
min, Int_t
max, Int_t pdgCode1, Int_t pdgCode2 = kInvalidPdgCode, Int_t pdgCode3 = kInvalidPdgCode, Int_t pdgCode4 = kInvalidPdgCode,
73 Int_t pdgCode5 = kInvalidPdgCode, Int_t pdgCode6 = kInvalidPdgCode, Int_t pdgCode7 = kInvalidPdgCode, Int_t pdgCode8 = kInvalidPdgCode);
87 Bool_t
AndMinPdgCodes(Int_t min, Int_t pdgCode1, Int_t pdgCode2 = kInvalidPdgCode, Int_t pdgCode3 = kInvalidPdgCode, Int_t pdgCode4 = kInvalidPdgCode,
88 Int_t pdgCode5 = kInvalidPdgCode, Int_t pdgCode6 = kInvalidPdgCode, Int_t pdgCode7 = kInvalidPdgCode, Int_t pdgCode8 = kInvalidPdgCode)
90 return AndMinMaxPdgCodes(min, 9999, pdgCode1, pdgCode2, pdgCode3, pdgCode4, pdgCode5, pdgCode6, pdgCode7, pdgCode8);
98 Bool_t
AndMaxPdgCodes(Int_t max, Int_t pdgCode1, Int_t pdgCode2 = kInvalidPdgCode, Int_t pdgCode3 = kInvalidPdgCode, Int_t pdgCode4 = kInvalidPdgCode,
99 Int_t pdgCode5 = kInvalidPdgCode, Int_t pdgCode6 = kInvalidPdgCode, Int_t pdgCode7 = kInvalidPdgCode, Int_t pdgCode8 = kInvalidPdgCode)
101 return AndMinMaxPdgCodes(0, max, pdgCode1, pdgCode2, pdgCode3, pdgCode4, pdgCode5, pdgCode6, pdgCode7, pdgCode8);
140 Bool_t
AndPzRange(Double_t min, Double_t max) {
return AndMinMaxMom(min, max,
kMomZ); };
148 Bool_t
AndPhiRange(Double_t min, Double_t max) {
return AndMinMaxGeom(min, max,
kPhi); };
170 Bool_t AndMinMaxMom(Double_t min, Double_t max,
MomState mom);
171 Bool_t AndMinMaxGeom(Double_t min, Double_t max,
GeomState geom);
179 void SetDefaultBoundaries();
182 void CountCharge(TParticle *particle);
184 void CountPdg(TParticle *particle);
187 Bool_t AcceptMomentum(TParticle *particle);
189 Bool_t AcceptGeometry(TParticle *particle);
192 Bool_t AcceptPdgCounter();
194 Bool_t AcceptChargeCounter();
204 std::vector<Int_t> fCountGroupId;
206 std::vector<Int_t> fCountCharge;
209 std::vector<std::pair<Int_t, Int_t>> fGroupIdCountsMinMax;
212 std::vector<std::pair<Int_t, Int_t>> fChargeCountsMinMax;
216 std::vector<std::pair<Double_t, Double_t>> fMomMinMax;
219 std::vector<std::pair<Double_t, Double_t>> fGeomMinMax;
222 Bool_t fFilterCharge;
228 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()