/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
+
/* $Id$ */
+// Revision of includes 07/05/2004
+
#ifndef ALIMUONTRIGGERDECISION_H
#define ALIMUONTRIGGERDECISION_H
-////////////////////////////////////////////////
-// MUON Trigger Decision Class //
-////////////////////////////////////////////////
-#include "TObject.h"
-class AliMUONHitMapA1;
-class TF1;
+/// \ingroup sim
+/// \class AliMUONTriggerDecision
+/// \brief MUON trigger decision class
+///
+/////////////////////////////////////////////////
+/// MUON Trigger Decision Class //
+/////////////////////////////////////////////////
+
+#include <TObject.h>
+#include "AliMUONLocalTrigger.h"
+
class TClonesArray;
-class AliMUONSegmentation;
-class AliMUONResponse;
-class AliMUONTriggerDecision :
-public TObject {
+class AliLoader;
+class AliMUONData;
+class AliMUON;
+class AliRawReader;
+
+
+class AliMUONTriggerDecision : public TObject
+{
public:
- AliMUONTriggerDecision(Int_t iprint); // constructor
+ AliMUONTriggerDecision(AliLoader* loader, Int_t iprint = 0, AliMUONData* data = 0); // constructor
+ AliMUONTriggerDecision(); // constructor
~AliMUONTriggerDecision(); // destructor
+ AliMUONData* GetMUONData() {return fMUONData;}
void Trigger();
void ResetBit();
void SetBit();
Int_t &iTrigger);
void GlobalTrigger();
+ void Digits2Trigger(); // main function for digitizer
+
+ void ClearDigits();
+ TClonesArray* Digits(Int_t DetectionPlane);
+
+ void AddDigit(
+ Int_t id, Int_t* tracks, Int_t* charges, Int_t* digits,
+ Int_t digitindex
+ );
+
// print-debug
void PrintBitPatXInput(Int_t icirc);
void PrintBitPatYInput(Int_t icirc);
Int_t coordY[5]);
// return member data information
- Int_t GetITrigger(Int_t icirc);
- Int_t GetStripX11(Int_t icirc);
- Int_t GetDev(Int_t icirc);
- Int_t GetStripY11(Int_t icirc);
- void GetLutOutput(Int_t icirc, Int_t lpt[2], Int_t hpt[2], Int_t apt[2]);
+ Int_t GetITrigger(Int_t icirc) const;
+ Int_t GetStripX11(Int_t icirc) const;
+ Int_t GetDev(Int_t icirc) const;
+ Int_t GetStripY11(Int_t icirc) const;
+ void GetLutOutput(Int_t icirc, Int_t lpt[2], Int_t hpt[2], Int_t apt[2]) const;
void GetGlobalTrigger(Int_t singlePlus[3], Int_t singleMinus[3],
Int_t singleUndef[3], Int_t pairUnlike[3],
- Int_t pairLike[3]);
-
-// Add a new Local Trigger
- // virtual void AddLocalTrigger(const AliMUONLocalTrigger);
-// Return pointer to Local Triggers
- // TClonesArray* LocalTriggers(){return fLocalTriggers;}
+ Int_t pairLike[3]) const;
+
ClassDef(AliMUONTriggerDecision,1) // Trigger Decision class
- protected:
+
+protected:
+
+ AliMUONTriggerDecision(const AliMUONTriggerDecision& rhs);
+ AliMUONTriggerDecision& operator=(const AliMUONTriggerDecision& rhs);
+
+ void ClearDigitNumbers();
+
+ void DigitFiredCircuit(
+ Int_t circuit, Int_t cathode,
+ Int_t chamber, Int_t digit
+ );
+
+
Int_t fDebug; // print option
// Global Trigger information [0] : Low pt, [1] : High pt, [2] : All pt
Int_t fYbit21D[234][16]; // bit pattern YM21 Down
Int_t fYbit22D[234][16]; // bit pattern YM22 Down
+ TArrayI fDigitNumbers[234]; //! The digit number that fired a circuit.
+
+ AliLoader* fLoader; //! alice loader
+ TObjArray* fTriggerCircuit; //! List of Trigger Circuit
+ TObjArray* fDigits; // temp array for digits (both cathodes !) for trigger
+ TArrayI* fDigitIndices; //! Array of digit index numbers, one for each entry in fDigits.
+
+ AliMUONData* fMUONData; //! Data container for MUON subsystem
+ AliMUON* fMUON; //! pointer to MUON
+
// ???
// TClonesArray* fLocalTriggers; // Local Triggers
// Int_t fNLocalTriggers; // Number of Local Triggers