fRL(0),
fkFileName(0),
fFragPhotonInCalo(kFALSE),
+ fHadronInCalo(kFALSE) ,
fPi0InCalo(kFALSE) ,
fPhotonInCalo(kFALSE),
fEleInEMCAL(kFALSE),
fCheckEMCAL(kFALSE),
fCheckPHOS(kFALSE),
fCheckPHOSeta(kFALSE),
- fFragPhotonOrPi0MinPt(0),
+ fTriggerParticleMinPt(0),
fPhotonMinPt(0),
fElectronMinPt(0),
fPHOSMinPhi(219.),
fRL(0),
fkFileName(0),
fFragPhotonInCalo(kFALSE),
+ fHadronInCalo(kFALSE) ,
fPi0InCalo(kFALSE) ,
fPhotonInCalo(kFALSE),
fEleInEMCAL(kFALSE),
fCheckEMCAL(kFALSE),
fCheckPHOS(kFALSE),
fCheckPHOSeta(kFALSE),
- fFragPhotonOrPi0MinPt(0),
+ fTriggerParticleMinPt(0),
fPhotonMinPt(0),
fElectronMinPt(0),
fPHOSMinPhi(219.),
}
}
- // Select jets with fragmentation photon or pi0 going to PHOS or EMCAL
- if (fProcess == kPyJets && (fFragPhotonInCalo || fPi0InCalo) ) {
-
- Bool_t ok = kFALSE;
-
- Int_t pdg = 0;
- if (fFragPhotonInCalo) pdg = 22 ; // Photon
- else if (fPi0InCalo) pdg = 111 ; // Pi0
-
- for (i=0; i< np; i++) {
- TParticle* iparticle = (TParticle *) fParticles.At(i);
- if(iparticle->GetStatusCode()==1 && iparticle->GetPdgCode()==pdg &&
- iparticle->Pt() > fFragPhotonOrPi0MinPt){
- Int_t imother = iparticle->GetFirstMother() - 1;
- TParticle* pmother = (TParticle *) fParticles.At(imother);
- if(pdg == 111 ||
- (pdg == 22 && pmother->GetStatusCode() != 11)) //No photon from hadron decay
- {
- Float_t phi = iparticle->Phi()*180./TMath::Pi(); //Convert to degrees
- Float_t eta =TMath::Abs(iparticle->Eta()); //in calos etamin=-etamax
- if((fCheckEMCAL && IsInEMCAL(phi,eta)) ||
- (fCheckPHOS && IsInPHOS(phi,eta)) )
- ok =kTRUE;
- }
- }
+ // Select jets with fragmentation photon or pi0 or hadrons going to PHOS or EMCAL
+ if ( fProcess == kPyJets &&
+ (fFragPhotonInCalo || fPi0InCalo || fHadronInCalo) &&
+ (fCheckPHOS || fCheckEMCAL) ) {
+
+ Bool_t ok = kFALSE;
+
+ for (i=0; i< np; i++) {
+
+ TParticle* iparticle = (TParticle *) fParticles.At(i);
+
+ Int_t pdg = iparticle->GetPdgCode();
+ Int_t status = iparticle->GetStatusCode();
+ ok = kFALSE;
+
+ if (fFragPhotonInCalo && pdg == 22 && status == 1)
+ {
+ Int_t imother = iparticle->GetFirstMother() - 1;
+ TParticle* pmother = (TParticle *) fParticles.At(imother);
+
+ if(pmother->GetStatusCode() != 11) ok = kTRUE ; // No photon from hadron decay
}
- if(!ok) {
- delete[] pParent;
- return 0;
+ else if (fPi0InCalo && pdg == 111) // pi0 status can be 1 or 11 depending on decay settings
+ {
+ //printf("Pi0! pdg %d, status %d, pt %2.2f\n",pdg,status,iparticle->Pt());
+ ok = kTRUE;
+ }
+ else if (fHadronInCalo && status == 1)
+ {
+ if(TMath::Abs(pdg) > 23 && pdg !=221 && pdg != 111) // avoid photons, electrons, muons, neutrinos and eta or pi0
+ // (in case neutral mesons were declared stable)
+ ok = kTRUE;
}
+
+ if(ok && iparticle->Pt() > fTriggerParticleMinPt)
+ {
+ Float_t phi = iparticle->Phi()*180./TMath::Pi(); //Convert to degrees
+ Float_t eta =TMath::Abs(iparticle->Eta()); //in calos etamin=-etamax
+
+ if((fCheckEMCAL && IsInEMCAL(phi,eta)) ||
+ (fCheckPHOS && IsInPHOS (phi,eta)) )
+ {
+ ok =kTRUE;
+ AliDebug(1,Form("Selected trigger pdg %d, status %d, pt %2.2f, eta %2.2f, phi %2.2f\n",pdg,status,iparticle->Pt(), eta, phi));
+ break;
+ }
+ }
+ else ok = kFALSE;
}
+
+ if(!ok) {
+ delete[] pParent;
+ return 0;
+ }
+ }
- // Select beauty jets with electron in EMCAL
+ // Select beauty jets with electron in EMCAL
if (fProcess == kPyBeautyJets && fEleInEMCAL) {
Bool_t ok = kFALSE;