]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliAnalysisTaskESDfilter.cxx
Parameters set for centrality selection
[u/mrichter/AliRoot.git] / ANALYSIS / AliAnalysisTaskESDfilter.cxx
index 05077d99be09ba975bdf061545e8afcc7fe6f3a6..1c3b9fe2b2040227a62e7f00495a13636f72402a 100644 (file)
 #include "AliV0vertexer.h"\r
 #include "AliCascadeVertexer.h"\r
 #include "Riostream.h"\r
+#include "AliExternalTrackParam.h"\r
+#include "AliTrackerBase.h"\r
+#include "TVector3.h"\r
+#include "AliTPCdEdxInfo.h"\r
 \r
 ClassImp(AliAnalysisTaskESDfilter)\r
 \r
 ////////////////////////////////////////////////////////////////////////\r
 \r
 AliAnalysisTaskESDfilter::AliAnalysisTaskESDfilter():\r
-    AliAnalysisTaskSE(),\r
-    fTrackFilter(0x0),\r
-    fKinkFilter(0x0),\r
-    fV0Filter(0x0),\r
-    fCascadeFilter(0x0),\r
-    fHighPthreshold(0),\r
-    fPtshape(0x0),\r
-    fEnableFillAOD(kTRUE),\r
-    fUsedTrack(0x0),\r
-    fUsedKink(0x0),\r
-    fUsedV0(0x0),\r
-    fAODTrackRefs(0x0),\r
-    fAODV0VtxRefs(0x0),\r
-    fAODV0Refs(0x0),\r
-    fMChandler(0x0),\r
-    fNumberOfTracks(0),\r
-    fNumberOfPositiveTracks(0),\r
-    fNumberOfV0s(0),\r
-    fNumberOfVertices(0),\r
-    fNumberOfCascades(0),\r
-    fNumberOfKinks(0),\r
-    fOldESDformat(kFALSE),\r
-    fPrimaryVertex(0x0),\r
+  AliAnalysisTaskSE(),\r
+  fTrackFilter(0x0),\r
+  fKinkFilter(0x0),\r
+  fV0Filter(0x0),\r
+  fCascadeFilter(0x0),\r
+  fHighPthreshold(0),\r
+  fPtshape(0x0),\r
+  fEnableFillAOD(kTRUE),\r
+  fUsedTrack(0x0),\r
+  fUsedKink(0x0),\r
+  fUsedV0(0x0),\r
+  fAODTrackRefs(0x0),\r
+  fAODV0VtxRefs(0x0),\r
+  fAODV0Refs(0x0),\r
+  fMChandler(0x0),\r
+  fNumberOfTracks(0),\r
+  fNumberOfPositiveTracks(0),\r
+  fNumberOfV0s(0),\r
+  fNumberOfVertices(0),\r
+  fNumberOfCascades(0),\r
+  fNumberOfKinks(0),\r
+  fOldESDformat(kFALSE),\r
+  fPrimaryVertex(0x0),\r
   fTPCConstrainedFilterMask(0),\r
   fHybridFilterMaskTPCCG(0),\r
   fWriteHybridTPCCOnly(kFALSE),\r
   fGlobalConstrainedFilterMask(0),\r
   fHybridFilterMaskGCG(0),\r
   fWriteHybridGCOnly(kFALSE),\r
