fDecayAll(0),
fGenImpPar(0.),
fProcess(kDpmMb),
+ fTriggerParticle(0),
+ fTriggerEta(0.9),
+ fTriggerMinPt(-1),
+ fTriggerMaxPt(1000),
fTriggerMultiplicity(0),
fTriggerMultiplicityEta(0),
fTriggerMultiplicityPtMin(0),
fDecayAll(0),
fGenImpPar(0.),
fProcess(kDpmMb),
+ fTriggerParticle(0),
+ fTriggerEta(0.9),
+ fTriggerMinPt(-1),
+ fTriggerMaxPt(1000),
fTriggerMultiplicity(0),
fTriggerMultiplicityEta(0),
fTriggerMultiplicityPtMin(0),
fDecayAll(0),
fGenImpPar(0.),
fProcess(kDpmMb),
+ fTriggerParticle(0),
+ fTriggerEta(0.9),
+ fTriggerMinPt(-1),
+ fTriggerMaxPt(1000),
fTriggerMultiplicity(0),
fTriggerMultiplicityEta(0),
fTriggerMultiplicityPtMin(0),
Printf("Triggered on event with multiplicity of %d >= %d", multiplicity, fTriggerMultiplicity);
}
+ //Trigger on the presence of a given particle in some phase space
+ if (fTriggerParticle) {
+ Bool_t triggered = kFALSE;
+ for (Long_t i = 0; i < np; i++) {
+ TParticle * iparticle = (TParticle *) fParticles.At(i);
+ kf = CheckPDGCode(iparticle->GetPdgCode());
+ if (kf != fTriggerParticle) continue;
+ if (iparticle->Pt() == 0.) continue;
+ if (TMath::Abs(iparticle->Eta()) > fTriggerEta) continue;
+ if ( iparticle->Pt() > fTriggerMaxPt || iparticle->Pt() < fTriggerMinPt ) continue;
+ triggered = kTRUE;
+ break;
+ }
+ if (!triggered) continue;
+ }
if(fkTuneForDiff && ( (TMath::Abs(fEnergyCMS - 900) < 1) || (TMath::Abs(fEnergyCMS - 2760) < 1) || (TMath::Abs(fEnergyCMS - 7000) < 1)) ) {
if(!CheckDiffraction() ) continue;
virtual void SetGenImpPar(Float_t bValue) {fGenImpPar=bValue;}
virtual Float_t GetGenImpPar() {return fGenImpPar;}
+
+ // Trigger on a single particle (not related to calorimeter trigger above)
+ virtual void SetTriggerParticle(Int_t particle = 0, Float_t etamax = 0.9, Float_t ptmin = -1, Float_t ptmax = 1000)
+ {fTriggerParticle = particle; fTriggerEta = etamax; fTriggerMinPt = ptmin; fTriggerMaxPt = ptmax;}
+
virtual void SetTriggerChargedMultiplicity(Int_t multiplicity,
Float_t etamax = 0, Float_t ptmin = -1.)
{fTriggerMultiplicity = multiplicity; fTriggerMultiplicityEta = etamax;
Int_t fDecayAll; // Flag to switch on long-lived particle decays
Float_t fGenImpPar; // GeneratedImpactParameter
DpmProcess_t fProcess; // Process type
+ Int_t fTriggerParticle; // Trigger on this particle ...
+ Float_t fTriggerEta; // .. within |eta| < fTriggerEta
+ Float_t fTriggerMinPt; // .. within pt > fTriggerMinPt
+ Float_t fTriggerMaxPt; // .. within pt < fTriggerMaxPt
// Multiplicity Trigger
Int_t fTriggerMultiplicity; // Triggered multiplicity
Float_t fTriggerMultiplicityEta; // Triggered multiplicity eta cut