]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliAnalysisTaskESDfilter.cxx
AddFriend in Notify()
[u/mrichter/AliRoot.git] / ANALYSIS / AliAnalysisTaskESDfilter.cxx
index a1361cd0fa15e74e94e079017b48cf500cedb7d0..d7497661bd605898eb87c2bd0585fa478321a8e5 100644 (file)
@@ -25,6 +25,7 @@
 #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
@@ -74,7 +75,9 @@ AliAnalysisTaskESDfilter::AliAnalysisTaskESDfilter(const char* name):
 \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
@@ -92,10 +95,13 @@ void AliAnalysisTaskESDfilter::UserExec(Option_t */*option*/)
 //\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
@@ -131,27 +137,26 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
 \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
@@ -159,9 +164,12 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
        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
@@ -169,6 +177,8 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
     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
@@ -258,6 +268,8 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
        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
@@ -391,8 +403,10 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
                                                          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
@@ -470,6 +484,8 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
                                                                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
@@ -512,7 +528,8 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
                                                                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
@@ -727,6 +744,8 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
                                                          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
@@ -767,6 +786,8 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
                                                          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
@@ -898,6 +919,8 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
                                                               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
@@ -954,7 +977,8 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
                                                               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
@@ -1015,7 +1039,10 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD() {
                                                                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
@@ -1216,17 +1243,30 @@ void AliAnalysisTaskESDfilter::SetDetectorRawSignals(AliAODPid *aodpid, AliESDtr
  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