AliMUONStopwatchGroupElement timer(fTimers,"MUON","AliMUONReconstructor::CreateTriggerCircuit()");
- fTriggerCircuit = new TClonesArray("AliMUONTriggerCircuit", 234);
- for (Int_t i = 0; i < AliMUONConstants::NTriggerCircuit(); i++)
- {
- AliMUONTriggerCircuit c;
- c.SetTransformer(fTransformer);
- c.Init(i,*(CrateManager()));
- TClonesArray& circuit = *fTriggerCircuit;
- new(circuit[circuit.GetEntriesFast()]) AliMUONTriggerCircuit(c);
- }
-}
+ fTriggerCircuit = new AliMUONTriggerCircuit(fTransformer);
+}
//_____________________________________________________________________________
AliTracker*
AliMUONReconstructor::CreateTracker(AliRunLoader* runLoader) const
mutable AliMUONDigitMaker* fDigitMaker; //!< Raw to Digits converter
AliMUONGeometryTransformer* fTransformer; //!< Geometry transformer (local<->global)
mutable AliMUONVDigitStore* fDigitStore; //!< Digit container
- mutable TClonesArray* fTriggerCircuit; //!< Trigger Circuit
+ mutable AliMUONTriggerCircuit* fTriggerCircuit; //!< Trigger Circuit
mutable AliMUONCalibrationData* fCalibrationData; //!< Calibration data
mutable AliMUONDigitCalibrator* fDigitCalibrator; //!< Digit to calibrate digit converter
mutable AliMUONClusterReconstructor* fClusterReconstructor; //!< Clusterizer
AliMUONTracker::AliMUONTracker(AliLoader* loader,
const AliMUONDigitMaker* digitMaker,
const AliMUONGeometryTransformer* transformer,
- const TClonesArray* triggerCircuit)
+ const AliMUONTriggerCircuit* triggerCircuit)
: AliTracker(),
fLoader(loader),
fDigitMaker(digitMaker), // not owner
class AliMUONDigitMaker;
class AliMUONGeometryTransformer;
class AliMUONTrackHitPattern;
+class AliMUONTriggerCircuit;
class AliMUONVClusterStore;
class AliMUONVTrackReconstructor;
class AliMUONVTrackStore;
class AliMUONVTriggerStore;
-class TClonesArray;
class AliMUONTracker : public AliTracker
{
AliMUONTracker(AliLoader* loader,
const AliMUONDigitMaker* digitMaker=0,
const AliMUONGeometryTransformer* transformer=0,
- const TClonesArray* triggerCircuit=0);
+ const AliMUONTriggerCircuit* triggerCircuit=0);
virtual ~AliMUONTracker();
/// Main entry point.
AliLoader* fLoader; //!< loader to get access to trees
const AliMUONDigitMaker* fDigitMaker; //!< digit maker (not owner)
const AliMUONGeometryTransformer* fTransformer; //!< geometry transformer (not owner)
- const TClonesArray* fTriggerCircuit; //!< trigger circuit (not owner)
+ const AliMUONTriggerCircuit* fTriggerCircuit; //!< trigger circuit (not owner)
AliMUONTrackHitPattern* fTrackHitPatternMaker; //!< trigger hit pattern maker
AliMUONVTrackReconstructor* fTrackReco; //!< track reconstructor
AliMUONVClusterStore* fClusterStore; //!< cluster container
//__________________________________________________________________________
void
-AliMUONVTrackReconstructor::EventReconstructTrigger(const TClonesArray& triggerCircuitArray,
+AliMUONVTrackReconstructor::EventReconstructTrigger(const AliMUONTriggerCircuit& circuit,
const AliMUONVTriggerStore& triggerStore,
AliMUONVTriggerTrackStore& triggerTrackStore)
{
Bool_t xTrig=kFALSE;
Bool_t yTrig=kFALSE;
+ Int_t localBoardId = locTrg->LoCircuit();
if ( locTrg->LoSdev()==1 && locTrg->LoDev()==0 &&
locTrg->LoStripX()==0) xTrig=kFALSE; // no trigger in X
else xTrig=kTRUE; // trigger in X
if (xTrig && yTrig)
{ // make Trigger Track if trigger in X and Y
- AliMUONTriggerCircuit*circuit = static_cast<AliMUONTriggerCircuit*>
- (triggerCircuitArray.At(locTrg->LoCircuit()-1)); // -1 !!!
-
- Float_t y11 = circuit->GetY11Pos(locTrg->LoStripX());
+ Float_t y11 = circuit.GetY11Pos(localBoardId, locTrg->LoStripX());
// need first to convert deviation to [0-30]
// (see AliMUONLocalTriggerBoard::LocalTrigger)
Int_t deviation = locTrg->LoDev();
deviation *= sign;
deviation += 15;
Int_t stripX21 = locTrg->LoStripX()+deviation+1;
- Float_t y21 = circuit->GetY21Pos(stripX21);
- Float_t x11 = circuit->GetX11Pos(locTrg->LoStripY());
+ Float_t y21 = circuit.GetY21Pos(localBoardId, stripX21);
+ Float_t x11 = circuit.GetX11Pos(localBoardId, locTrg->LoStripY());
AliDebug(1, Form(" MakeTriggerTrack %d %d %d %d %f %f %f \n",locTrg->LoCircuit(),
locTrg->LoStripX(),locTrg->LoStripX()+locTrg->LoDev()+1,locTrg->LoStripY(),y11, y21, x11));
triggerTrack.SetThetax(thetax);
triggerTrack.SetThetay(thetay);
triggerTrack.SetGTPattern(gloTrigPat);
- triggerTrack.SetLoTrgNum(locTrg->LoCircuit());
+ triggerTrack.SetLoTrgNum(localBoardId);
triggerTrackStore.Add(triggerTrack);
} // board is fired
class AliMUONVTriggerStore;
class AliMUONGeometryTransformer;
class AliMUONDigitMaker;
+class AliMUONTriggerCircuit;
class AliMUONVTrackReconstructor : public TObject {
void EventReconstruct(const AliMUONVClusterStore& clusterStore,
AliMUONVTrackStore& trackStore);
- void EventReconstructTrigger(const TClonesArray& triggerCircuitArray,
+ void EventReconstructTrigger(const AliMUONTriggerCircuit& triggerCircuit,
const AliMUONVTriggerStore& triggerStore,
AliMUONVTriggerTrackStore& triggerTrackStore);