]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Possibility for standalone MUON tracking outside the local reconstruction (Christian)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 28 Feb 2007 08:51:18 +0000 (08:51 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 28 Feb 2007 08:51:18 +0000 (08:51 +0000)
STEER/AliReconstruction.cxx
STEER/AliReconstruction.h

index 1c03396d3c38e4a63dde28e408170e19b6f9b3b4..a552c84978a3f540f32b29d57648c468a8716c20 100644 (file)
@@ -173,6 +173,7 @@ AliReconstruction::AliReconstruction(const char* gAliceFilename, const char* cdb
   fUniformField(kTRUE),
   fRunVertexFinder(kTRUE),
   fRunHLTTracking(kFALSE),
+  fRunMuonTracking(kFALSE),
   fStopOnError(kFALSE),
   fWriteAlignmentData(kFALSE),
   fWriteESDfriend(kFALSE),
@@ -220,6 +221,7 @@ AliReconstruction::AliReconstruction(const AliReconstruction& rec) :
   fUniformField(rec.fUniformField),
   fRunVertexFinder(rec.fRunVertexFinder),
   fRunHLTTracking(rec.fRunHLTTracking),
+  fRunMuonTracking(rec.fRunMuonTracking),
   fStopOnError(rec.fStopOnError),
   fWriteAlignmentData(rec.fWriteAlignmentData),
   fWriteESDfriend(rec.fWriteESDfriend),
@@ -729,16 +731,26 @@ Bool_t AliReconstruction::Run(const char* input)
       }
     }
 
-    // barrel tracking
+    // Muon tracking
     if (!fRunTracking.IsNull()) {
-      if (!ReadESD(esd, "tracking")) {
-       if (!RunTracking(esd)) {
+      if (fRunMuonTracking) {
+       if (!RunMuonTracking()) {
          if (fStopOnError) {CleanUp(file, fileOld); return kFALSE;}
        }
-       if (fCheckPointLevel > 0) WriteESD(esd, "tracking");
       }
     }
 
+    // barrel tracking
+    if (!fRunTracking.IsNull()) {
+      if (!fRunMuonTracking) {
+       if (!ReadESD(esd, "tracking")) {
+         if (!RunTracking(esd)) {
+           if (fStopOnError) {CleanUp(file, fileOld); return kFALSE;}
+         }
+         if (fCheckPointLevel > 0) WriteESD(esd, "tracking");
+       }
+      }
+    }
     // fill ESD
     if (!fFillESD.IsNull()) {
       if (!FillESD(esd, fFillESD)) {
@@ -1075,6 +1087,62 @@ Bool_t AliReconstruction::RunHLTTracking(AliESD*& esd)
   return kTRUE;
 }
 
+//_____________________________________________________________________________
+Bool_t AliReconstruction::RunMuonTracking()
+{
+// run the muon spectrometer tracking
+
+  TStopwatch stopwatch;
+  stopwatch.Start();
+
+  if (!fRunLoader) {
+    AliError("Missing runLoader!");
+    return kFALSE;
+  }
+  Int_t iDet = 7; // for MUON
+
+  AliInfo("is running...");
+
+  // Get a pointer to the MUON reconstructor
+  AliReconstructor *reconstructor = GetReconstructor(iDet);
+  if (!reconstructor) return kFALSE;
+
+  
+  TString detName = fgkDetectorName[iDet];
+  AliDebug(1, Form("%s tracking", detName.Data()));
+  AliTracker *tracker =  reconstructor->CreateTracker(fRunLoader);
+  if (!tracker) {
+    AliWarning(Form("couldn't create a tracker for %s", detName.Data()));
+    return kFALSE;
+  }
+     
+  // create Tracks
+  fLoader[iDet]->LoadTracks("update");
+  fLoader[iDet]->CleanTracks();
+  fLoader[iDet]->MakeTracksContainer();
+
+  // read RecPoints
+  fLoader[iDet]->LoadRecPoints("read");
+
+  if (!tracker->Clusters2Tracks(0x0)) {
+    AliError(Form("%s Clusters2Tracks failed", fgkDetectorName[iDet]));
+    return kFALSE;
+  }
+  fLoader[iDet]->UnloadRecPoints();
+
+  fLoader[iDet]->WriteTracks("OVERWRITE");
+  fLoader[iDet]->UnloadTracks();
+
+  delete tracker;
+  
+
+  AliInfo(Form("Execution time: R:%.2fs C:%.2fs",
+              stopwatch.RealTime(),stopwatch.CpuTime()));
+
+  return kTRUE;
+}
+
+
 //_____________________________________________________________________________
 Bool_t AliReconstruction::RunTracking(AliESD*& esd)
 {
@@ -1569,6 +1637,11 @@ Bool_t AliReconstruction::CreateTrackers(const TString& detectors)
       fRunHLTTracking = kTRUE;
       continue;
     }
+    if (detName == "MUON") {
+      fRunMuonTracking = kTRUE;
+      continue;
+    }
+
 
     fTracker[iDet] = reconstructor->CreateTracker(fRunLoader);
     if (!fTracker[iDet] && (iDet < 7)) {
index ea0b9584d1b73fc33871d3ca91a9a13606ff7df3..c3b24639e26a8128ffdda7bbd76b0e5c59a2b04f 100644 (file)
@@ -106,6 +106,7 @@ private:
   Bool_t         RunLocalEventReconstruction(const TString& detectors);
   Bool_t         RunVertexFinder(AliESD*& esd);
   Bool_t         RunHLTTracking(AliESD*& esd);
+  Bool_t         RunMuonTracking();
   Bool_t         RunTracking(AliESD*& esd);
   Bool_t         FillESD(AliESD*& esd, const TString& detectors);
   Bool_t         FillTriggerESD(AliESD*& esd);
@@ -134,6 +135,7 @@ private:
   Bool_t         fUniformField;       // uniform field tracking flag
   Bool_t         fRunVertexFinder;    // run the vertex finder
   Bool_t         fRunHLTTracking;     // run the HLT tracking
+  Bool_t         fRunMuonTracking;     // run the HLT tracking
   Bool_t         fStopOnError;        // stop or continue on errors
   Bool_t         fWriteAlignmentData; // write track space-points flag
   Bool_t         fWriteESDfriend;     // write ESD friend flag