Go to the documentation of this file.00001 #ifndef FORIA_TRACKSELECTION_HH
00002 #define FORIA_TRACKSELECTION_HH
00003
00004 #include "ForIA/Track.hh"
00005 #include "ForIA/Event.hh"
00006 #include "ForIA/Vertex.hh"
00007
00008 #include "ForIA/AnalysisTools/FourVectorSelection.hh"
00009
00010 #include <ostream>
00011 #include <map>
00012 #include <set>
00013
00014 namespace ForIA{
00015
00016 using std::map;
00017 using std::set;
00018
00019 class MessageBox;
00020
00022 class TrackSelection : public FourVectorSelection{
00023
00024 public:
00025
00039 enum DefinedSelection{MINBIAS_2, MINBIAS_2_BS, UE, HIGHMULT_LOOSE, HIGHMULT_TIGHT, HIGHMULT_ASSOC};
00040
00042 TrackSelection();
00044 const TrackVector &tracks() const;
00046 const TrackVector &rejectedTracks() const;
00049 void setSelection(DefinedSelection selection);
00050
00052 void setOrigin(Track::Origin origin);
00054 void setD0(double d0);
00056 void setZ0SinTheta(double z0SinTheta);
00058 void setPTMin(double pt);
00060 void setEtaMax(double eta);
00062 void setNBLayerHits(int nBLayer);
00064 void setNPixHits(int nPix);
00066 void setNSCTHits(int nSCT);
00068 void setPixSCTHits(int nHits);
00075 void setNSCTHits(double ptThresh, int nSCT);
00081 void setMinFitProbability(double ptThresh, double minProbability);
00084 void setChi2PerDOF(double chi2);
00085
00088 void addTrackAuthor(Track::TrackAuthor author);
00091 void clearAllTrackAuthors();
00093 void setVertexType(Vertex::VertexType vType);
00094
00096 void setInput(const TrackVector &tracks);
00097
00098 private:
00099
00100 friend std::ostream &operator << (std::ostream &out, const TrackSelection &selection);
00101 friend MessageBox &operator <<(MessageBox &box, const TrackSelection &selection);
00102
00103 void fillVectors() const;
00104
00105 TrackVector m_inputTracks;
00106
00107 mutable TrackVector m_passedTracks;
00108 mutable TrackVector m_rejectedTracks;
00109
00110 Track::Origin m_origin;
00111
00112 double m_d0;
00113 double m_z0SinTheta;
00114 double m_ptMin;
00115 double m_etaMax;
00116 int m_nBLayer;
00117 int m_minPix;
00118 int m_minSCT;
00119 int m_minPixSCT;
00120 map<double, int> m_minSCTByPT;
00121 map<double, double> m_minFitProbability;
00122 double m_maxChi2PerDOF;
00123 TrackAuthorSet m_authors;
00124 Vertex::VertexType m_vertexType;
00125
00126 bool m_haveSetD0;
00127 bool m_haveSetZ0SinTheta;
00128 bool m_haveSetPT;
00129 bool m_haveSetEta;
00130 bool m_haveSetBLayer;
00131 bool m_haveSetNPix;
00132 bool m_haveSetNSCT;
00133 bool m_haveSetPixSCT;
00134 bool m_haveSetNSCTByPT;
00135 bool m_haveSetMinFitProbability;
00136 bool m_haveSetChi2;
00137 bool m_haveSetTrackAuthors;
00138 bool m_haveSetVertexType;
00139
00140 };
00141
00142 }
00143
00144 #endif