]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/UserTasks/EmcalTasks/AliEmcalEsdTpcTrackTask.cxx
comment
[u/mrichter/AliRoot.git] / PWG4 / UserTasks / EmcalTasks / AliEmcalEsdTpcTrackTask.cxx
index c6fecdf881be8ded0cc1550b65889dfc1631a781..f448418c8bcefd19f8409cb1543f2f43f5fa8b45 100644 (file)
@@ -18,6 +18,7 @@ ClassImp(AliEmcalEsdTpcTrackTask)
 AliEmcalEsdTpcTrackTask::AliEmcalEsdTpcTrackTask() : 
   AliAnalysisTaskSE(),
   fEsdTrackCuts(0),
+  fDoSpdVtxCon(0),
   fHybridTrackCuts(0),
   fTracksName(),
   fEsdEv(0),
@@ -30,6 +31,7 @@ AliEmcalEsdTpcTrackTask::AliEmcalEsdTpcTrackTask() :
 AliEmcalEsdTpcTrackTask::AliEmcalEsdTpcTrackTask(const char *name) : 
   AliAnalysisTaskSE(name),
   fEsdTrackCuts(0),
+  fDoSpdVtxCon(0),
   fHybridTrackCuts(0),
   fTracksName("TpcSpdVertexConstrainedTracks"),
   fEsdEv(0),
@@ -56,7 +58,7 @@ void AliEmcalEsdTpcTrackTask::UserCreateOutputObjects()
   fTracks->SetName(fTracksName);
 
   if (!fEsdTrackCuts) {
-    AliInfo("No track cuts given, creating default cuts");
+    AliInfo("No track cuts given, creating default (standard only TPC) cuts");
     fEsdTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
     fEsdTrackCuts->SetPtRange(0.15,1e3);
   }
@@ -83,51 +85,62 @@ void AliEmcalEsdTpcTrackTask::UserExec(Option_t *)
   if (!(InputEvent()->FindListObject(fTracksName)))
     InputEvent()->AddObject(fTracks);
 
-  if (!fHybridTrackCuts) { // contrain TPC tracks to SPD vertex 
+  if (!fHybridTrackCuts) { // contrain TPC tracks to SPD vertex if fDoSpdVtxCon==kTRUE
     am->LoadBranch("AliESDRun.");
     am->LoadBranch("AliESDHeader.");
-    if (!TGeoGlobalMagField::Instance()->GetField()) { // construct field map
-      fEsdEv->InitMagneticField();
-    }
-
-    am->LoadBranch("SPDVertex.");
-    const AliESDVertex *vtxSPD = fEsdEv->GetPrimaryVertexSPD();
-    if (!vtxSPD) {
-      AliError("No SPD vertex, returning");
-      return;
-    }
-
     am->LoadBranch("Tracks");
-    Int_t ntr = fEsdEv->GetNumberOfTracks();
-    for (Int_t i=0, ntrnew=0; i<ntr; ++i) {
-      AliESDtrack *etrack = fEsdEv->GetTrack(i);
-      if (!etrack)
-        continue;
-      if (!fEsdTrackCuts->AcceptTrack(etrack))
-        continue;
-      AliESDtrack *ntrack = AliESDtrackCuts::GetTPCOnlyTrack(fEsdEv,etrack->GetID());
-      if (!ntrack)
-        continue;
-      if (ntrack->Pt()<=0) {
-        delete ntrack;
-        continue;
+
+    if (fDoSpdVtxCon) {
+      if (!TGeoGlobalMagField::Instance()->GetField()) { // construct field map
+        fEsdEv->InitMagneticField();
       }
-      Double_t bfield[3] = {0,0,0};
-      ntrack->GetBxByBz(bfield);
-      AliExternalTrackParam exParam;
-      Bool_t relate = ntrack->RelateToVertexBxByBz(vtxSPD,bfield,kVeryBig,&exParam);
-      if (!relate) {
-        delete ntrack;
-        continue;
+      am->LoadBranch("SPDVertex.");
+      const AliESDVertex *vtxSPD = fEsdEv->GetPrimaryVertexSPD();
+      if (!vtxSPD) {
+        AliError("No SPD vertex, returning");
+        return;
       }
-      // set the constraint parameters to the track
-      ntrack->Set(exParam.GetX(),exParam.GetAlpha(),exParam.GetParameter(),exParam.GetCovariance());
-      if (ntrack->Pt()<=0) {
+      Int_t ntr = fEsdEv->GetNumberOfTracks();
+      for (Int_t i=0, ntrnew=0; i<ntr; ++i) {
+        AliESDtrack *etrack = fEsdEv->GetTrack(i);
+        if (!etrack)
+          continue;
+        if (!fEsdTrackCuts->AcceptTrack(etrack))
+          continue;
+        AliESDtrack *ntrack = AliESDtrackCuts::GetTPCOnlyTrack(fEsdEv,etrack->GetID());
+        if (!ntrack)
+          continue;
+        if (ntrack->Pt()<=0) {
+          delete ntrack;
+          continue;
+        }
+        Double_t bfield[3] = {0,0,0};
+        ntrack->GetBxByBz(bfield);
+        AliExternalTrackParam exParam;
+        Bool_t relate = ntrack->RelateToVertexBxByBz(vtxSPD,bfield,kVeryBig,&exParam);
+        if (!relate) {
+          delete ntrack;
+          continue;
+        }
+        // set the constraint parameters to the track
+        ntrack->Set(exParam.GetX(),exParam.GetAlpha(),exParam.GetParameter(),exParam.GetCovariance());
+        if (ntrack->Pt()<=0) {
+          delete ntrack;
+          continue;
+        }
+        new ((*fTracks)[ntrnew++]) AliESDtrack(*ntrack);
         delete ntrack;
-        continue;
       }
-      new ((*fTracks)[ntrnew++]) AliESDtrack(*ntrack);
-      delete ntrack;
+    } else { /* no spd vtx constraint */
+      Int_t ntr = fEsdEv->GetNumberOfTracks();
+      for (Int_t i=0, ntrnew=0; i<ntr; ++i) {
+        AliESDtrack *etrack = fEsdEv->GetTrack(i);
+        if (!etrack)
+          continue;
+        if (!fEsdTrackCuts->AcceptTrack(etrack))
+          continue;
+        new ((*fTracks)[ntrnew++]) AliESDtrack(*etrack);
+      }
     }
 
   } else { // use hybrid track cuts