fNCellsFromEMCALBorder(0), fNoEMCALBorderAtEta0(kTRUE),
fRejectExoticCluster(kFALSE), fRejectExoticCells(kFALSE),
fExoticCellFraction(0), fExoticCellDiffTime(0), fExoticCellMinAmplitude(0),
- fPIDUtils(), fAODFilterMask(0), fAODHybridTracks(0),
+ fPIDUtils(), fAODFilterMask(0),
+ fAODHybridTracks(0), fAODTPCOnlyTracks(0),
fMatchedTrackIndex(0x0), fMatchedClusterIndex(0x0),
fResidualEta(0x0), fResidualPhi(0x0), fCutEtaPhiSum(kFALSE), fCutEtaPhiSeparate(kFALSE),
fCutR(0), fCutEta(0), fCutPhi(0),
fClusterWindow(0), fMass(0),
fStepSurface(0), fStepCluster(0),
- fITSTrackSA(kFALSE),
+ fITSTrackSA(kFALSE), fEMCalSurfaceDistance(430.),
fTrackCutsType(0), fCutMinTrackPt(0), fCutMinNClusterTPC(0),
fCutMinNClusterITS(0), fCutMaxChi2PerClusterTPC(0), fCutMaxChi2PerClusterITS(0),
fCutRequireTPCRefit(kFALSE), fCutRequireITSRefit(kFALSE), fCutAcceptKinkDaughters(kFALSE),
fExoticCellFraction(reco.fExoticCellFraction), fExoticCellDiffTime(reco.fExoticCellDiffTime),
fExoticCellMinAmplitude(reco.fExoticCellMinAmplitude),
fPIDUtils(reco.fPIDUtils), fAODFilterMask(reco.fAODFilterMask),
- fAODHybridTracks(reco.fAODHybridTracks),
+ fAODHybridTracks(reco.fAODHybridTracks), fAODTPCOnlyTracks(reco.fAODTPCOnlyTracks),
fMatchedTrackIndex( reco.fMatchedTrackIndex? new TArrayI(*reco.fMatchedTrackIndex):0x0),
fMatchedClusterIndex(reco.fMatchedClusterIndex?new TArrayI(*reco.fMatchedClusterIndex):0x0),
fResidualEta( reco.fResidualEta? new TArrayF(*reco.fResidualEta):0x0),
fCutR(reco.fCutR), fCutEta(reco.fCutEta), fCutPhi(reco.fCutPhi),
fClusterWindow(reco.fClusterWindow),
fMass(reco.fMass), fStepSurface(reco.fStepSurface), fStepCluster(reco.fStepCluster),
- fITSTrackSA(reco.fITSTrackSA),
+ fITSTrackSA(reco.fITSTrackSA), fEMCalSurfaceDistance(430.),
fTrackCutsType(reco.fTrackCutsType), fCutMinTrackPt(reco.fCutMinTrackPt),
fCutMinNClusterTPC(reco.fCutMinNClusterTPC), fCutMinNClusterITS(reco.fCutMinNClusterITS),
fCutMaxChi2PerClusterTPC(reco.fCutMaxChi2PerClusterTPC), fCutMaxChi2PerClusterITS(reco.fCutMaxChi2PerClusterITS),
fAODFilterMask = reco.fAODFilterMask;
fAODHybridTracks = reco.fAODHybridTracks;
+ fAODTPCOnlyTracks = reco.fAODTPCOnlyTracks;
fCutEtaPhiSum = reco.fCutEtaPhiSum;
fCutEtaPhiSeparate = reco.fCutEtaPhiSeparate;
fMass = reco.fMass;
fStepSurface = reco.fStepSurface;
fStepCluster = reco.fStepCluster;
- fITSTrackSA = reco.fITSTrackSA;
+ fITSTrackSA = reco.fITSTrackSA;
+ fEMCalSurfaceDistance = reco.fEMCalSurfaceDistance;
fTrackCutsType = reco.fTrackCutsType;
fCutMinTrackPt = reco.fCutMinTrackPt;
fExoticCellDiffTime = 1e6;
fExoticCellMinAmplitude = 0.5;
- fAODFilterMask = 32;
- fAODHybridTracks = kFALSE;
+ fAODFilterMask = 128;
+ fAODHybridTracks = kFALSE;
+ fAODTPCOnlyTracks = kTRUE;
fCutEtaPhiSum = kTRUE;
fCutEtaPhiSeparate = kFALSE;
{
aodTrack = aodevent->GetTrack(itr);
if(!aodTrack) continue;
-
- //Check mask if not hybrid
- if(!fAODHybridTracks && !aodTrack->TestFilterMask(fAODFilterMask) ) continue; //Select AOD tracks that fulfill GetStandardITSTPCTrackCuts2010()
-
- //Check hybrid
- if( fAODHybridTracks && !aodTrack->IsHybridGlobalConstrainedGlobal()) continue ;
+
+ if(fAODTPCOnlyTracks) // Match with TPC only tracks, default from May 2013, before filter bit 32
+ {
+ //printf("Match with TPC only tracks, accept? %d, test bit 128 <%d> \n", aodTrack->IsTPCOnly(), aodTrack->TestFilterMask(128));
+ if(!aodTrack->IsTPCOnly()) continue ;
+ }
+ else if(fAODHybridTracks) // Match with hybrid tracks
+ {
+ //printf("Match with Hybrid tracks, accept? %d \n", aodTrack->IsHybridGlobalConstrainedGlobal());
+ if(!aodTrack->IsHybridGlobalConstrainedGlobal()) continue ;
+ }
+ else // Match with tracks on a mask
+ {
+ //printf("Match with tracks having filter bit mask %d, accept? %d \n",fAODFilterMask,aodTrack->TestFilterMask(fAODFilterMask));
+ if(!aodTrack->TestFilterMask(fAODFilterMask) ) continue; //Select AOD tracks
+ }
if(aodTrack->Pt()<fCutMinTrackPt) continue;
//Extrapolate the track to EMCal surface
AliExternalTrackParam emcalParam(*trackParam);
- Float_t eta, phi;
- if(!ExtrapolateTrackToEMCalSurface(&emcalParam, 430., fMass, fStepSurface, eta, phi))
+ Float_t eta, phi, pt;
+ if(!ExtrapolateTrackToEMCalSurface(&emcalParam, fEMCalSurfaceDistance, fMass, fStepSurface, eta, phi, pt))
{
if(aodevent && trackParam) delete trackParam;
if(fITSTrackSA && trackParam) delete trackParam;
if(!trackParam) return index;
AliExternalTrackParam emcalParam(*trackParam);
- Float_t eta, phi;
+ Float_t eta, phi, pt;
- if(!ExtrapolateTrackToEMCalSurface(&emcalParam, 430., fMass, fStepSurface, eta, phi)) {
+ if(!ExtrapolateTrackToEMCalSurface(&emcalParam, fEMCalSurfaceDistance, fMass, fStepSurface, eta, phi, pt)) {
if(fITSTrackSA) delete trackParam;
return index;
}
const Double_t mass,
const Double_t step,
Float_t &eta,
- Float_t &phi)
+ Float_t &phi,
+ Float_t &pt)
{
//Extrapolate track to EMCAL surface
- eta = -999, phi = -999;
+ eta = -999, phi = -999, pt = -999;
if(!trkParam) return kFALSE;
if(!AliTrackerBase::PropagateTrackToBxByBz(trkParam, emcalR, mass, step, kTRUE, 0.8, -1)) return kFALSE;
Double_t trkPos[3] = {0.,0.,0.};
TVector3 trkPosVec(trkPos[0],trkPos[1],trkPos[2]);
eta = trkPosVec.Eta();
phi = trkPosVec.Phi();
+ pt = trkParam->Pt();
if(phi<0)
phi += 2*TMath::Pi();
printf("Track cuts: \n");
printf("Minimum track pT: %1.2f\n",fCutMinTrackPt);
- printf("AOD track selection mask: %d\n",fAODFilterMask);
+ printf("AOD track selection: tpc only %d, or hybrid %d, or mask: %d\n",fAODTPCOnlyTracks,fAODHybridTracks, fAODFilterMask);
printf("TPCRefit = %d, ITSRefit = %d\n",fCutRequireTPCRefit,fCutRequireITSRefit);
printf("AcceptKinks = %d\n",fCutAcceptKinkDaughters);
printf("MinNCulsterTPC = %d, MinNClusterITS = %d\n",fCutMinNClusterTPC,fCutMinNClusterITS);