-// $Id: AliEmcalAodTrackFilterTask.cxx | Fri Dec 6 10:29:20 2013 +0100 | Constantin Loizides $
//
// Class to filter Aod tracks
//
// Author: C.Loizides
+#include "AliEmcalAodTrackFilterTask.h"
#include <TClonesArray.h>
#include <TRandom3.h>
#include <AliAODEvent.h>
#include <AliAODTrack.h>
#include <AliAnalysisManager.h>
-#include <AliLog.h>
#include <AliEMCALRecoUtils.h>
-#include "AliEmcalAodTrackFilterTask.h"
+#include <AliLog.h>
ClassImp(AliEmcalAodTrackFilterTask)
AliAnalysisTaskSE("AliEmcalAodTrackFilterTask"),
fTracksOutName("PicoTracks"),
fTracksInName("tracks"),
- fMinTrackPt(0),
- fMaxTrackPt(1000),
- fMinTrackEta(-10),
- fMaxTrackEta(10),
- fMinTrackPhi(-10),
- fMaxTrackPhi(10),
- fTrackEfficiency(1),
fIncludeNoITS(kTRUE),
+ fCutMaxFrShTPCClus(0),
fUseNegativeLabels(kTRUE),
fIsMC(kFALSE),
- fCutMaxFrShTPCClus(0.4),
- fModifyTrack(kTRUE),
fDoPropagation(kFALSE),
+ fAttemptProp(kFALSE),
+ fAttemptPropMatch(kFALSE),
fDist(440),
+ fTrackEfficiency(0),
fTracksIn(0),
fTracksOut(0)
{
AliAnalysisTaskSE(name),
fTracksOutName("PicoTracks"),
fTracksInName("tracks"),
- fMinTrackPt(0),
- fMaxTrackPt(1000),
- fMinTrackEta(-10),
- fMaxTrackEta(10),
- fMinTrackPhi(-10),
- fMaxTrackPhi(10),
- fTrackEfficiency(1),
fIncludeNoITS(kTRUE),
+ fCutMaxFrShTPCClus(0),
fUseNegativeLabels(kTRUE),
fIsMC(kFALSE),
- fCutMaxFrShTPCClus(0.4),
- fModifyTrack(kTRUE),
fDoPropagation(kFALSE),
+ fAttemptProp(kFALSE),
+ fAttemptPropMatch(kFALSE),
fDist(440),
+ fTrackEfficiency(0),
fTracksIn(0),
fTracksOut(0)
{
if (!track)
continue;
-
- if (track->Pt() > fMaxTrackPt || track->Pt() < fMinTrackPt)
- continue;
-
- if (track->Eta() < fMinTrackEta || track->Eta() > fMaxTrackEta ||
- track->Phi() < fMinTrackPhi || track->Phi() > fMaxTrackPhi)
- continue;
-
- Bool_t isEmc = kFALSE;
Int_t type = -1;
-
if (fAODfilterBits[0] < 0) {
if (track->IsHybridGlobalConstrainedGlobal())
type = 3;
} else {
if (track->TestFilterBit(fAODfilterBits[0])) {
type = 0;
- } else if (track->TestFilterBit(fAODfilterBits[1])) {
+ } else if (fAODfilterBits[1]>-1 && track->TestFilterBit(fAODfilterBits[1])) {
if ((track->GetStatus()&AliVTrack::kITSrefit)==0) {
if (fIncludeNoITS)
type = 2;
if (fCutMaxFrShTPCClus > 0) {
Double_t frac = Double_t(track->GetTPCnclsS()) / Double_t(track->GetTPCncls());
- if (frac > fCutMaxFrShTPCClus)
+ if (frac > fCutMaxFrShTPCClus) {
continue;
+ }
}
- if (fTrackEfficiency < 1) {
+ if (fTrackEfficiency) {
Double_t r = gRandom->Rndm();
- if (fTrackEfficiency < r)
- continue;
+ if (fTrackEfficiency->Eval(track->Pt()) < r)
+ continue;
}
+ AliAODTrack *newt = new ((*fTracksOut)[nacc]) AliAODTrack(*track);
+ newt->SetUniqueID(0);
+ newt->ResetBit(TObject::kHasUUID);
+ newt->ResetBit(TObject::kIsReferenced);
+
+ Bool_t propthistrack = kFALSE;
+ if (fDoPropagation)
+ propthistrack = kTRUE;
+ else if (!newt->IsExtrapolatedToEMCAL()) {
+ if (fAttemptProp)
+ propthistrack = kTRUE;
+ else if (fAttemptPropMatch && newt->IsEMCAL())
+ propthistrack = kTRUE;
+ }
+ if (propthistrack)
+ AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(newt,fDist);
+
Int_t label = 0;
if (fIsMC) {
if (fUseNegativeLabels)
label = track->GetLabel();
else
label = TMath::Abs(track->GetLabel());
-
if (label == 0)
AliDebug(2,Form("Track %d with label==0", iTracks));
}
-
- AliAODTrack *newt = new ((*fTracksOut)[nacc]) AliAODTrack(*track);
- if (fDoPropagation)
- AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(newt,fDist);
-
- if (fModifyTrack) {
- newt->SetLabel(label);
- //newt->SetType((AliAODTrack::AODTrk_t)type);
- // if (isEmc)
- // newt->SetStatus(AliVTrack::kEMCALmatch);
- //else
- // newt->ResetStatus(AliVTrack::kEMCALmatch);
+ newt->SetLabel(label);
+ if (type==0) {
+ newt->SetBit(BIT(22),0);
+ newt->SetBit(BIT(23),0);
+ } else if (type==1) {
+ newt->SetBit(BIT(22),1);
+ newt->SetBit(BIT(23),0);
+ } else if (type==2) {
+ newt->SetBit(BIT(22),0);
+ newt->SetBit(BIT(23),1);
+ } else if (type==3) {
+ newt->SetBit(BIT(22),1);
+ newt->SetBit(BIT(23),1);
}
++nacc;
}