73 #ifndef STAR_StFtpcTrackEvaluator
74 #define STAR_StFtpcTrackEvaluator
77 #include "TObjArray.h"
81 #include "TProfile2D.h"
82 #include "MIntArray.h"
85 #include "StFtpcVertex.hh"
86 #include "StFtpcTrack.hh"
87 #include "StFtpcTracker.hh"
88 #include "StFtpcDisplay.hh"
90 #include "tables/St_ffs_gepoint_Table.h"
91 #include "tables/St_g2t_track_Table.h"
92 #include "tables/St_g2t_ftp_hit_Table.h"
94 #include "St_DataSet.h"
99 Bool_t mObjArraysCreated;
101 TObjArray *mGeantHits;
102 TObjArray *mFastSimHits;
103 TObjArray *mFoundHits;
104 TObjArray *mGeantTracks;
105 TObjArray *mFoundTracks;
109 Int_t mFoundVertexTracks;
110 Int_t mFoundNonVertexTracks;
112 Int_t mGoodGeantPoints;
113 Int_t mGoodFoundPoints;
115 Int_t mLookLikeGoodTracks;
116 Int_t mElectronTracks;
117 Int_t mNonVertexTracks;
121 Int_t mSplitGoodTracks;
122 Int_t mSplitLoliGoodTracks;
123 Int_t mUncleanTracks;
124 Int_t mUncleanGoodTracks;
126 Int_t mLongTrackClusters;
128 Int_t mShortTrackClusters;
129 Int_t mTooShortTracks;
136 TH1F *mNumGeantTracks;
137 TH1F *mNumFoundTracks;
139 TH1F *mNumFoundVertexTracks;
140 TH1F *mNumFoundNonVertexTracks;
142 TH1F *mNumElectronTracks;
143 TH1F *mNumNonVertexTracks;
144 TH1F *mNumLookLikeGoodTracks;
145 TH1F *mNumGoodGTracks;
146 TH1F *mNumGoodFTracks;
147 TH1F *mNumSplitTracks;
148 TH1F *mNumSplitGoodTracks;
149 TH1F *mNumSplitLoliGoodTracks;
151 TH1F *mNumUncleanTracks;
152 TH1F *mNumUncleanGoodTracks;
153 TH1F *mNumLongTracks;
154 TH1F *mNumLongTrackClusters;
155 TH1F *mNumShortTracks;
156 TH1F *mNumShortTrackClusters;
157 TH1F *mNumTooShortTracks;
163 TH1F *mNumWrongHitsAll;
167 TH1F *mContamination;
170 TH1F *mNumGoodGeantPoints;
171 TH1F *mNumGoodFoundPoints;
172 TH1F *mGoodPointRatio;
204 TH2F *mPtEtaMesUnclean;
205 TH2F *mPtEtaUncleanGood;
206 TH2F *mPtEtaMesUncleanGood;
208 TH2F *mPtEtaSplitGood;
209 TH2F *mPtEtaSplitLoliGood;
213 TH2F *mPtEtaGoodRatio;
216 TH2F *mPtEtaBadRatio;
219 TH2F *mPtEtaLookLikeGood;
220 TH2F *mPtEtaContamination;
221 TH2F *mPtEtaContaWoSplits;
223 TH2F *mPtEta10PointTracks;
224 TH2F *mPtEtaWrongCharge;
225 TH2F *mPtEtaWrongPosCharge;
227 TH2F *mGLengthDistTrackAng;
228 TH2F *mGCircleDistTrackAng;
229 TH2F *mFLengthDistTrackAng;
230 TH2F *mFCircleDistTrackAng;
232 TH1F *mGTracklAngAll;
234 TH1F *mGCircleDistAll;
235 TH1F *mGLengthDistAll;
241 TH2F *mGCircleLength;
243 TH1F *mFTracklAngAll;
245 TH1F *mFCircleDistAll;
246 TH1F *mFLengthDistAll;
248 TH1F *mDcaFMainVertex;
249 TH1F *mDcaFNonVertex;
250 TH1F *mDcaGMainVertex;
251 TH1F *mDcaGNonVertex;
257 TH2F *mFCircleLength;
260 TH2F *mPRatioDistSplit;
264 TH1F *mExtensionTime;
283 void SetupFile(Char_t *filename, Char_t *write_permission);
287 void GeantHitInit(St_g2t_ftp_hit *g2t_ftp_hit);
288 void GeantTrackInit(St_g2t_track *g2t_track, St_g2t_ftp_hit *g2t_ftp_hit);
289 void FastSimHitInit(St_ffs_gepoint *ffs_hit);
290 void ParentTrackInit();
291 void CalcSplitTracks();
292 void EvaluateGoodness(Int_t t_Counter);
302 Char_t *filename = 0, Char_t *write_permission = 0);
305 TObjArray *GetGeantHits() {
return mGeantHits; }
306 TObjArray *GetGeantTracks() {
return mGeantTracks; }
307 TObjArray *GetFastSimHits() {
return mFastSimHits; }
308 TObjArray *GetFoundHits() {
return mFoundHits; }
309 TObjArray *GetFoundTracks() {
return mFoundTracks; }
311 MIntArray *GetClusterArr() {
return mClusterArr; }
312 MIntArray *GetSplitTracksArr() {
return mSplitTracksArr; }
313 MIntArray *GetSplitGoodTracksArr() {
return mSplitGoodTracksArr; }
314 MIntArray *GetUncleanTracksArr() {
return mUncleanTracksArr; }
315 MIntArray *GetGoodFastSimHitsArr() {
return mGoodFastSimHitsArr; }
317 Int_t GetNumFoundVertexTracks() {
return mFoundVertexTracks; }
318 Int_t GetNumFoundNonVertexTracks(){
return mFoundNonVertexTracks; }
319 Int_t GetNumLookLikeGoodTracks() {
return mLookLikeGoodTracks; }
320 Int_t GetNumElectronTracks() {
return mElectronTracks; }
321 Int_t GetNumNonVertexTracks() {
return mNonVertexTracks; }
322 Int_t GetNumGoodGeantTracks() {
return mGoodGTracks; }
323 Int_t GetNumGoodFoundTracks() {
return mGoodFTracks; }
324 Int_t GetNumSplitTracks() {
return mSplitTracks; }
325 Int_t GetNumSplitGoodTracks() {
return mSplitGoodTracks; }
326 Int_t GetNumSplitLookLikeGoodTracks() {
return mSplitLoliGoodTracks; }
327 Int_t GetNumUncleanTracks() {
return mUncleanTracks; }
328 Int_t GetNumUncleanGoodTracks() {
return mUncleanGoodTracks; }
329 Int_t GetNumLongTracks() {
return mLongTracks; }
330 Int_t GetNumLongTrackClusters() {
return mLongTrackClusters; }
331 Int_t GetNumShortTracks() {
return mShortTracks; }
332 Int_t GetNumShortTrackClusters() {
return mShortTrackClusters; }
333 Int_t GetNumTooShortTracks() {
return mTooShortTracks; }
334 Int_t GetMaxClusters() {
return mMaxClusters; }
336 Int_t GetNumGoodGeantPoints() {
return mGoodGeantPoints; }
337 Int_t GetNumGoodFoundPoints() {
return mGoodFoundPoints; }
339 Int_t GetNumFoundTracks() {
return mFoundTracks->GetEntriesFast(); }
340 Int_t GetNumGeantTracks() {
return mGeantTracks->GetEntriesFast(); }
341 Int_t GetNumFoundHits() {
return mFoundHits->GetEntriesFast(); }
342 Int_t GetNumFastSimHits() {
return mFastSimHits->GetEntriesFast(); }
343 Int_t GetNumGeantHits() {
return mGeantHits->GetEntriesFast(); }
349 Bool_t IsUncleanTrack(Int_t track_num) {
return mUnclean[track_num]; }
350 Bool_t IsCleanTrack(Int_t track_num) {
return !mUnclean[track_num]; }
353 void FillEventHistos();
355 void FillParentHistos();
356 void FillParentHistos(Int_t t_counter);
357 void FillMomentumHistos();
358 void FillMomentumHistos(Int_t t_counter);
359 void FillHitsOnTrack(TObjArray *trackarray, Char_t c);
360 void FillHitsOnTrack();
361 void FillFoundHitsOnTrack();
362 void FillCutHistos();
363 void FillGCutHistos();
364 void FillFCutHistos();
368 void GetGoodHits(TObjArray *good_clusters);
Char_t * mWritePermission
Name of the data file.
TFile * mFile
Write permission of the data file.