#include "AliAnalysisTaskESDfilter.h"\r
#include "AliAnalysisManager.h"\r
#include "AliESDEvent.h"\r
+#include "AliESDRun.h"\r
#include "AliStack.h"\r
#include "AliAODEvent.h"\r
#include "AliMCEvent.h"\r
\r
void AliAnalysisTaskESDfilter::UserCreateOutputObjects()\r
{\r
-// Create the output container\r
+ //\r
+ // Create Output Objects conenct filter to outputtree\r
+ // \r
OutputTree()->GetUserInfo()->Add(fTrackFilter);\r
}\r
\r
//\r
\r
Long64_t ientry = Entry();\r
- if (fDebug > 0) printf("Filter: Analysing event # %5d\n", (Int_t) ientry);\r
- if (fHighPthreshold == 0) AliInfo("detector PID signals are stored in each track");\r
- if (!fPtshape) AliInfo("detector PID signals are not stored below the pt threshold");\r
-\r
+ \r
+ if (fDebug > 0) {\r
+ printf("Filter: Analysing event # %5d\n", (Int_t) ientry);\r
+ if (fHighPthreshold == 0) AliInfo("detector PID signals are stored in each track");\r
+ if (!fPtshape) AliInfo("detector PID signals are not stored below the pt threshold");\r
+ }\r
+ \r
ConvertESDtoAOD();\r
}\r
\r
\r
\r
// loop over events and fill them\r
- \r
// Multiplicity information needed by the header (to be revised!)\r
Int_t nTracks = esd->GetNumberOfTracks();\r
+ for (Int_t iTrack=0; iTrack<nTracks; ++iTrack) esd->GetTrack(iTrack)->SetESDEvent(esd);\r
+\r
// if (fDebug > 0) printf("-------------------Bo: Number of ESD tracks %d \n",nTracks);\r
\r
Int_t nPosTracks = 0;\r
-// for (Int_t iTrack = 0; iTrack < nTracks; ++iTrack) \r
-// if (esd->GetTrack(iTrack)->GetSign()> 0) nPosTracks++;\r
\r
// Update the header\r
\r
AliAODHeader* header = AODEvent()->GetHeader();\r
-\r
+ \r
header->SetRunNumber(esd->GetRunNumber());\r
if (old) {\r
header->SetBunchCrossNumber(0);\r
header->SetOrbitNumber(0);\r
header->SetPeriodNumber(0);\r
header->SetEventType(0);\r
- header->SetMuonMagFieldScale(-999.); // FIXME\r
- header->SetCentrality(-999.); // FIXME\r
+ header->SetMuonMagFieldScale(-999.);\r
+ header->SetCentrality(-999.); \r
} else {\r
header->SetBunchCrossNumber(esd->GetBunchCrossNumber());\r
header->SetOrbitNumber(esd->GetOrbitNumber());\r
header->SetEventType(esd->GetEventType());\r
header->SetCentrality(-999.); // FIXME\r
}\r
- \r
+ // Trigger\r
+ header->SetFiredTriggerClasses(esd->GetFiredTriggerClasses());\r
header->SetTriggerMask(esd->GetTriggerMask()); \r
header->SetTriggerCluster(esd->GetTriggerCluster());\r
+ \r
+\r
header->SetMagneticField(esd->GetMagneticField());\r
header->SetMuonMagFieldScale(esd->GetCurrentDip()/6000.);\r
header->SetZDCN1Energy(esd->GetZDCN1Energy());\r
header->SetZDCN2Energy(esd->GetZDCN2Energy());\r
header->SetZDCP2Energy(esd->GetZDCP2Energy());\r
header->SetZDCEMEnergy(esd->GetZDCEMEnergy(0),esd->GetZDCEMEnergy(1));\r
+\r
+ \r
Float_t diamxy[2]={esd->GetDiamondX(),esd->GetDiamondY()};\r
Float_t diamcov[3]; esd->GetDiamondCovXY(diamcov);\r
header->SetDiamond(diamxy,diamcov);\r
AliAODVertex(pos, covVtx, vtx->GetChi2toNDF(), NULL, -1, AliAODVertex::kPrimary);\r
primary->SetName(vtx->GetName());\r
primary->SetTitle(vtx->GetTitle());\r
+ \r
+ if (!strcmp(vtx->GetTitle(), "vertexer: 3D")) primary->SetNContributors(vtx->GetNContributors());\r
\r
if (fDebug > 0) primary->Print();\r
\r
vtx->UsesTrack(esdCascadeBach->GetID()),\r
AliAODTrack::kSecondary,\r
selectInfo);\r
+ aodTrack->SetTPCClusterMap(esdCascadeBach->GetTPCClusterMap());\r
+ aodTrack->SetTPCSharedMap (esdCascadeBach->GetTPCSharedMap());\r
aodTrackRefs->AddAt(aodTrack,idxBachFromCascade);\r
- \r
+ \r
if (esdCascadeBach->GetSign() > 0) nPosTracks++;\r
aodTrack->ConvertAliPIDtoAODPID();\r
aodTrack->SetFlags(esdCascadeBach->GetStatus());\r
vtx->UsesTrack(esdCascadePos->GetID()),\r
AliAODTrack::kSecondary,\r
selectInfo);\r
+ aodTrack->SetTPCClusterMap(esdCascadePos->GetTPCClusterMap());\r
+ aodTrack->SetTPCSharedMap (esdCascadePos->GetTPCSharedMap());\r
aodTrackRefs->AddAt(aodTrack,idxPosFromV0Dghter);\r
\r
if (esdCascadePos->GetSign() > 0) nPosTracks++;\r
vtx->UsesTrack(esdCascadeNeg->GetID()),\r
AliAODTrack::kSecondary,\r
selectInfo);\r
- \r
+ aodTrack->SetTPCClusterMap(esdCascadeNeg->GetTPCClusterMap());\r
+ aodTrack->SetTPCSharedMap (esdCascadeNeg->GetTPCSharedMap());\r
aodTrackRefs->AddAt(aodTrack,idxNegFromV0Dghter);\r
\r
if (esdCascadeNeg->GetSign() > 0) nPosTracks++;\r
vtx->UsesTrack(esdV0Pos->GetID()),\r
AliAODTrack::kSecondary,\r
selectInfo);\r
+ aodTrack->SetTPCClusterMap(esdV0Pos->GetTPCClusterMap());\r
+ aodTrack->SetTPCSharedMap (esdV0Pos->GetTPCSharedMap());\r
aodTrackRefs->AddAt(aodTrack,posFromV0);\r
// if (fDebug > 0) printf("-------------------Bo: pos track from original pt %.3f \n",aodTrack->Pt());\r
if (esdV0Pos->GetSign() > 0) nPosTracks++;\r
vtx->UsesTrack(esdV0Neg->GetID()),\r
AliAODTrack::kSecondary,\r
selectInfo);\r
+ aodTrack->SetTPCClusterMap(esdV0Neg->GetTPCClusterMap());\r
+ aodTrack->SetTPCSharedMap (esdV0Neg->GetTPCSharedMap());\r
\r
aodTrackRefs->AddAt(aodTrack,negFromV0);\r
// if (fDebug > 0) printf("-------------------Bo: neg track from original pt %.3f \n",aodTrack->Pt());\r
vtx->UsesTrack(esdTrack->GetID()),\r
AliAODTrack::kPrimary,\r
selectInfo);\r
+ mother->SetTPCClusterMap(esdTrackM->GetTPCClusterMap());\r
+ mother->SetTPCSharedMap (esdTrackM->GetTPCSharedMap());\r
aodTrackRefs->AddAt(mother, imother);\r
\r
if (esdTrackM->GetSign() > 0) nPosTracks++;\r
vtx->UsesTrack(esdTrack->GetID()),\r
AliAODTrack::kSecondary,\r
selectInfo);\r
- \r
+ daughter->SetTPCClusterMap(esdTrackD->GetTPCClusterMap());\r
+ daughter->SetTPCSharedMap (esdTrackD->GetTPCSharedMap());\r
aodTrackRefs->AddAt(daughter, idaughter);\r
\r
if (esdTrackD->GetSign() > 0) nPosTracks++;\r
AliAODTrack::kPrimary, \r
selectInfo)\r
);\r
+ aodTrack->SetTPCClusterMap(esdTrack->GetTPCClusterMap());\r
+ aodTrack->SetTPCSharedMap (esdTrack->GetTPCSharedMap());\r
aodTrackRefs->AddAt(aodTrack, nTrack);\r
+\r
\r
if (esdTrack->GetSign() > 0) nPosTracks++;\r
aodTrack->SetFlags(esdTrack->GetStatus());\r
AliInfo("no ESD track found. .....exiting");\r
return;\r
}\r
+ // TPC momentum\r
+ const AliExternalTrackParam *in=track->GetInnerParam();\r
+ if (in) {\r
+ aodpid->SetTPCmomentum(in->GetP());\r
+ }else{\r
+ aodpid->SetTPCmomentum(-1.);\r
+ }\r
+\r
\r
aodpid->SetITSsignal(track->GetITSsignal());\r
aodpid->SetTPCsignal(track->GetTPCsignal());\r
- //n TRD planes = 6\r
\r
+ //n TRD planes = 6\r
Int_t nslices = track->GetNumberOfTRDslices()*6;\r
Double_t *trdslices = new Double_t[nslices];\r
for(Int_t iSl =0; iSl < track->GetNumberOfTRDslices(); iSl++) {\r
- for(Int_t iPl =0; iPl<6; iPl++) trdslices[iPl*track->GetNumberOfTRDslices()+iSl] = track->GetTRDslice(iPl,iSl);\r
- }\r
-\r
+ for(Int_t iPl =0; iPl<6; iPl++) trdslices[iPl*track->GetNumberOfTRDslices()+iSl] = track->GetTRDslice(iPl,iSl);\r
+ }\r
+ \r
+//TRD momentum\r
+ for(Int_t iPl=0;iPl<6;iPl++){\r
+ Double_t trdmom=track->GetTRDmomentum(iPl);\r
+ aodpid->SetTRDmomentum(iPl,trdmom);\r
+ }\r
\r
aodpid->SetTRDsignal(track->GetNumberOfTRDslices()*6,trdslices);\r
Double_t times[AliAODPid::kSPECIES]; track->GetIntegratedTimes(times);\r