#ifndef HPIDTRACKCAND_H
#define HPIDTRACKCAND_H
#include "TObject.h"
#include "TString.h"
#include "piddef.h"
#include "hpidhitdata.h"
#include "hpidtrackdata.h"
#include <iostream>
using namespace std;
class HCategory;
class HPidTrackCand : public TObject
{
public:
HPidTrackCand(void);
HPidTrackCand(HMetaMatch* pMetaMatch, Int_t iMatchIndex);
HPidHitData itsHitData;
HPidTrackData itsTrackData;
Int_t flags;
enum EflagBits {kIsDoubleHitRICH = 0,
kIsDoubleHitInnerMDC = 1,
kIsDoubleHitOuterMDC = 2,
kIsDoubleHitMETA = 3,
kIsBestHitRICH = 4,
kIsBestHitInnerMDC = 5,
kIsBestHitOuterMDC = 6,
kIsBestHitMETA = 7,
kIsBestRKMETA = 8,
kIsBestRKRICH = 9,
kIsBestRK = 10,
kIsBestSPLINE = 11,
kIsBestKICK = 12,
kIsBestRKRKMETA = 13,
kIsBestRKRKRICH = 14,
kIsBestRKMETAQA = 15,
kIsAcceptedHitRICH = 16,
kIsAcceptedHitInnerMDC = 17,
kIsAcceptedHitOuterMDC = 18,
kIsAcceptedHitMETA = 19,
kIsAcceptedRKMETA = 20,
kIsAcceptedRKRICH = 21,
kIsAcceptedRK = 22,
kIsAcceptedSPLINE = 23,
kIsAcceptedKICK = 24,
kIsAcceptedRKRKMETA = 25,
kIsAcceptedRKRKRICH = 26,
kIsAcceptedRKMETAQA = 27,
kIsLepton = 29,
kIsUsed = 30,
kIsRejected = 31
};
void setFlagBit (EflagBits bit) { flags |= ( 0x01 << bit ); }
void unsetFlagBit (EflagBits bit) { flags &= ~( 0x01 << bit ); }
Bool_t isFlagBit (EflagBits bit) { return (flags >> bit ) & 0x01 ; }
void setFlagBit (Int_t bit);
void unsetFlagBit (Int_t bit);
Bool_t isFlagBit (Int_t bit);
void setFlagBitByValue(EflagBits bit, Bool_t val) { val ? setFlagBit(bit) : unsetFlagBit(bit); }
void setFlagBitByValue(Int_t bit, Bool_t val) { val ? setFlagBit(bit) : unsetFlagBit(bit); }
Bool_t isFlagDoubleHit () { return (flags & 0xF) == 0x0 ? kFALSE : kTRUE; }
Bool_t isFlagAllBestHit() { return ((flags >> 4 ) & 0xF) == 0xF ? kTRUE : kFALSE; }
Bool_t isFlagNoBestHit () { return ((flags >> 4 ) & 0xF) == 0x0 ? kTRUE : kFALSE; }
Int_t getFlagField() { return flags; }
void setFlagField(Int_t field) { flags = field; }
Bool_t isFlagAND(Int_t num, ...);
Bool_t isFlagOR (Int_t num, ...);
Int_t getDoubleHitsLeptons(){ return (flags & 0xF);}
Int_t getDoubleHitsHadrons(){ return ((flags >> 1) & 0x7);}
void printFlags(TString comment="");
void printInfo();
Bool_t select(Bool_t (*function)(HPidTrackCand* )) { return (*function)(this); }
virtual void Clear(Option_t * = "");
void print(void) const;
void Print(Option_t *o = "") const { print(); }
HPidTrackData* getTrackData(void) {return &itsTrackData;}
HPidHitData* getHitData(void) {return &itsHitData;}
static HCategory* buildPidTrackCandCategory(void);
ClassDef(HPidTrackCand, 2)
};
#endif //HPIDTRACKCAND_H
Last change: Sat May 22 13:07:31 2010
Last generated: 2010-05-22 13:07
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.