00001
00002 #ifndef TrackCategories_h
00003 #define TrackCategories_h
00004
00005 #include <vector>
00006
00007 class TrackCategories
00008 {
00009
00010 public:
00011
00013 enum Category
00014 {
00015 Fake = 0,
00016 Reconstructed = Fake,
00017 Bad,
00018 BadInnerHits,
00019 SharedInnerHits,
00020 SignalEvent,
00021 Bottom,
00022 Charm,
00023 Light,
00024 Muon,
00025 TrackerSimHits,
00026 BWeakDecay,
00027 CWeakDecay,
00028 ChargePionDecay,
00029 ChargeKaonDecay,
00030 TauDecay,
00031 KsDecay,
00032 LambdaDecay,
00033 JpsiDecay,
00034 XiDecay,
00035 OmegaDecay,
00036 SigmaPlusDecay,
00037 SigmaMinusDecay,
00038 LongLivedDecay,
00039 KnownProcess,
00040 UndefinedProcess,
00041 UnknownProcess,
00042 PrimaryProcess,
00043 HadronicProcess,
00044 DecayProcess,
00045 ComptonProcess,
00046 AnnihilationProcess,
00047 EIoniProcess,
00048 HIoniProcess,
00049 MuIoniProcess,
00050 PhotonProcess,
00051 MuPairProdProcess,
00052 ConversionsProcess,
00053 EBremProcess,
00054 SynchrotronRadiationProcess,
00055 MuBremProcess,
00056 MuNuclProcess,
00057 FromBWeakDecayMuon,
00058 FromCWeakDecayMuon,
00059 DecayOnFlightMuon,
00060 FromChargePionMuon,
00061 FromChargeKaonMuon,
00062 PrimaryVertex,
00063 SecondaryVertex,
00064 TertiaryVertex,
00065 TierciaryVertex = TertiaryVertex,
00066 Unknown
00067 };
00068
00070 static const char * Names[];
00071
00073 typedef std::vector<bool> Flags;
00074
00076 TrackCategories()
00077 {
00078 reset();
00079 }
00080
00082 bool is(Category category) const
00083 {
00084 return flags_[category];
00085 }
00086
00088 const Flags & flags() const
00089 {
00090 return flags_;
00091 }
00092
00093 protected:
00094
00096 void reset()
00097 {
00098 flags_ = Flags(Unknown + 1, false);
00099 }
00100
00101
00102 void unknownTrack();
00103
00105 Flags flags_;
00106
00107 };
00108
00109
00110 std::ostream & operator<< (std::ostream &, TrackCategories const &);
00111
00112 #endif