#include "AliMUONRegionalTrigger.h"
#include "AliMUONGlobalTrigger.h"
-#include "AliMpIntPair.h"
+#include "AliMpEncodePair.h"
#include "AliMpDEManager.h"
#include "AliMpConstants.h"
-#include "AliMpSegmentation.h"
+#include "AliMpCDB.h"
#include "AliLog.h"
#include "AliRunLoader.h"
+#include "AliHeader.h"
#include "AliStack.h"
+#include "AliCDBManager.h"
#include <Riostream.h>
#include <TClonesArray.h>
++fgInstanceCounter;
+ if ( AliCDBManager::Instance() != NULL &&
+ AliCDBManager::Instance()->GetDefaultStorage() == NULL ) {
+ AliFatal("CDB default storage not defined.");
+ }
+
Open(filename);
+
+ // Load mapping
+ if ( ! AliMpCDB::LoadMpSegmentation() ) {
+ AliFatal("Could not access mapping from OCDB !");
+ }
}
//_____________________________________________________________________________
/// Return the hitStore for a given track of one event
/// Return 0x0 if event and/or track not found
/// Returned pointer should not be deleted
+ ///
+ /// \note If a previous store has been retrieved by one of the methods of
+ /// this class, but for a different event number, then those stores will
+ /// be deleted and no longer valid.
+ /// If you require access to the data for the earlier retrieved store,
+ /// but for different events, then you should deep copy / clone the object.
if (not IsValid()) return 0x0;
- if (event == fCurrentEvent
- and fDataX == track // using fDataX as track number.
- and fHitStore != 0x0
- )
+
+ if (event == fCurrentEvent)
+ {
+ if (track == fDataX and fHitStore != 0x0) // using fDataX as track number.
return fHitStore;
-
- ResetStores();
- if (not LoadEvent(event)) return 0x0;
+ }
+ else
+ {
+ ResetStores();
+ if ( not LoadEvent(event) ) return 0x0;
+ }
fLoader->LoadHits();
/// Return the SDigit store for a given event.
/// Return 0 if event not found
/// Returned pointer should not be deleted
+ ///
+ /// \note If a previous store has been retrieved by one of the methods of
+ /// this class, but for a different event number, then those stores will
+ /// be deleted and no longer valid.
+ /// If you require access to the data for the earlier retrieved store,
+ /// but for different events, then you should deep copy / clone the object.
if (not IsValid()) return 0x0;
- if (event == fCurrentEvent and fSDigitStore != 0x0) return fSDigitStore;
- ResetStores();
- if (not LoadEvent(event)) return 0x0;
+ if (event == fCurrentEvent)
+ {
+ if (fSDigitStore != 0x0)
+ return fSDigitStore;
+ }
+ else
+ {
+ ResetStores();
+ if ( not LoadEvent(event) ) return 0x0;
+ }
fLoader->LoadSDigits();
{
/// Return a pointer to the digitStore for a given event (or 0 if not found)
/// Returned pointer should not be deleted
+ ///
+ /// \note If a previous store has been retrieved by one of the methods of
+ /// this class, but for a different event number, then those stores will
+ /// be deleted and no longer valid.
+ /// If you require access to the data for the earlier retrieved store,
+ /// but for different events, then you should deep copy / clone the object.
if (not IsValid()) return 0x0;
- if (event == fCurrentEvent and fDigitStore != 0x0) return fDigitStore;
- ResetStores();
- if (not LoadEvent(event)) return 0x0;
+ if (event == fCurrentEvent)
+ {
+ if (fDigitStore != 0x0)
+ return fDigitStore;
+ }
+ else
+ {
+ ResetStores();
+ if ( not LoadEvent(event) ) return 0x0;
+ }
fLoader->LoadDigits();
{
/// Get the Stack (list of generated particles) for one event
/// Returned pointer should not be deleted
+ ///
+ /// \note If a previous store has been retrieved by one of the methods of
+ /// this class, but for a different event number, then those stores will
+ /// be deleted and no longer valid.
+ /// If you require access to the data for the earlier retrieved store,
+ /// but for different events, then you should deep copy / clone the object.
if ( not IsValid() ) return 0x0;
{
/// Get the track references for a given (generated) track of one event
/// Returned pointer should not be deleted
+ ///
+ /// \note If a previous store has been retrieved by one of the methods of
+ /// this class, but for a different event number, then those stores will
+ /// be deleted and no longer valid.
+ /// If you require access to the data for the earlier retrieved store,
+ /// but for different events, then you should deep copy / clone the object.
if ( not IsValid() ) return 0x0;
-
- if (event != fCurrentEvent)
+
+ if (event == fCurrentEvent)
+ {
+ if (track == fDataX and fTrackRefs != 0x0) // using fDataX as track number.
+ return fTrackRefs;
+ }
+ else
{
ResetStores();
if ( not LoadEvent(event) ) return 0x0;
}
- if (track == fDataX) // using fDataX as track number.
- return fTrackRefs;
-
fLoader->GetRunLoader()->LoadTrackRefs();
TTree* treeTR = fLoader->GetRunLoader()->TreeTR();
{
if ( treeTR->GetEvent(track) > 0 )
{
- TBranch* branch = treeTR->GetBranch("MUON");
+ TBranch* branch = treeTR->GetBranch("TrackReferences");
branch->SetAddress(&fTrackRefs);
branch->GetEvent(track);
fDataX = track; // using fDataX as track number.
/// Return the triggerStore for a given event.
/// Return 0x0 if event not found.
/// Returned pointer should not be deleted.
+ ///
+ /// \note If a previous store has been retrieved by one of the methods of
+ /// this class, but for a different event number, then those stores will
+ /// be deleted and no longer valid.
+ /// If you require access to the data for the earlier retrieved store,
+ /// but for different events, then you should deep copy / clone the object.
if (not IsValid()) return 0x0;
- if (event == fCurrentEvent and fTriggerStore != 0x0) return fTriggerStore;
- ResetStores();
- if (not LoadEvent(event)) return 0x0;
+ if (event == fCurrentEvent)
+ {
+ if (fTriggerStore != 0x0)
+ return fTriggerStore;
+ }
+ else
+ {
+ ResetStores();
+ if ( not LoadEvent(event) ) return 0x0;
+ }
fLoader->LoadDigits();
AliError(Form("Cannot open file %s",filename));
fIsValid = kFALSE;
}
+
+ // Get run number and set it to CDB manager
+ runLoader->LoadHeader();
+ if ( ! runLoader->GetHeader() ) {
+ AliError("Cannot load header.");
+ fIsValid = kFALSE;
+ }
+ else {
+ Int_t runNumber = runLoader->GetHeader()->GetRun();
+ AliCDBManager::Instance()->SetRun(runNumber);
+ }
+ runLoader->UnloadHeader();
+
fLoader = runLoader->GetDetectorLoader("MUON");
if (fLoader == 0x0)
{
Int_t detElem = x;
AliMUONVDigitStore* store = SDigitStore(fCurrentEvent);
if (store == 0x0) return 0x0;
- AliMpSegmentation::ReadData(kFALSE); // kFALSE so that we do not get warning message.
fIterator = store->CreateIterator(detElem, detElem, 2);
if (fIterator == 0x0) return 0x0;
fCurrentIteratorType = kSDigitIteratorByDetectorElement;
AliMUONVDigitStore* store = SDigitStore(fCurrentEvent);
if (store == 0x0) return 0x0;
- AliMpSegmentation::ReadData(kFALSE); // kFALSE so that we do not get warning message.
- AliMpIntPair pair = AliMpDEManager::GetDetElemIdRange(chamber);
- fIterator = store->CreateIterator(pair.GetFirst(), pair.GetSecond(), cathode);
+ MpPair_t pair = AliMpDEManager::GetDetElemIdRange(chamber);
+ fIterator = store->CreateIterator(AliMp::PairFirst(pair), AliMp::PairSecond(pair), cathode);
if (fIterator == 0x0) return 0x0;
fCurrentIteratorType = kSDigitIteratorByChamberAndCathode;
fDataX = chamber;
Int_t detElem = x;
AliMUONVDigitStore* store = DigitStore(fCurrentEvent);
if (store == 0x0) return 0x0;
- AliMpSegmentation::ReadData(kFALSE); // kFALSE so that we do not get warning message.
fIterator = store->CreateIterator(detElem, detElem, 2);
if (fIterator == 0x0) return 0x0;
fCurrentIteratorType = kDigitIteratorByDetectorElement;
AliMUONVDigitStore* store = DigitStore(fCurrentEvent);
if (store == 0x0) return 0x0;
- AliMpSegmentation::ReadData(kFALSE); // kFALSE so that we do not get warning message.
- AliMpIntPair pair = AliMpDEManager::GetDetElemIdRange(chamber);
- fIterator = store->CreateIterator(pair.GetFirst(), pair.GetSecond(), cathode);
+ MpPair_t pair = AliMpDEManager::GetDetElemIdRange(chamber);
+ fIterator = store->CreateIterator(AliMp::PairFirst(pair), AliMp::PairSecond(pair), cathode);
if (fIterator == 0x0) return 0x0;
fCurrentIteratorType = kDigitIteratorByChamberAndCathode;
fDataX = chamber;