7 #include <TClonesArray.h> 9 #include <TGeoGlobalMagField.h> 10 #include <AliAnalysisManager.h> 12 #include <AliESDEvent.h> 13 #include <AliESDtrackCuts.h> 15 #include <AliTrackerBase.h> 28 fDoPropagation(kFALSE),
44 fTracksName(
"EsdTracksOut"),
46 fDoPropagation(kFALSE),
60 fBranchNames =
"ESD:AliESDHeader.,AliESDRun.,SPDVertex.,Tracks";
76 fTracks =
new TClonesArray(
"AliESDtrack");
82 AliInfo(
"No track cuts given, creating default (standard only TPC) cuts");
83 fEsdTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
87 AliWarning(
"No track cuts given, but maybe this is indeed intended?");
99 AliError(
"Task works only on ESD events, returning");
105 AliError(
"Manager zero, returning");
112 InputEvent()->AddObject(
fTracks);
115 am->LoadBranch(
"AliESDRun.");
116 am->LoadBranch(
"AliESDHeader.");
117 am->LoadBranch(
"Tracks");
120 if (!TGeoGlobalMagField::Instance()->GetField()) {
121 fEsdEv->InitMagneticField();
123 am->LoadBranch(
"SPDVertex.");
124 const AliESDVertex *vtxSPD =
fEsdEv->GetPrimaryVertexSPD();
126 AliError(
"No SPD vertex, returning");
130 for (
Int_t i=0, ntrnew=0; i<ntr; ++i) {
131 AliESDtrack *etrack =
fEsdEv->GetTrack(i);
138 AliESDtrack *ntrack = AliESDtrackCuts::GetTPCOnlyTrack(
fEsdEv,etrack->GetID());
141 if (ntrack->Pt()<=0) {
146 ntrack->GetBxByBz(bfield);
147 AliExternalTrackParam exParam;
148 Bool_t relate = ntrack->RelateToVertexBxByBz(vtxSPD,bfield,kVeryBig,&exParam);
154 ntrack->Set(exParam.GetX(),exParam.GetAlpha(),exParam.GetParameter(),exParam.GetCovariance());
155 if (ntrack->Pt()<=0) {
167 AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(ntrack,
fDist);
168 new ((*fTracks)[ntrnew++]) AliESDtrack(*ntrack);
173 for (
Int_t i=0, ntrnew=0; i<ntr; ++i) {
174 AliESDtrack *etrack =
fEsdEv->GetTrack(i);
187 AliESDtrack *ntrack =
new ((*fTracks)[ntrnew++]) AliESDtrack(*etrack);
189 AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(ntrack,
fDist);
195 am->LoadBranch(
"Tracks");
197 for (
Int_t i=0, ntrnew=0; i<ntr; ++i) {
198 AliESDtrack *etrack =
fEsdEv->GetTrack(i);
208 AliESDtrack *newTrack =
new ((*fTracks)[ntrnew]) AliESDtrack(*etrack);
210 AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(newTrack,
fDist);
211 newTrack->SetBit(BIT(22),0);
212 newTrack->SetBit(BIT(23),0);
213 if (!fMCEvent) newTrack->SetLabel(0);
216 if (!etrack->GetConstrainedParam())
218 UInt_t status = etrack->GetStatus();
227 AliESDtrack *newTrack =
new ((*fTracks)[ntrnew]) AliESDtrack(*etrack);
229 AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(newTrack,
fDist);
230 const AliExternalTrackParam* constrainParam = etrack->GetConstrainedParam();
231 newTrack->Set(constrainParam->GetX(),
232 constrainParam->GetAlpha(),
233 constrainParam->GetParameter(),
234 constrainParam->GetCovariance());
235 if ((status&AliESDtrack::kITSrefit)==0) {
236 newTrack->SetBit(BIT(22),0);
237 newTrack->SetBit(BIT(23),1);
239 newTrack->SetBit(BIT(22),1);
240 newTrack->SetBit(BIT(23),0);
242 if (!fMCEvent) newTrack->SetLabel(0);
AliESDtrackCuts * fEsdTrackCuts
TClonesArray * fTracks
esd event
void UserExec(Option_t *option)
AliEmcalEsdTrackFilterTask()
virtual ~AliEmcalEsdTrackFilterTask()
AliESDtrackCuts * fHybridTrackCuts
void UserCreateOutputObjects()