-    fIsVZEROEnabled(kTRUE),\r
-    fIsTZEROEnabled(kTRUE),\r
-    fIsZDCEnabled(kTRUE),\r
-    fIsV0CascadeRecoEnabled(kFALSE),\r
-    fAreCascadesEnabled(kTRUE),\r
-    fAreV0sEnabled(kTRUE),\r
-    fAreKinksEnabled(kTRUE),\r
-    fAreTracksEnabled(kTRUE),\r
-    fArePmdClustersEnabled(kTRUE),\r
-    fAreCaloClustersEnabled(kTRUE),\r
-    fAreEMCALCellsEnabled(kTRUE),\r
-    fArePHOSCellsEnabled(kTRUE),\r
-               fAreEMCALTriggerEnabled(kTRUE),\r
-               fArePHOSTriggerEnabled(kFALSE),\r
-               fAreTrackletsEnabled(kTRUE),\r
-    fESDpid(0x0),\r
-    fIsPidOwner(kFALSE),\r
-    fTimeZeroType(AliESDpid::kTOF_T0),\r
-    fTPCaloneTrackCuts(0)\r
+  fIsVZEROEnabled(kTRUE),\r
+  fIsTZEROEnabled(kTRUE),\r
+  fIsZDCEnabled(kTRUE),\r
+  fIsV0CascadeRecoEnabled(kFALSE),\r
+  fAreCascadesEnabled(kTRUE),\r
+  fAreV0sEnabled(kTRUE),\r
+  fAreKinksEnabled(kTRUE),\r
+  fAreTracksEnabled(kTRUE),\r
+  fArePmdClustersEnabled(kTRUE),\r
+  fAreCaloClustersEnabled(kTRUE),\r
+  fAreEMCALCellsEnabled(kTRUE),\r
+  fArePHOSCellsEnabled(kTRUE),\r
+  fAreEMCALTriggerEnabled(kTRUE),\r
+  fArePHOSTriggerEnabled(kTRUE),\r
+  fAreTrackletsEnabled(kTRUE),\r
+  fESDpid(0x0),\r
+  fIsPidOwner(kFALSE),\r
+  fTimeZeroType(AliESDpid::kTOF_T0),\r
+  fTPCaloneTrackCuts(0),\r
+  fDoPropagateTrackToEMCal(kTRUE)\r
 {\r
   // Default constructor\r
     fV0Cuts[0] =  33.   ;   // max allowed chi2\r
@@ -172,12 +177,13 @@ AliAnalysisTaskESDfilter::AliAnalysisTaskESDfilter(const char* name):
     fAreEMCALCellsEnabled(kTRUE),\r
     fArePHOSCellsEnabled(kTRUE),\r
                fAreEMCALTriggerEnabled(kTRUE),\r
-               fArePHOSTriggerEnabled(kFALSE),\r
+               fArePHOSTriggerEnabled(kTRUE),\r
                fAreTrackletsEnabled(kTRUE),\r
     fESDpid(0x0),\r
     fIsPidOwner(kFALSE),\r
     fTimeZeroType(AliESDpid::kTOF_T0),\r
-    fTPCaloneTrackCuts(0)\r
+    fTPCaloneTrackCuts(0),\r
+  fDoPropagateTrackToEMCal(kTRUE)\r
 {\r
   // Constructor\r
 \r
@@ -249,6 +255,7 @@ void AliAnalysisTaskESDfilter::PrintTask(Option_t *option, Int_t indent) const
        cout << spaces.Data() << Form("EMCAL triggers are %s",fAreEMCALTriggerEnabled ? "ENABLED":"DISABLED") << endl;\r
        cout << spaces.Data() << Form("PHOS triggers  are %s",fArePHOSTriggerEnabled ? "ENABLED":"DISABLED") << endl;\r
        cout << spaces.Data() << Form("Tracklets      are %s",fAreTrackletsEnabled ? "ENABLED":"DISABLED") << endl;  \r
+       cout << spaces.Data() << Form("PropagateTrackToEMCal  is %s", fDoPropagateTrackToEMCal ? "ENABLED":"DISABLED") << endl; \r
 }\r
 \r
 //______________________________________________________________________________\r
@@ -1333,6 +1340,7 @@ void AliAnalysisTaskESDfilter::ConvertTracks(const AliESDEvent& esd)
   const AliESDVertex *vtx = esd.GetPrimaryVertex();\r
   Double_t p[3] = { 0. };\r
   Double_t pos[3] = { 0. };\r
+  Double_t trkPos[3] = {0.,0.,0.};\r
   Double_t covTr[21] = { 0. };\r
   Double_t pid[10] = { 0. };\r
   AliAODTrack* aodTrack(0x0);\r
@@ -1382,6 +1390,31 @@ void AliAnalysisTaskESDfilter::ConvertTracks(const AliESDEvent& esd)
     if(esdTrack->IsEMCAL()) aodTrack->SetEMCALcluster(esdTrack->GetEMCALcluster());\r
     if(esdTrack->IsPHOS())  aodTrack->SetPHOScluster(esdTrack->GetPHOScluster());\r
 \r
+    //Perform progagation of tracks if needed\r
+    if(fDoPropagateTrackToEMCal)\r
+      {\r
+       Double_t EMCalEta, EMCalPhi;\r
+       Double_t trkphi = esdTrack->Phi()*TMath::RadToDeg();\r
+       if(TMath::Abs(esdTrack->Eta())<0.9 && trkphi > 10 && trkphi < 250 )\r
+         {\r
+           AliExternalTrackParam *trkParam = const_cast<AliExternalTrackParam*>(esdTrack->GetInnerParam());\r
+           if(trkParam)\r
+             {\r
+               AliExternalTrackParam trkParamTmp(*trkParam);\r
+               if(AliTrackerBase::PropagateTrackToBxByBz(&trkParamTmp, 430, esdTrack->GetMass(), 20, kTRUE, 0.8, -1))\r
+                 {\r
+                   trkParamTmp.GetXYZ(trkPos);\r
+                   TVector3 trkPosVec(trkPos[0],trkPos[1],trkPos[2]);\r
+                   EMCalEta = trkPosVec.Eta();\r
+                   EMCalPhi = trkPosVec.Phi();\r
+                   if(EMCalPhi<0)  EMCalPhi += 2*TMath::Pi();\r
+                   esdTrack->SetTrackPhiEtaOnEMCal(EMCalPhi,EMCalEta);\r
+                 }\r
+             }\r
+         }\r
+      }\r
+    aodTrack->SetTrackPhiEtaOnEMCal(esdTrack->GetTrackPhiOnEMCal(),esdTrack->GetTrackEtaOnEMCal());\r
+\r
     fAODTrackRefs->AddAt(aodTrack, nTrack);\r
     \r
     \r
@@ -1413,6 +1446,7 @@ void AliAnalysisTaskESDfilter::ConvertPmdClusters(const AliESDEvent& esd)
   }\r
 }\r
 \r
