// -*- mode: c++ -*- // // $Id: BrDetectorList.h,v 1.5 2001/12/21 20:39:12 operator Exp $ // // #ifndef BRAT_BrDetectorList_h #define BRAT_BrDetectorList_h class TObject; enum EBrDetectorBit { kBrT1=0, // TPC 1 in front forward ON kBrT2, // TPC 2 in front forward ON kBrC1, // Cerenkov in front forward ON kBrTOF1, // Hodoscope in front forward ON kBrT3, // Drift chamber 1 in back forward ON kBrT4, // Drift chamber 2 in back forward ON kBrT5, // Drift chamber 3 in back forward ON kBrTOF2, // Hodoscope in back forward ON kBrRICH, // Ring Imagine Cherenkov in back forward ON kBrTPM1, // TPC 1 in mid rapidity ON kBrTPM2, // TPC 2 in mid rapidity ON kBrTOFW, // TOFW panel in mid rapidity ON kBrGASC, // Gas Cherenkov counter ON kBrTile, // Multiplicity Scintilators ON kBrSi, // Multiplicity silicon wafers ON kBrBB, // Beam-Beam counters ON kBrZDC, // Zero Degree Calorimeters ON kBrTD1, kBrTMRS }; enum EBrSectorBit { // ALL Detectors turned OFF kBrNone=0, // Front Forward Spectrometer ON kBrFFS = BIT(kBrT1) | BIT(kBrT2) | BIT(kBrC1)| BIT(kBrTOF1) | BIT(kBrTD1), // Back Forward Spectrometer ON kBrBFS = BIT(kBrT3)| BIT(kBrT4)| BIT(kBrT5)| BIT(kBrTOF2) | BIT(kBrRICH), // Forward Spectrometer ON kBrFS = kBrFFS | kBrBFS, // Mid Rapidity Sepctrometer ON kBrMRS = BIT(kBrTPM1)| BIT(kBrTPM2)| BIT(kBrTOFW) | BIT(kBrTMRS), // Global detectors ON kBrGlobal = BIT(kBrTile)| BIT(kBrSi)| BIT(kBrBB)| BIT(kBrZDC), // ALL detectors ON kBrAll = kBrGlobal | kBrMRS | kBrFS } ; class BrDetectorList : public TObject { private: UInt_t fDetectorMask; // Detector Mask public: // This is changed to a enum type following advice of Fons R. // static const Int_t kNumDetectors; // static const Char_t* kDetectorNames[]; // static const Char_t* kDetectorTypes[]; enum { kNumDetectors = 19 }; static const Char_t* kDetectorNames[kNumDetectors]; static const Char_t* kDetectorTypes[kNumDetectors]; BrDetectorList(EBrSectorBit mask=kBrAll); BrDetectorList(BrDetectorList& mask); Bool_t IsOn(const EBrDetectorBit bit) const { return TESTBIT(fDetectorMask,bit);} static const Char_t* GetDetectorName(EBrDetectorBit bit); static const Char_t* GetDetectorType(EBrDetectorBit bit); UInt_t GetDetectorMask(void) const { return fDetectorMask; } void SetDetectorMask(UInt_t mask) { fDetectorMask = mask; } void SetDetectorOn(EBrDetectorBit bit) { SETBIT(fDetectorMask,bit); } void SetDetectorOff(EBrDetectorBit bit) { CLRBIT(fDetectorMask,bit); } void SetAllOn(void) { fDetectorMask = (UInt_t)kBrAll; } void SetAllOff(void) { fDetectorMask = (UInt_t)kBrNone; } void AddToDetectorMask(UInt_t mask) { fDetectorMask |= mask;} void StripDetectorMask(UInt_t mask) { fDetectorMask &= ~mask;} void Print(Option_t* option="") const; ClassDef(BrDetectorList,1) // Detector bitmap mask } ; #endif // $Log: BrDetectorList.h,v $ // Revision 1.5 2001/12/21 20:39:12 operator // *** empty log message *** // // Revision 1.3 2001/12/21 15:19:00 ejkim // add "TD1" & "TMRS" fro trigger counter etc // // Revision 1.2 2001/07/16 18:42:08 cholm // Fixed dictionary generation, so that detctor bits work in interpreted code, // i.e., the configuration scripts. Also added the method Print so that one // can print which detectors are on/off easily in a given detector mask. // // Revision 1.1.1.1 2001/06/21 14:55:19 hagel // Initial revision of brat2 // // Revision 1.7 2000/08/14 17:28:50 cholm // Following advice of Fons Rademarkers, I've changed the datatype of // BrDetectorList::kNumberOfDetectors from static const Int_t to enum, // so that TDataMember::GetMaxIndex(0) for BrDetectorList::kDetectorNames[] // doens't return large negative number, which f**k up the HTML generation. // // Revision 1.6 2000/07/29 23:31:07 hagel // Move CVS log to bottom // // Revision 1.5 2000/07/29 23:28:42 hagel // add const to IsOn() // // Revision 1.4 2000/07/28 20:38:05 alv // Made IsOn method const // // Revision 1.3 2000/06/13 17:05:25 alv // Added RICH bit in kBrBFS // // Revision 1.2 2000/05/17 10:36:10 ouerdane // see top of file // // Revision 1.1 2000/04/06 20:17:08 cholm // Added the classes BrAppOption, BrAppOptionManager, and // BrDetectorList. The first two are for command line processing, // the third for easy detector list, can be used for many purposes //