]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
added hybrid tracks
authorloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 15 Dec 2011 22:14:27 +0000 (22:14 +0000)
committerloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 15 Dec 2011 22:14:27 +0000 (22:14 +0000)
PWG4/UserTasks/EmcalTasks/AliEmcalEsdTpcTrackTask.cxx
PWG4/UserTasks/EmcalTasks/AliEmcalEsdTpcTrackTask.h

index 987d28cf7eb0137e4ecc56158e87e4f4817dc701..30b856107811091db4f7d2c5d62ecae0aaefb64c 100644 (file)
@@ -18,6 +18,7 @@ ClassImp(AliEmcalEsdTpcTrackTask)
 AliEmcalEsdTpcTrackTask::AliEmcalEsdTpcTrackTask() : 
   AliAnalysisTaskSE(),
   fEsdTrackCuts(0),
+  fHybridTrackCuts(0),
   fTracksName(),
   fEsdEv(0),
   fTracks(0)
@@ -29,6 +30,7 @@ AliEmcalEsdTpcTrackTask::AliEmcalEsdTpcTrackTask() :
 AliEmcalEsdTpcTrackTask::AliEmcalEsdTpcTrackTask(const char *name) : 
   AliAnalysisTaskSE(name),
   fEsdTrackCuts(0),
+  fHybridTrackCuts(0),
   fTracksName("TpcSpdVertexConstrainedTracks"),
   fEsdEv(0),
   fTracks(0)
@@ -81,54 +83,88 @@ void AliEmcalEsdTpcTrackTask::UserExec(Option_t *)
   if (!(InputEvent()->FindListObject(fTracksName)))
     InputEvent()->AddObject(fTracks);
 
-  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 (!fHybridTrackCuts) {
+    am->LoadBranch("AliESDRun.");
+    am->LoadBranch("AliESDHeader.");
+    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) {
+    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;
+      }
+
+      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 {
+
+    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)) {
+        new ((*fTracks)[ntrnew]) AliESDtrack(*etrack);
+        AliESDtrack *newTrack = static_cast<AliESDtrack*>(fTracks->At(ntrnew));
+        newTrack->SetLabel(0);
+        ++ntrnew;
+      } else if (fHybridTrackCuts->AcceptTrack(etrack)) {
+        if (etrack->GetConstrainedParam()) {
+          new ((*fTracks)[ntrnew]) AliESDtrack(*etrack);
+          AliESDtrack *newTrack = static_cast<AliESDtrack*>(fTracks->At(ntrnew));
+          ++ntrnew;
+          const AliExternalTrackParam* constrainParam = etrack->GetConstrainedParam();
+          newTrack->Set(constrainParam->GetX(),
+                        constrainParam->GetAlpha(),
+                        constrainParam->GetParameter(),
+                        constrainParam->GetCovariance());
+          UInt_t status = etrack->GetStatus();
+          if ((status&AliESDtrack::kITSrefit)==0)
+            newTrack->SetLabel(2);
+          else
+            newTrack->SetLabel(1);
+        }
+      }
+    }
   }
 }
index fbfe5691c681b973caca6e5343d6cb9dd03a7ae0..c38d2d9af8b3c63381e65cfcc3d4924e3322483f 100644 (file)
@@ -19,11 +19,13 @@ class AliEmcalEsdTpcTrackTask : public AliAnalysisTaskSE {
   void UserCreateOutputObjects();
   void UserExec(Option_t *option);
    
-  void SetTrackCuts(AliESDtrackCuts *cuts) { fEsdTrackCuts = cuts; }
-  void SetTracksName(const char *name)     { fTracksName   = name; }
+  void SetTrackCuts(AliESDtrackCuts *cuts)       { fEsdTrackCuts     = cuts; }
+  void SetHybridTrackCuts(AliESDtrackCuts *cuts) { fHybridTrackCuts  = cuts; }
+  void SetTracksName(const char *name)           { fTracksName       = name; }
 
  protected:
   AliESDtrackCuts   *fEsdTrackCuts;      // esd track cuts
+  AliESDtrackCuts   *fHybridTrackCuts;   // hybrid track cuts
   TString            fTracksName;        // name of tracks 
   AliESDEvent       *fEsdEv;             //!esd event
   TClonesArray      *fTracks;            //!track array