+ if (fESDEventOwner) {
+ delete fMCEventHandler;
+ delete fESDEvent;
+ if (fESDFile) fESDFile->Close();
+ }
+ ResetStores();
+ delete fGeometryTransformer;
+ delete fTriggerCircuit;
+}
+
+//_____________________________________________________________________________
+void AliMUONRecoCheck::ResetStores()
+{
+ /// Deletes all the store objects that have been created and resets the pointers to 0x0
+ delete fTrackRefStore; fTrackRefStore = 0x0;
+ delete fRecoTrackRefStore; fRecoTrackRefStore = 0x0;
+ delete fRecoTriggerRefStore; fRecoTriggerRefStore = 0x0;
+ delete fRecoTrackStore; fRecoTrackStore = 0x0;
+ delete fRecoTriggerTrackStore; fRecoTriggerTrackStore = 0x0;
+}
+
+//_____________________________________________________________________________
+Bool_t AliMUONRecoCheck::InitCircuit()
+{
+
+ if ( fTriggerCircuit ) return kTRUE;
+
+ if ( !AliMUONCDB::CheckOCDB() ) return kFALSE;
+
+ if ( !AliGeomManager::GetGeometry() )
+ AliGeomManager::LoadGeometry();
+
+ if ( !AliMpDDLStore::Instance(false) )
+ AliMpCDB::LoadDDLStore();
+
+ fGeometryTransformer = new AliMUONGeometryTransformer();
+ fGeometryTransformer->LoadGeometryData();
+
+ fTriggerCircuit = new AliMUONTriggerCircuit(fGeometryTransformer);
+
+ // reset tracker for local trigger to trigger track conversion
+ if ( ! AliMUONESDInterface::GetTracker() )
+ AliMUONESDInterface::ResetTracker();
+
+ return kTRUE;
+}
+
+
+//_____________________________________________________________________________
+Int_t AliMUONRecoCheck::GetRunNumber()
+{
+ /// Return the run number of the current ESD event
+
+ if (fESDEventOwner && fRecoTrackStore == 0x0 && fRecoTriggerTrackStore == 0x0) {
+ if (!fESDTree || fESDTree->GetEvent(fCurrentEvent) <= 0) {
+ AliError(Form("fails to read ESD object for event %d: cannot get the run number",fCurrentEvent));
+ return -1;
+ }
+ }
+
+ return fESDEvent->GetRunNumber();
+}
+
+//_____________________________________________________________________________
+Int_t AliMUONRecoCheck::NumberOfEvents() const
+{
+ /// Return the number of events
+ if (fESDEventOwner && fESDTree) return fESDTree->GetEntries();
+ return 0;
+}
+
+//_____________________________________________________________________________
+AliMUONVTrackStore* AliMUONRecoCheck::ReconstructedTracks(Int_t event, Bool_t refit)
+{
+ /// Return a track store containing the reconstructed tracks (converted into
+ /// MUONTrack objects) for a given event.
+ /// Track parameters at each clusters are computed or not depending on the flag "refit".
+ /// If not, only the track parameters at first cluster are valid.
+
+ if (!fESDEventOwner) {
+ if (fRecoTrackStore == 0x0) MakeReconstructedTracks(refit);
+ return fRecoTrackStore;
+ }
+
+ if (event != fCurrentEvent) {
+ ResetStores();
+ fCurrentEvent = event;
+ }
+
+ if (fRecoTrackStore != 0x0) return fRecoTrackStore;
+ else {
+ if (!fESDTree) return 0x0;
+ if (fESDTree->GetEvent(event) <= 0) {
+ AliError(Form("fails to read ESD object for event %d", event));
+ return 0x0;
+ }
+ MakeReconstructedTracks(refit);
+ return fRecoTrackStore;
+ }