+\r
 //______________________________________________________________________________\r
 void AliAnalysisTaskESDfilter::ConvertCaloClusters(const AliESDEvent& esd)\r
 {\r
@@ -1461,15 +1495,19 @@ void AliAnalysisTaskESDfilter::ConvertCaloClusters(const AliESDEvent& esd)
 \r
     caloCluster->SetTrackDistance(cluster->GetTrackDx(), cluster->GetTrackDz());\r
     \r
+    Int_t nMatchCount = 0;\r
     TArrayI* matchedT =        cluster->GetTracksMatched();\r
     if (fNumberOfTracks>0 && matchedT && cluster->GetTrackMatchedIndex() >= 0) {       \r
       for (Int_t im = 0; im < matchedT->GetSize(); im++) {\r
         Int_t iESDtrack = matchedT->At(im);;\r
         if (fAODTrackRefs->At(iESDtrack) != 0) {\r
           caloCluster->AddTrackMatched((AliAODTrack*)fAODTrackRefs->At(iESDtrack));\r
+         nMatchCount++;\r
         }\r
       }\r
     }\r
+    if(nMatchCount==0)\r
+      caloCluster->SetTrackDistance(-999,-999);\r
     \r
   } \r
   caloClusters.Expand(jClusters); // resize TObjArray to 'remove' slots for pseudo clusters     \r
@@ -2204,6 +2242,7 @@ void AliAnalysisTaskESDfilter::SetDetectorRawSignals(AliAODPid *aodpid, AliESDtr
 \r
  aodpid->SetTPCsignal(track->GetTPCsignal());\r
  aodpid->SetTPCsignalN(track->GetTPCsignalN());\r
+ if(track->GetTPCdEdxInfo()) aodpid->SetTPCdEdxInfo(track->GetTPCdEdxInfo());\r
 \r
  //n TRD planes = 6\r
  Int_t nslices = track->GetNumberOfTRDslices()*6;\r