]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONRecoCheck.cxx
Removing obsolete option
[u/mrichter/AliRoot.git] / MUON / AliMUONRecoCheck.cxx
index 64394965c0b010a234139d3a0717a1adb458a4b2..281701f008e804d5f31c9eace5d31367854cda58 100644 (file)
@@ -31,6 +31,7 @@
 // 25 Jan 2008:
 // Use the new ESDInterface to create MUON objects from ESD data
 // - Philippe Pillot
+// 
 
 #include "AliMUONRecoCheck.h"
 #include "AliMUONTrack.h"
@@ -39,7 +40,6 @@
 #include "AliMUONVClusterStore.h"
 #include "AliMUONConstants.h"
 #include "AliMUONESDInterface.h"
-
 #include "AliMCEventHandler.h"
 #include "AliMCEvent.h"
 #include "AliStack.h"
@@ -59,7 +59,7 @@ ClassImp(AliMUONRecoCheck)
 /// \endcond
 
 //_____________________________________________________________________________
-AliMUONRecoCheck::AliMUONRecoCheck(Char_t *esdFileName, Char_t *pathSim)
+AliMUONRecoCheck::AliMUONRecoCheck(const Char_t *esdFileName, const Char_t *pathSim)
 : TObject(),
 fMCEventHandler(new AliMCEventHandler()),
 fESDEvent(new AliESDEvent()),
@@ -68,7 +68,8 @@ fESDFile (0x0),
 fCurrentEvent(0),
 fTrackRefStore(0x0),
 fRecoTrackRefStore(0x0),
-fRecoTrackStore(0x0)
+fRecoTrackStore(0x0),
+fESDEventOwner(kTRUE)
 {
   /// Normal ctor
   
@@ -93,13 +94,38 @@ fRecoTrackStore(0x0)
   fESDEvent->ReadFromTree(fESDTree); // link fESDEvent to the tree
 }
 
+//_____________________________________________________________________________
+AliMUONRecoCheck::AliMUONRecoCheck(AliESDEvent *esdEvent, AliMCEventHandler *mcEventHandler)
+: TObject(),
+fMCEventHandler(0),
+fESDEvent(0),
+fESDTree (0x0),
+fESDFile (0x0),
+fCurrentEvent(0),
+fTrackRefStore(0x0),
+fRecoTrackRefStore(0x0),
+fRecoTrackStore(0x0),
+fESDEventOwner(kFALSE)
+{
+  /// Normal ctor
+  
+  // TrackRefs and Particules
+  fMCEventHandler = mcEventHandler;
+  
+  // ESD MUON Tracks
+  fESDEvent = esdEvent;
+  
+}
+
 //_____________________________________________________________________________
 AliMUONRecoCheck::~AliMUONRecoCheck()
 {
   /// Destructor
-  delete fMCEventHandler;
-  delete fESDEvent;
-  if (fESDFile) fESDFile->Close();
+  if (fESDEventOwner) {
+    delete fMCEventHandler;
+    delete fESDEvent;
+    if (fESDFile) fESDFile->Close();
+  }
   ResetStores();
 }
 
@@ -116,7 +142,7 @@ void AliMUONRecoCheck::ResetStores()
 Int_t AliMUONRecoCheck::NumberOfEvents() const
 {
   /// Return the number of events
-  if (fESDTree) return fESDTree->GetEntries();
+  if (fESDEventOwner && fESDTree) return fESDTree->GetEntries();
   return 0;
 }
 
@@ -125,6 +151,12 @@ AliMUONVTrackStore* AliMUONRecoCheck::ReconstructedTracks(Int_t event)
 {
   /// Return a track store containing the reconstructed tracks (converted into 
   /// MUONTrack objects) for a given event
+  
+  if (!fESDEventOwner) {
+    MakeReconstructedTracks();
+    return fRecoTrackStore;
+  }
+
   if (event != fCurrentEvent) {
     ResetStores();
     fCurrentEvent = event;
@@ -147,6 +179,12 @@ AliMUONVTrackStore* AliMUONRecoCheck::TrackRefs(Int_t event)
 {
   /// Return a track store containing the track references (converted into 
   /// MUONTrack objects) for a given event
+  
+  if (!fESDEventOwner) {
+    MakeTrackRefs();
+    return fTrackRefStore;
+  }
+
   if (event != fCurrentEvent) {
     ResetStores();
     fCurrentEvent = event;
@@ -167,6 +205,13 @@ AliMUONVTrackStore* AliMUONRecoCheck::TrackRefs(Int_t event)
 AliMUONVTrackStore* AliMUONRecoCheck::ReconstructibleTracks(Int_t event)
 {
   /// Return a track store containing the reconstructible tracks for a given event
+
+  if (!fESDEventOwner) {
+    if (TrackRefs(event) == 0x0) return 0x0;
+    MakeReconstructibleTracks();
+    return fRecoTrackRefStore;
+  }
+
   if (event != fCurrentEvent) {
     ResetStores();
     fCurrentEvent = event;
@@ -219,7 +264,7 @@ void AliMUONRecoCheck::MakeTrackRefs()
     
     // get the particle charge for further calculation
     TParticlePDG* ppdg = particle->GetPDG();
-    Int_t charge = (Int_t)(ppdg->Charge()/3.0);
+    Int_t charge = ppdg != NULL ? (Int_t)(ppdg->Charge()/3.0) : 0;
     
     AliMUONTrack track;
     
@@ -239,11 +284,12 @@ void AliMUONRecoCheck::MakeTrackRefs()
       pZ = trackReference->Pz();
       
       // check chamberId of current trackReference
-      Int_t chamberId = AliMUONConstants::ChamberNumber(z);
+      Int_t detElemId = trackReference->UserId();
+      Int_t chamberId = detElemId / 100 - 1;
       if (chamberId < 0 || chamberId >= AliMUONConstants::NTrackingCh()) continue;
       
       // set hit parameters
-      hit->SetUniqueID(AliMUONVCluster::BuildUniqueID(chamberId, 0, 0));
+      hit->SetUniqueID(AliMUONVCluster::BuildUniqueID(chamberId, detElemId, iHit));
       hit->SetXYZ(x,y,z);
       hit->SetErrXY(0.,0.);
       
@@ -406,7 +452,7 @@ void AliMUONRecoCheck::CleanMuonTrackRef(const AliMUONVTrackStore *tmpTrackRefSt
       inverseBendingMomentum *= trackParam1->GetCharge();
       
       // set hit parameters
-      hit->SetUniqueID(AliMUONVCluster::BuildUniqueID(trackParam1->GetClusterPtr()->GetChamberId(), 0, 0));
+      hit->SetUniqueID(trackParam1->GetClusterPtr()->GetUniqueID());
       hit->SetXYZ(x,y,z);
       hit->SetErrXY(0.,0.);