//------------------------------------------------------------------- // File and Version Information: // $Id: TSvtDataBlock.hh,v 1.6 2005/12/15 23:34:02 rlc Exp $ // // Svt Data Structure which contains a list of SVT tracks, a list // of XTRP tracks, and Event related informations relevant to SVT. // // Author List // Subir Sarkar //------------------------------------------------------------------- #ifndef TSvtDataBlock_hh #define TSvtDataBlock_hh #include "TClonesArray.h" #include #include #include #include class TSvtDataBlock : public TStnDataBlock { friend Int_t StntupleInitSvtDataBlock(TStnDataBlock *, AbsEvent *, int); //----------------------------------------------------------------------------- // data members //----------------------------------------------------------------------------- protected: Int_t fNSvtTracks; // N(SVT tracks) in the SVTD bank Int_t fNXftTracks; // N(XTRP tracks) in the SVTD bank Int_t fEEWord; // End Event word TClonesArray *fSvtTrackList; // list of SVT tracks TClonesArray *fXftTrackList; // list of XTRP tracks Float_t Beam[4]; // beamline //----------------------------------------------------------------------------- // functions //----------------------------------------------------------------------------- public: // ****** constructors and destructor TSvtDataBlock(); virtual ~TSvtDataBlock(); // ****** accessors Int_t NSvtTracks() const { return fNSvtTracks; } Int_t NXftTracks() const { return fNXftTracks; } Int_t BunchTag() const { return fEEWord & 0xff; } Int_t ParityBit() const { return (fEEWord >> 8) & 0x1; } Int_t GError() const { return (fEEWord >> 9) & 0xff; } Int_t L1TrigInfo() const { return (fEEWord >> 17) & 0x3; } Int_t L2BufId() const { return (fEEWord >> 19) & 0x3; } Int_t EEWord() const {return fEEWord;} void SetEEWord (Int_t eeword) {fEEWord = eeword;} 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]);} TSvtTrack *SvtTrack(int i) { return (TSvtTrack *) fSvtTrackList->UncheckedAt(i); } TSvXtTrack *XftTrack(int i) { return (TSvXtTrack *) fXftTrackList->UncheckedAt(i); } // ****** modifiers TSvtTrack *NewSvtTrack() { return new ((*fSvtTrackList)[fNSvtTracks++]) TSvtTrack(); } TSvtTrack *NewSvtTrack(Int_t size, Int_t *data) { return new ((*fSvtTrackList)[fNSvtTracks++]) TSvtTrack(size, data); } TSvXtTrack *NewSvXtTrack() { return new ((*fXftTrackList)[fNXftTracks++]) TSvXtTrack(); } TSvXtTrack *NewSvXtTrack(Int_t word, const Bool_t validTrack) { return new ((*fXftTrackList)[fNXftTracks++]) TSvXtTrack(word, validTrack); } void SetBeamSpot(Float_t *val); void SetBeamSpot(Int_t ib,Float_t val){Beam[ib]=val;} // ****** trick: force load, this method is // to fool smart compilers (KCC) and // to force pulling in the object file void ForceLoad(); // ****** overloaded methods of TObject void Clear(Option_t *opt=""); void Print(Option_t *opt="") const; void Print(TClonesArray *vec, Option_t* opt="") const; ClassDef(TSvtDataBlock, 2) }; #endif