#include "AliVCluster.h"
#include "AliCaloTrackReader.h"
#include "AliMixedEvent.h"
+#include "AliCaloPID.h"
ClassImp(AliIsolationCut)
void AliIsolationCut::MakeIsolationCut(const TObjArray * plCTS,
const TObjArray * plNe,
const AliCaloTrackReader * reader,
+ const AliCaloPID * pid,
const Bool_t bFillAOD,
AliAODPWG4ParticleCorrelation *pCandidate,
const TString & aodArrayRefName,
TObjArray * reftracks = 0x0;
Int_t ntrackrefs = 0;
Int_t nclusterrefs = 0;
+
//Check charged particles in cone.
if(plCTS && (fPartInCone==kOnlyCharged || fPartInCone==kNeutralAndCharged)){
TVector3 p3;
}
//Do not count the candidate (photon or pi0) or the daughters of the candidate
- if(calo->GetID() == pCandidate->GetCaloLabel(0) || calo->GetID() == pCandidate->GetCaloLabel(1)) continue ; //Skip matched clusters with tracks
-
- if(calo->GetNTracksMatched() > 0) continue ;
+ if(calo->GetID() == pCandidate->GetCaloLabel(0) ||
+ calo->GetID() == pCandidate->GetCaloLabel(1)) continue ;
- calo->GetMomentum(mom,reader->GetVertex(evtIndex)) ;//Assume that come from vertex in straight line
+ //Skip matched clusters with tracks
+ if( pid->IsTrackMatched(calo,reader->GetCaloUtils(),reader->GetInputEvent()) ) continue ;
+
+ //Assume that come from vertex in straight line
+ calo->GetMomentum(mom,reader->GetVertex(evtIndex)) ;
pt = mom.Pt();
eta = mom.Eta();
if(phi<0) phi+=TMath::TwoPi();
//only loop the particle at the same side of candidate
- if(TMath::Abs(phi-phiC)>TMath::PiOver2()) continue ;
//if at the same side has particle larger than candidate, then candidate can not be the leading, skip such events
+ if(TMath::Abs(phi-phiC)>TMath::PiOver2()) continue ;
+
if(pt > ptC){
n = -1;
nfrac = -1;
// --- ANALYSIS system ---
class AliAODPWG4ParticleCorrelation ;
class AliCaloTrackReader ;
-
+class AliCaloPID;
class AliIsolationCut : public TObject {
public:
TString GetICParametersList() ;
- void MakeIsolationCut(const TObjArray * plCTS, const TObjArray * plNe, const AliCaloTrackReader * reader,
+ void MakeIsolationCut(const TObjArray * plCTS, const TObjArray * plNe,
+ const AliCaloTrackReader * reader,
+ const AliCaloPID * pid,
const Bool_t bFillAOD, AliAODPWG4ParticleCorrelation * pCandidate, const TString &aodObjArrayName,
Int_t &n, Int_t & nfrac, Float_t &ptsum, Bool_t & isolated) const ;
//After cuts, study isolation
n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
- GetIsolationCut()->MakeIsolationCut(GetCTSTracks(),pl,GetReader(), kTRUE, aodinput, GetAODObjArrayName(), n,nfrac,coneptsum, isolated);
+ GetIsolationCut()->MakeIsolationCut(GetCTSTracks(),pl,
+ GetReader(), GetCaloPID(),
+ kTRUE, aodinput, GetAODObjArrayName(), n,nfrac,coneptsum, isolated);
aodinput->SetIsolated(isolated);
if(GetDebug() > 1) {
else if(fReMakeIC){
//In case a more strict IC is needed in the produced AOD
n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
- GetIsolationCut()->MakeIsolationCut(reftracks, refclusters, GetReader(), kFALSE, aod, "", n,nfrac,coneptsum, isolated);
+ GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
+ GetReader(), GetCaloPID(),
+ kFALSE, aod, "", n,nfrac,coneptsum, isolated);
fhConeSumPt->Fill(pt,coneptsum);
if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
}
GetIsolationCut()->SetPtThreshold(fPtThresholds[ipt]);
GetIsolationCut()->MakeIsolationCut(ph->GetObjArray(GetAODObjArrayName()+"Tracks"),
ph->GetObjArray(GetAODObjArrayName()+"Clusters"),
- GetReader(), kFALSE, ph, "",n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
+ GetReader(), GetCaloPID(),
+ kFALSE, ph, "",n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
//Normal ptThreshold cut
if(n[icone][ipt] == 0) {