]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONRecoCheck.cxx
RAW QA only for calibration events
[u/mrichter/AliRoot.git] / MUON / AliMUONRecoCheck.cxx
index fd9e35aca12ae2a178518fa0a642e230778a5916..5a83d2e54e687711da3c90390206a1f5a89eba7b 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,6 +40,7 @@
 #include "AliMUONVClusterStore.h"
 #include "AliMUONConstants.h"
 #include "AliMUONESDInterface.h"
+#include "AliMUONTrackParam.h"
 #include "AliMCEventHandler.h"
 #include "AliMCEvent.h"
 #include "AliStack.h"
@@ -58,7 +60,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()),
@@ -67,7 +69,8 @@ fESDFile (0x0),
 fCurrentEvent(0),
 fTrackRefStore(0x0),
 fRecoTrackRefStore(0x0),
-fRecoTrackStore(0x0)
+fRecoTrackStore(0x0),
+fESDEventOwner(kTRUE)
 {
   /// Normal ctor
   
@@ -92,13 +95,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();
 }
 
@@ -115,7 +143,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;
 }
 
@@ -124,6 +152,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;
@@ -146,6 +180,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;
@@ -166,6 +206,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;
@@ -238,11 +285,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.);
       
@@ -307,7 +355,7 @@ void AliMUONRecoCheck::MakeTrackRefs()
     track.SetTrackParamAtVertex(&trackParamAtVertex);
     
     // store the track
-    track.SetTrackID(iTrackRef);
+    track.SetUniqueID(iTrackRef);
     tmpTrackRefStore->Add(track);
   }
   
@@ -405,7 +453,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.);
       
@@ -424,7 +472,7 @@ void AliMUONRecoCheck::CleanMuonTrackRef(const AliMUONVTrackStore *tmpTrackRefSt
       iHit1++;
     }
     
-    newTrack.SetTrackID(track->GetTrackID());
+    newTrack.SetUniqueID(track->GetUniqueID());
     newTrack.SetTrackParamAtVertex(track->GetTrackParamAtVertex());
     fTrackRefStore->Add(newTrack);