#ifndef STNTUPLE_TStnSecVtxTagBlock #define STNTUPLE_TStnSecVtxTagBlock //----------------------------------------------------------------------------- // definition of the STNTUPLE SecVtxTag block // Author: Originally Jong-Young Chung // Date: 11/14/2001 // // Each jet has a SecVtxObj-like object in the TClonesArray. You can use the // the TStnSecVtxTag::Jet() function to link between the TStnJetBlock and this // block, although the order is meant to be the same. // // The links between the track block and the various tracks used in the tag // are kept in the three TStnTrackLinks. // // Updated by Aaron Dominguez on 11/19/2002. // //----------------------------------------------------------------------------- #include "TClonesArray.h" #include "TStnDataBlock.hh" #include "TStnSecVtxTag.hh" #include "Stntuple/mod/InitStntupleDataBlocks.hh" #include "Stntuple/obj/TStnLinkBlock.hh" class TStnEvent; class TStnSecVtxTagBlock: public TStnDataBlock { friend Int_t StntupleInitSecVtxTagBlock(TStnDataBlock*, AbsEvent* , int); friend Int_t StntupleSecVtxTagBlockLinks(TStnDataBlock*, AbsEvent* , int); public: //------------------------------------------------------------------------------ // data members //------------------------------------------------------------------------------ Int_t fNSecVtxTag; // number of SecVtxTag Float_t fConeSize; // ConeSize Float_t fEtCut; // Et Cut Float_t fEtaCut; // Eta Cut Bool_t fIs_Caljet; // Is_Caljet cut TClonesArray* fSecVtxTagList; // TClonesArray of SecVtxTag TStnLinkBlock fTrackGd; // Good tracks in jet used by secvtx TStnLinkBlock fTrackSd1; // Tracks passing sd0 cut (Pass1) TStnLinkBlock fTrackSd2; // Pass2 tracks TStnLinkBlock fTrackTg; // Tracks used in 2nd vertex //------------------------------------------------------------------------------ // functions //------------------------------------------------------------------------------ public: // ****** constructors and destructor TStnSecVtxTagBlock(); virtual ~TStnSecVtxTagBlock(); // ****** accessors Int_t NSecVtxTag () { return fNSecVtxTag; } Float_t ConeSize () { return fConeSize; } Float_t EtCut () { return fEtCut; } Float_t EtaCut () { return fEtaCut; } Bool_t Is_Caljet () { return fIs_Caljet; } TClonesArray* SecVtxTagList() { return fSecVtxTagList; } TStnSecVtxTag* SecVtxTag(int i) { return (TStnSecVtxTag*) fSecVtxTagList->UncheckedAt(i); } TStnLinkBlock* ListOfPass1TrackLinks() { return &fTrackSd1; } TStnLinkBlock* ListOfPass2TrackLinks() { return &fTrackSd2; } TStnLinkBlock* ListOfTagTrackLinks () { return &fTrackTg; } Int_t NPass1Tracks(Int_t I) { return fTrackSd1.NLinks(I); } Int_t NPass2Tracks(Int_t I) { return fTrackSd2.NLinks(I); } Int_t NTracks (Int_t I) { return fTrackTg.NLinks (I); } //----------------------------------------------------------------------------- // modifiers //----------------------------------------------------------------------------- TStnSecVtxTag* NewSecVtxTag() { return new ((*fSecVtxTagList)[fNSecVtxTag++]) TStnSecVtxTag(); } // ****** overloaded functions of // TObject //----------------------------------------------------------------------------- // helpers //----------------------------------------------------------------------------- int FindSecVtxJet(int ijet); // Finds the index into secvtx block for // jet index ijet in the jet block. Returns -1 // if this jet wasn't considered by SecVtxModule and // is therefore absent from the TStnSecVtxTagBlock block void Clear(Option_t* opt=""); void Print(Option_t* option = "") const; ClassDef(TStnSecVtxTagBlock,3) }; #endif