//_______________________________________________
AliAnaBaseClass::AliAnaBaseClass() :
TObject(), fDataMC(0), fDebug(0), fCheckFidCut(0),
- fCheckCaloPID(0), fRecalculateCaloPID(0), fReader(0x0),
- fAODBranch(0x0), fAODCaloClusters(0x0), fAODCaloCells(0x0),
+ fCheckCaloPID(0), fRecalculateCaloPID(0), fMinPt(0), fMaxPt(0),
+ fReader(0x0), fAODBranch(0x0), fAODCaloClusters(0x0), fAODCaloCells(0x0),
fCaloPID(0x0), fFidCut(0x0), fIC(0x0),fNMS(0x0)
{
//Default Ctor
AliAnaBaseClass::AliAnaBaseClass(const AliAnaBaseClass & abc) :
TObject(), fDataMC(abc.fDataMC), fDebug(abc.fDebug),
fCheckFidCut(abc.fCheckFidCut), fCheckCaloPID(abc. fCheckCaloPID),
- fRecalculateCaloPID(abc.fRecalculateCaloPID),fReader(abc.fReader),
+ fRecalculateCaloPID(abc.fRecalculateCaloPID),
+ fMinPt(abc.fMinPt), fMaxPt(abc.fMaxPt), fReader(abc.fReader),
fAODBranch(new TClonesArray(*abc.fAODBranch)),
fAODCaloClusters(new TClonesArray(*abc.fAODCaloClusters)),
fAODCaloCells(new AliAODCaloCells(*abc.fAODCaloCells)),
fAODCaloClusters = new TClonesArray(*abc.fAODCaloClusters) ;
fAODCaloCells = new AliAODCaloCells(*abc.fAODCaloCells) ;
+ fMinPt = abc.fMinPt;
+ fMaxPt = abc.fMaxPt;
+
fCaloPID = abc.fCaloPID;
fFidCut = abc.fFidCut;
fIC = abc.fIC;
}
//____________________________________________________________________________
-void AliCaloTrackMCReader::FillCalorimeters(const Int_t iParticle, TParticle* particle, TLorentzVector momentum,
+void AliCaloTrackMCReader::FillCalorimeters(const Int_t iParticle, TParticle* particle, TLorentzVector momentum,
Int_t &indexPHOS, Int_t &indexEMCAL){
//Fill AODCaloClusters or TParticles lists of PHOS or EMCAL
//In PHOS
- if(fFidutialCut->IsInFidutialCut(momentum,"PHOS") && momentum.Pt() > fPHOSPtMin){
+ if(fFillPHOS && fFidutialCut->IsInFidutialCut(momentum,"PHOS") && momentum.Pt() > fPHOSPtMin){
if(fClonesArrayType == kTParticle) new((*fAODPHOS)[indexPHOS++]) TParticle(*particle) ;
else{
}
}
//In EMCAL
- else if(fFidutialCut->IsInFidutialCut(momentum,"EMCAL") && momentum.Pt() > fEMCALPtMin){
+ else if(fFillEMCAL && fFidutialCut->IsInFidutialCut(momentum,"EMCAL") && momentum.Pt() > fEMCALPtMin){
//cout<<"Reader : E "<<momentum.E()<<" ; Phi"<<momentum.Phi()<< " ; Eta "<<momentum.Eta()<<endl;
if(fClonesArrayType == kTParticle) new((*fAODEMCAL)[indexEMCAL++]) TParticle(*particle) ;
else{
}
//____________________________________________________________________________
-void AliCaloTrackMCReader::FillInputEvent(Bool_t bCTS, Bool_t bEMCAL, Bool_t bPHOS)
+void AliCaloTrackMCReader::FillInputEvent()
{
//Create list of particles from EMCAL, PHOS and CTS.
particle->Momentum(momentum);
//---------- Charged particles ----------------------
if((charge != 0) && (momentum.Pt() > fCTSPtMin) && (fFidutialCut->IsInFidutialCut(momentum,"CTS"))){
- //Particles in CTS acceptance
- if(fDebug > 3 && momentum.Pt() > 0.2)printf("Fill MC CTS :: Selected tracks E %3.2f, pt %3.2f, phi %3.2f, eta %3.2f\n",
- momentum.E(),momentum.Pt(),momentum.Phi()*TMath::RadToDeg(),momentum.Eta());
-
- if(fClonesArrayType == kTParticle) new((*fAODCTS)[indexCh++]) TParticle(*particle) ;
- else{
- x[0] = particle->Vx(); x[1] = particle->Vy(); x[2] = particle->Vz();
- p[0] = particle->Px(); p[1] = particle->Py(); p[2] = particle->Pz();
- AliAODTrack *aodTrack = new((*fAODCTS)[indexCh++])
- AliAODTrack(0, iParticle, p, kTRUE, x, kFALSE,NULL, 0, 0,
- NULL,
- 0x0,//primary,
- kFALSE, // No fit performed
+ if(fFillCTS){
+ //Particles in CTS acceptance
+ if(fDebug > 3 && momentum.Pt() > 0.2)printf("Fill MC CTS :: Selected tracks E %3.2f, pt %3.2f, phi %3.2f, eta %3.2f\n",
+ momentum.E(),momentum.Pt(),momentum.Phi()*TMath::RadToDeg(),momentum.Eta());
+
+ if(fClonesArrayType == kTParticle) new((*fAODCTS)[indexCh++]) TParticle(*particle) ;
+ else{
+ x[0] = particle->Vx(); x[1] = particle->Vy(); x[2] = particle->Vz();
+ p[0] = particle->Px(); p[1] = particle->Py(); p[2] = particle->Pz();
+ AliAODTrack *aodTrack = new((*fAODCTS)[indexCh++])
+ AliAODTrack(0, iParticle, p, kTRUE, x, kFALSE,NULL, 0, 0,
+ NULL,
+ 0x0,//primary,
kFALSE, // No fit performed
- AliAODTrack::kPrimary,
- 0);
- SetTrackChargeAndPID(pdg, aodTrack);
+ kFALSE, // No fit performed
+ AliAODTrack::kPrimary,
+ 0);
+ SetTrackChargeAndPID(pdg, aodTrack);
+ }
}
-
//Keep some charged particles in calorimeters lists
- if(KeepChargedParticles(pdg)) FillCalorimeters(iParticle, particle, momentum, indexPHOS, indexEMCAL);
+ if((fFillPHOS || fFillEMCAL) && KeepChargedParticles(pdg)) FillCalorimeters(iParticle, particle, momentum, indexPHOS, indexEMCAL);
}//Charged
//-------------Neutral particles ----------------------
- else if(charge == 0){
-
+ else if(charge == 0 && (fFillPHOS || fFillEMCAL)){
//Skip neutrinos or other neutral particles
if(SkipNeutralParticles(pdg) || particle->IsPrimary()) continue ; // protection added (MG)
TParticle * pPhoton2 = new TParticle(22,1,iParticle,0,0,0,lvGamma2.Px(),lvGamma2.Py(),
lvGamma2.Pz(),lvGamma2.E(),0,0,0,0);
//Fill particle/calocluster arrays
- FillCalorimeters(iParticle,pPhoton1,lvGamma1, indexEMCAL,indexPHOS);
- FillCalorimeters(iParticle,pPhoton2,lvGamma2, indexEMCAL,indexPHOS);
+ FillCalorimeters(iParticle,pPhoton1,lvGamma1, indexPHOS, indexEMCAL);
+ FillCalorimeters(iParticle,pPhoton2,lvGamma2, indexPHOS, indexEMCAL);
}//pt cut
}//pi0
else FillCalorimeters(iParticle,particle, momentum, indexPHOS, indexEMCAL); //Add the rest