00001 00010 #include <vector> 00011 #include <StThreeVectorD.hh> 00012 #include <StPhysicalHelixD.hh> 00013 #include "StGenericVertexFinder.h" 00014 #include "StCtbUtility.h" 00015 00016 class StEvent; 00017 class StTrack; 00018 00019 class StppLMVVertexFinder: public StGenericVertexFinder , StCtbUtility { 00020 public: 00021 StppLMVVertexFinder(); 00022 00023 // mandatory implementations 00024 virtual ~StppLMVVertexFinder(); 00025 int fit(StEvent*); 00026 void printInfo(ostream& = cout) const; 00027 void UseVertexConstraint(double x0, double y0, double dxdz, double dydz, double weight); 00028 void Clear(); 00029 00030 // over-written method 00031 virtual void Init(); 00032 void addFakeVerex(float z); 00033 00034 private: 00035 00036 double mX0 ; // starting point of beam parameterization 00037 double mY0 ; // starting point of beam parameterization 00038 double mdxdz; // beam slope 00039 double mdydz; // beam slope 00040 unsigned int mMinNumberOfFitPointsOnTrack; 00041 double mWeight ; // Weight in fit for vertex contraint 00042 StPhysicalHelixD* mBeamHelix; // Beam Line helix 00043 00044 //jan-------------------- 00045 bool matchTrack2CTB (StTrack* rTrack, float & sigma); 00046 bool ppLMV5(); 00047 double mMaxTrkDcaRxy; //DCA to nominal beam line for each track 00048 double mMinTrkPt; //~ pT=0.16(GeV/c) == R=2 (m )in 2001 00049 float mMatchCtbMax_eta; 00050 float mMatchCtbMax_phi; 00051 float mDVtxMax; 00052 uint mMinMatchTr; // minimal # of tracks matched to CTB for valid vertex 00053 float mMaxZrange;// for tracks used by the vertex finder. 00054 int mBLequivNtr; 00055 int n1,n2,n3,n4,n5,n6; // private counters 00056 float mBfield;// magnetic field 00057 int mTotEve; 00058 int eveID; 00059 int NCtbMatches(); 00060 00064 struct JHelix {StPhysicalHelixD helix; float sigma; }; 00065 00066 vector<JHelix> mPrimCand; 00067 00068 }; 00069 00070 00071 00072 /*************************************************************************** 00073 * 00074 * $Log: StppLMVVertexFinder.h,v $ 00075 * Revision 1.11 2010/01/26 21:01:49 fisyak 00076 * Clean up, switch from bit mask to attributes 00077 * 00078 * Revision 1.10 2005/07/19 21:57:40 perev 00079 * MultiVertex 00080 * 00081 * Revision 1.9 2005/06/21 02:16:36 balewski 00082 * multiple prim vertices are stored in StEvent 00083 * 00084 * Revision 1.8 2004/09/03 00:09:08 jeromel 00085 * Modified code to Implement Init() and SetMode() and allow passing a switch 00086 * to chose the vertex finder from within the same code implementation. Was 00087 * needed for ppLMV (one implementation, two algorithm) 00088 * 00089 * Revision 1.7 2004/09/01 18:45:01 balewski 00090 * ppLMV5/4 switch added 00091 * 00092 * Revision 1.6 2004/08/05 22:08:04 balewski 00093 * toward working point 00094 * 00095 * Revision 1.5 2004/08/04 21:57:56 balewski 00096 * toward smarter ppLMV5 00097 * 00098 * Revision 1.4 2004/07/24 02:57:40 balewski 00099 * clean up of ppLMV, CTB-util separated 00100 * 00101 * Revision 1.3 2004/07/23 02:24:39 jeromel 00102 * Oops ... Worng swithc (had twice Minuit). Now corrected. 00103 * 00104 * Revision 1.2 2004/07/23 01:00:52 jeromel 00105 * Removed methods/data members (moved in base class) + doxygenized 00106 * 00107 * Revision 1.1 2004/07/21 01:53:18 balewski 00108 * first 00109 00110 * 00111 * ppLMV use new set of params 00112 * INT: CtbThres/ch=2 MinTrkPonits=10 i2=0 i3=0 i4=0 i5=0 i6=0 i7=0 i8=0 i9=9999 00113 * FLOAT: CtbThres/MeV=1.000000 MaxTrkDcaRxy=3.900000 MinTrkPt/GeV=0.200000 00114 * CtbEtaErr=0.020000 CtbPhiErr/deg=1.000000 00115 * MaxTrkDcaZ=180.000000 00116 * f6=0.000000 f7=0.000000 f8=0.000000 f9=8888.000000 00117 * 00118 * 00119 **************************************************************************/ 00120
1.5.9