#ifndef STNTUPLE_TStnTriggerBlock #define STNTUPLE_TStnTriggerBlock //----------------------------------------------------------------------------- // definition of the STNTUPLE trigger block // Author: Pasha Murat (CDF/FNAL) // Date: Nov 26 2000 // // with more triger banks added later one might want to split this // block into several pieces, but not right now... //----------------------------------------------------------------------------- #include "TClonesArray.h" #include #include #include #include #include #include #include #include #include #include #include class TStnTriggerTable; class TStnTriggerBlock: public TStnDataBlock { friend Int_t StntupleInitTriggerBlock(TStnDataBlock* block, AbsEvent* event, int mode); friend Int_t StntupleInitTrigSimBlock(TStnDataBlock* block, AbsEvent* event, int mode); public: enum { kNwordsV1 = 4+11+16, // TSID, TFRD, TL1D kNwordsV2 = 4+11+16, // TSID, TFRD, TL1D kNwordsV3 = 4+11+16+18, // TSID, TFRD, TL1D, L1-L3 info's kNwordsV6 = 4+11+24+18 // fix it (TL1D has 6 cards...) }; //------------------------------------------------------------------------------ // data members: TSID - fL3Info saved by one copy // I suspect that in versions <=4 last several words of fL3Info are not // restored properly... but the rest - should... //------------------------------------------------------------------------------ TTsid fTsid; // ! 4 TSID words + pvfunc TTfrd fTfrd; // ! 11 TFRD words + pvfunc TTl1d fTl1d; // ! 16 TL1D words + N*pnfunc... TStnL1Info fL1Info; // ! 6 words TStnL2Info fL2Info; // ! 6 words TStnL3Info fL3Info; // ! 6 words Float_t Beam[4]; // SVT beamline TTl2d fTl2d; // TL2D bank (var. length) TTl3d fTl3d; // TL3D bank - L3 summary (var. length) TTcmd fTcmd; // TCMD bank - L1 muon matchbox+ //------------------------------------------------------------------------------ // transient switches //------------------------------------------------------------------------------ Int_t fL3Source; // ! 1: get trig bits from L3ModuleResults // 0: from TL3D //------------------------------------------------------------------------------ // functions //------------------------------------------------------------------------------ public: // ****** constructors and destructor TStnTriggerBlock(); virtual ~TStnTriggerBlock(); // ****** accessors TTsid* Tsid () { return &fTsid; } TTfrd* Tfrd () { return &fTfrd; } TTl1d* Tl1d () { return &fTl1d; } TTl2d* Tl2d () { return &fTl2d; } TTl3d* Tl3d () { return &fTl3d; } TTcmd* Tcmd () { return &fTcmd; } TStnL1Info* L1Info () { return &fL1Info; } TStnL2Info* L2Info () { return &fL2Info; } TStnL3Info* L3Info () { return &fL3Info; } Int_t L3Source() { return fL3Source; } // for given trigger 'Table' fills // 'List' with the triggers of level // 'Level' (1,2,3) which are fired // for given event and contain pattern // 'Name' in their names // function value on return: number of // found triggers Int_t GetListOfPassedTriggers(const TStnTriggerTable* Table, const char* Name, Int_t Level, TObjArray* List); // SVT Beamline Float_t BeamX() const { return(Beam[0]);} Float_t BeamY() const { return(Beam[1]);} Float_t BeamDX() const { return(Beam[2]);} Float_t BeamDY() const { return(Beam[3]);} // ****** setters void SetL3Source(Int_t Src) { fL3Source = Src; } void SetBeamSpot(Float_t *val){ for(int i=0; i<4; i++) Beam[i] = val[i]; } // ****** overloaded functions of // TObject void Clear(Option_t* opt=""); void Print(Option_t* opt="") const; // ****** schema evolution void ReadV1(TBuffer &R__b); // version 2: TL3D added void ReadV2(TBuffer &R__b); // version 3: L1Info added void ReadV3(TBuffer &R__b); // version 4: TCMD added void ReadV4(TBuffer &R__b); // version 5: "remove some virtuality" void ReadV5(TBuffer &R__b); // version 6: add SvtBeamline void ReadV6(TBuffer &R__b); // version 7: write 24 words for TL1D ClassDef(TStnTriggerBlock,7) }; #endif