00001
00008 #ifndef StV0FinderMaker_hh
00009 #define StV0FinderMaker_hh
00010
00011 #include "StMaker.h"
00012 #include "StPhysicalHelixD.hh"
00013 #include <vector>
00014
00015 class St_V0FinderParameters;
00016 class V0FinderParameters_st;
00017 class StEvent;
00018 class StV0Vertex;
00019 class StTrack;
00020
00021
00022
00023 class StMuDstMaker;
00024
00025
00026 enum TrackerUsage
00027 {
00028 kTrackerUseTPT = 0,
00029 kTrackerUseITTF = 1,
00030 kTrackerUseBOTH = 2
00031 };
00032
00033
00034
00036 enum SVTUsage
00037 {
00038 kNoSVT = 0,
00039 kUseSVT = 1
00040 };
00041
00042 enum EventModelUsage
00043 {
00044 kUseStEvent = 0,
00045 kUseMuDst =1
00046 };
00048
00049
00050 enum V0LanguageUsage
00051 {
00052 kV0LanguageUseFortran = 1,
00053 kV0LanguageUseCpp = 2,
00054 kV0LanguageUseBoth = 3
00055 };
00056
00057
00058
00059
00060 enum XiLanguageUsage
00061 {
00062 kXiLanguageUseFortran = 1,
00063 kXiLanguageUseCppOnFortranV0 = 2,
00064 kXiLanguageUseCppOnCppV0 = 4,
00065 kXiLanguageUseFortranAndCppOnFortranV0 = 3,
00066 kXiLanguageUseFortranAndCppOnCppV0 = 5,
00067 kXiLanguageUseBothCpp = 6,
00068 kXiLanguageUseAll = 7
00069 };
00070
00071
00072
00073
00074 enum LanguageUsage
00075 {
00076 kLanguageUseSpecial = 0,
00077 kLanguageUseOldRun = 1,
00078 kLanguageUseRun = 2,
00079 kLanguageUseTestV0Finder = 5,
00080 kLanguageUseTestXiFinder = 6,
00081 kLanguageUseTestBothFinders = 7
00082 };
00083
00084
00085
00086
00087 enum LikesignUsage
00088 {
00089 kLikesignUseStandard = 0,
00090 kLikesignUseLikesign = 2
00091 };
00092
00093
00094
00095
00096 enum RotatingUsage
00097 {
00098 kRotatingUseStandard = 0,
00099 kRotatingUseRotating = 1,
00100 kRotatingUseSymmetry = 2,
00101 kRotatingUseRotatingAndSymmetry = 3
00102 };
00103
00104
00105
00138 class StV0FinderMaker : public StMaker {
00139
00140 public:
00141 StV0FinderMaker(const char* name="V0FinderMaker");
00142 virtual ~StV0FinderMaker();
00143
00144 virtual void GetPars();
00145 virtual Int_t Init();
00146
00147 virtual Int_t Make();
00148
00149
00150 virtual void Clear(Option_t *option="");
00151
00152 virtual void UseExistingV0s(Bool_t opt=kTRUE) { useExistingV0s = opt; }
00153 virtual void DontZapV0s(Bool_t opt=kTRUE) { dontZapV0s = opt; }
00154 virtual Bool_t UseV0() { return kFALSE; }
00155 virtual void SetTrackerUsage(Int_t opt=0) {useTracker=opt;}
00156 virtual Int_t GetTrackerUsage() {return useTracker;}
00157 virtual void SetSVTUsage(Int_t opt=0) {useSVT=opt;}
00158 virtual Int_t GetSVTUsage() {return useSVT;}
00159 virtual void SetV0LanguageUsage(Int_t opt=0) {useV0Language=opt;}
00160 virtual Int_t GetV0LanguageUsage() {return useV0Language;}
00161 virtual void SetXiLanguageUsage(Int_t opt=0) {useXiLanguage=opt;}
00162 virtual Int_t GetXiLanguageUsage() {return useXiLanguage;}
00163 virtual void SetLanguageUsage(Int_t opt=0) {useLanguage=opt;}
00164 virtual Int_t GetLanguageUsage() {return useLanguage;}
00165 virtual void SetLikesignUsage(Int_t opt=0) {useLikesign=opt;}
00166 virtual Int_t GetLikesignUsage() {return useLikesign;}
00167 virtual void SetRotatingUsage(Int_t opt=0) {useRotating=opt;}
00168 virtual Int_t GetRotatingUsage() {return useRotating;}
00169 virtual void Trim();
00170
00171
00172 virtual void SetEventUsage(Int_t opt=0){useEventModel=opt;}
00173 virtual Int_t GetEventUsage(){return useEventModel;}
00174
00175
00176 virtual const char *GetCVS() const
00177 {static const char cvs[]="Tag $Name: $ $Id: StV0FinderMaker.h,v 1.11 2008/03/05 04:20:18 genevb Exp $ built "__DATE__" "__TIME__ ; return cvs;}
00178
00179 protected:
00180 virtual Int_t Prepare();
00181 St_V0FinderParameters* v0pars;
00182 V0FinderParameters_st* pars;
00183 V0FinderParameters_st* pars2;
00184 StEvent* event;
00185 StV0Vertex* v0Vertex;
00186
00187
00188 StMuDstMaker* mMuDstMaker;
00189
00190
00191 double Bfield;
00192 unsigned short trks;
00193 Bool_t prepared;
00194 Bool_t useExistingV0s;
00195 Bool_t dontZapV0s;
00196 Int_t useTracker;
00197 Int_t useSVT;
00198 Int_t useEventModel;
00199 Int_t useV0Language;
00200 Int_t useXiLanguage;
00201 Int_t useLanguage;
00202 Int_t useLikesign;
00203 Int_t useRotating;
00204 int det_id_v0;
00205 int ITTFflag;
00206 int TPTflag;
00207
00208 vector<StTrack*> trk;
00209 vector<unsigned short> ntrk;
00210 vector<unsigned short> ptrk;
00211 vector<short> hits;
00212 vector<int> detId;
00213 vector<double> pt;
00214 vector<double> ptot;
00215 vector<StPhysicalHelixD> heli;
00216 vector<unsigned short> trkID;
00217 void ExpandVectors(unsigned short size);
00218
00219 StThreeVectorD mainv;
00220
00221 private:
00222 static StV0FinderMaker* mInstance;
00223 int trkcnt;
00224 int trkmax;
00225 float trkNodeRatio;
00226 float trkNodeRatioCnt;
00227
00228 ClassDef(StV0FinderMaker,0)
00229
00230 };
00231
00232 #endif
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273