CMS 3D CMS Logo

TTreeValidation.h
Go to the documentation of this file.
1 #ifndef RecoTracker_MkFitCore_standalone_TTreeValidation_h
2 #define RecoTracker_MkFitCore_standalone_TTreeValidation_h
3 
4 #include "Validation.h"
5 
6 #ifndef WITH_ROOT
7 namespace mkfit {
8 
9  class TTreeValidation : public Validation {
10  public:
12  };
13 } // end namespace mkfit
14 #else
15 
16 #include <unordered_map>
17 #include <mutex>
18 #include "TFile.h"
19 #include "TTree.h"
20 #include "TROOT.h"
21 
22 namespace mkfit {
23  // FitVal defined in Validation.h
24  typedef std::map<int, FitVal> FitValLayMap;
25  typedef std::unordered_map<int, FitValLayMap> TkIDtoFitValLayMapMap;
26 
27  class TTreeValidation : public Validation {
28  public:
29  TTreeValidation(std::string fileName, const TrackerInfo* trk_info);
30  ~TTreeValidation() {}
31 
32  void initializeEfficiencyTree();
33  void initializeFakeRateTree();
34  void initializeConfigTree();
35  void initializeCMSSWEfficiencyTree();
36  void initializeCMSSWFakeRateTree();
37  void initializeFitTree();
38 
39  void alignTracks(TrackVec& evt_tracks, TrackExtraVec& evt_extra, bool alignExtra) override;
40 
41  void collectFitInfo(const FitVal& tmpfitval, int tkid, int layer) override;
42 
43  void resetValidationMaps() override;
44  void resetFitBranches();
45 
46  void setTrackExtras(Event& ev) override;
47 
48  void makeSimTkToRecoTksMaps(Event& ev) override;
49  void mapRefTkToRecoTks(const TrackVec& evt_tracks, TrackExtraVec& evt_extras, TkIDToTkIDVecMap& refTkMap);
50  void makeSeedTkToRecoTkMaps(Event& ev) override;
51  void mapSeedTkToRecoTk(const TrackVec& evt_tracks, const TrackExtraVec& evt_extras, TkIDToTkIDMap& seedTkMap);
52  void makeRecoTkToRecoTkMaps(Event& ev) override;
53  void makeRecoTkToRecoTkMap(TkIDToTkIDMap& refToPairMap,
54  const TrackVec& reftracks,
55  const TrackExtraVec& refextras,
56  const TrackVec& pairtracks,
57  const TrackExtraVec& pairextras);
58  void makeCMSSWTkToRecoTksMaps(Event& ev) override;
59  void makeSeedTkToCMSSWTkMap(Event& ev) override;
60  void makeCMSSWTkToSeedTkMap(Event& ev) override;
62  void makeRecoTkToSeedTkMapDumbCMSSW(const TrackExtraVec& recoextras,
63  const TrackExtraVec& seedextras,
64  TkIDToTkIDMap& recoToSeedMap);
65 
66  void setTrackScoresDumbCMSSW(Event&) override;
67 
68  void storeSeedAndMCID(Event& ev);
69  void setupCMSSWMatching(const Event& ev, RedTrackVec& reducedCMSSW, LayIdxIDVecMapMap& cmsswHitIDMap);
70 
71  int getLastFoundHit(const int trackMCHitID, const int mcTrackID, const Event& ev);
72  int getMaskAssignment(const int refID);
73 
74  void fillMinHitInfo(const Track& track, std::vector<int>& lyrs, std::vector<int>& idxs);
75  void fillFullHitInfo(const Event& ev,
76  const Track& track,
77  std::vector<int>& lyrs,
78  std::vector<int>& idxs,
79  std::vector<int>& mcTkIDs,
80  std::vector<float>& xs,
81  std::vector<float>& ys,
82  std::vector<float>& zs);
83 
84  void fillEfficiencyTree(const Event& ev) override;
85  void fillFakeRateTree(const Event& ev) override;
86  void fillConfigTree() override;
87  void fillCMSSWEfficiencyTree(const Event& ev) override;
88  void fillCMSSWFakeRateTree(const Event& ev) override;
89  void fillFitTree(const Event& ev) override;
90 
91  void saveTTrees() override;
92 
93  private:
94  std::unique_ptr<TFile> f_; // output file!
95 
96  TkIDtoFitValLayMapMap fitValTkMapMap_; // map used for fit validation in mplex
97 
98  // Sim to Reco Maps
99  TkIDToTkIDVecMap simToSeedMap_;
100  TkIDToTkIDVecMap simToBuildMap_;
101  TkIDToTkIDVecMap simToFitMap_;
102 
103  // Reco to Reco Maps
104  TkIDToTkIDMap seedToBuildMap_;
105  TkIDToTkIDMap seedToFitMap_;
106 
107  // CMSSW to Reco Maps
108  TkIDToTkIDVecMap cmsswToBuildMap_;
109  TkIDToTkIDVecMap cmsswToFitMap_;
110 
111  // Special map for CMSSW tracks to seed track labels --> NOT used for fake rate!!
112  TkIDToTkIDMap seedToCmsswMap_;
113  TkIDToTkIDMap cmsswToSeedMap_;
114 
115  // Special map for geting exact CMSSW track that originate build track from seed track through seedIDs
116  TkIDToTkIDMap buildToCmsswMap_;
117 
118  // Special map for associating candidate to fit tracks in CMSSW only
119  TkIDToTkIDMap buildToFitMap_;
120  TkIDToTkIDMap fitToBuildMap_;
121 
122  // Special map for associating reco tracks to seed tracks for sim_val_for_cmssw
123  TkIDToTkIDMap candToSeedMapDumbCMSSW_;
124  TkIDToTkIDMap fitToSeedMapDumbCMSSW_;
125 
126  // Efficiency Tree
127  std::unique_ptr<TTree> efftree_;
128  int evtID_eff_ = 0, mcID_eff_ = 0;
129  int mcmask_seed_eff_ = 0, mcmask_build_eff_ = 0, mcmask_fit_eff_ = 0;
130  int seedID_seed_eff_ = 0, seedID_build_eff_ = 0, seedID_fit_eff_ = 0;
131  int mcTSmask_seed_eff_ = 0, mcTSmask_build_eff_ = 0, mcTSmask_fit_eff_ = 0;
132 
133  // for efficiency and duplicate rate plots
134  float x_mc_gen_eff_ = 0., y_mc_gen_eff_ = 0., z_mc_gen_eff_ = 0.;
135  float pt_mc_gen_eff_ = 0., phi_mc_gen_eff_ = 0., eta_mc_gen_eff_ = 0.;
136  float nLayers_mc_eff_;
137  int nHits_mc_eff_ = 0, lastlyr_mc_eff_ = 0;
138 
139  // for getting last hit positions track ended up on
140  float xhit_seed_eff_ = 0., xhit_build_eff_ = 0., xhit_fit_eff_ = 0.;
141  float yhit_seed_eff_ = 0., yhit_build_eff_ = 0., yhit_fit_eff_ = 0.;
142  float zhit_seed_eff_ = 0., zhit_build_eff_ = 0., zhit_fit_eff_ = 0.;
143 
144  // for track resolutions / pulls
145  float pt_mc_seed_eff_ = 0., pt_mc_build_eff_ = 0., pt_mc_fit_eff_ = 0.;
146  float pt_seed_eff_ = 0., pt_build_eff_ = 0., pt_fit_eff_ = 0., ept_seed_eff_ = 0., ept_build_eff_ = 0.,
147  ept_fit_eff_ = 0.;
148  float phi_mc_seed_eff_ = 0., phi_mc_build_eff_ = 0., phi_mc_fit_eff_ = 0.;
149  float phi_seed_eff_ = 0., phi_build_eff_ = 0., phi_fit_eff_ = 0., ephi_seed_eff_ = 0., ephi_build_eff_ = 0.,
150  ephi_fit_eff_ = 0.;
151  float eta_mc_seed_eff_ = 0., eta_mc_build_eff_ = 0., eta_mc_fit_eff_ = 0.;
152  float eta_seed_eff_ = 0., eta_build_eff_ = 0., eta_fit_eff_ = 0., eeta_seed_eff_ = 0., eeta_build_eff_ = 0.,
153  eeta_fit_eff_ = 0.;
154 
155  // for hit countings
156  int nHits_seed_eff_ = 0, nHits_build_eff_ = 0, nHits_fit_eff_ = 0;
157  float nLayers_seed_eff_ = 0, nLayers_build_eff_ = 0, nLayers_fit_eff_ = 0;
158  int nHitsMatched_seed_eff_ = 0, nHitsMatched_build_eff_ = 0, nHitsMatched_fit_eff_ = 0;
159  float fracHitsMatched_seed_eff_ = 0, fracHitsMatched_build_eff_ = 0, fracHitsMatched_fit_eff_ = 0;
160  int lastlyr_seed_eff_ = 0, lastlyr_build_eff_ = 0, lastlyr_fit_eff_ = 0;
161 
162  // swim phi
163  float dphi_seed_eff_ = 0., dphi_build_eff_ = 0., dphi_fit_eff_ = 0.;
164 
165  // quality info of tracks
166  float hitchi2_seed_eff_ = 0., hitchi2_build_eff_ = 0., hitchi2_fit_eff_ = 0.;
167  float helixchi2_seed_eff_ = 0., helixchi2_build_eff_ = 0., helixchi2_fit_eff_ = 0.;
168  int score_seed_eff_ = 0, score_build_eff_ = 0, score_fit_eff_ = 0;
169 
170  // for duplicate track matches
171  int duplmask_seed_eff_ = 0, duplmask_build_eff_ = 0, duplmask_fit_eff_ = 0;
172  int nTkMatches_seed_eff_ = 0, nTkMatches_build_eff_ = 0, nTkMatches_fit_eff_ = 0;
173 
174  //iterations provenance for each match - a bit mask similar to the ones used in the hit masking
175  ULong64_t itermask_seed_eff_ = 0, itermask_build_eff_ = 0, itermask_fit_eff_ = 0;
176  ULong64_t iterduplmask_seed_eff_ = 0, iterduplmask_build_eff_ = 0, iterduplmask_fit_eff_ = 0;
177  ULong64_t algo_seed_eff_ = 0;
178 
179  // hit info
180  std::vector<int> hitlyrs_mc_eff_, hitlyrs_seed_eff_, hitlyrs_build_eff_, hitlyrs_fit_eff_;
181  std::vector<int> hitidxs_mc_eff_, hitidxs_seed_eff_, hitidxs_build_eff_, hitidxs_fit_eff_;
182  std::vector<int> hitmcTkIDs_mc_eff_, hitmcTkIDs_seed_eff_, hitmcTkIDs_build_eff_, hitmcTkIDs_fit_eff_;
183  std::vector<float> hitxs_mc_eff_, hitxs_seed_eff_, hitxs_build_eff_, hitxs_fit_eff_;
184  std::vector<float> hitys_mc_eff_, hitys_seed_eff_, hitys_build_eff_, hitys_fit_eff_;
185  std::vector<float> hitzs_mc_eff_, hitzs_seed_eff_, hitzs_build_eff_, hitzs_fit_eff_;
186 
187  // Fake Rate tree and variables
188  std::unique_ptr<TTree> frtree_;
189  int evtID_FR_ = 0, seedID_FR_ = 0;
190 
191  int seedmask_seed_FR_ = 0, seedmask_build_FR_ = 0, seedmask_fit_FR_ = 0;
192 
193  // for getting last hit positions track ended up on
194  float xhit_seed_FR_ = 0., xhit_build_FR_ = 0., xhit_fit_FR_ = 0.;
195  float yhit_seed_FR_ = 0., yhit_build_FR_ = 0., yhit_fit_FR_ = 0.;
196  float zhit_seed_FR_ = 0., zhit_build_FR_ = 0., zhit_fit_FR_ = 0.;
197 
198  // track state info
199  float pt_mc_seed_FR_ = 0., pt_mc_build_FR_ = 0., pt_mc_fit_FR_ = 0.;
200  float pt_seed_FR_ = 0., pt_build_FR_ = 0., pt_fit_FR_ = 0., ept_seed_FR_ = 0., ept_build_FR_ = 0., ept_fit_FR_ = 0.;
201  float phi_mc_seed_FR_ = 0., phi_mc_build_FR_ = 0., phi_mc_fit_FR_ = 0.;
202  float phi_seed_FR_ = 0., phi_build_FR_ = 0., phi_fit_FR_ = 0., ephi_seed_FR_ = 0., ephi_build_FR_ = 0.,
203  ephi_fit_FR_ = 0.;
204  float eta_mc_seed_FR_ = 0., eta_mc_build_FR_ = 0., eta_mc_fit_FR_ = 0.;
205  float eta_seed_FR_ = 0., eta_build_FR_ = 0., eta_fit_FR_ = 0., eeta_seed_FR_ = 0., eeta_build_FR_ = 0.,
206  eeta_fit_FR_ = 0.;
207 
208  int nHits_seed_FR_ = 0, nHits_build_FR_ = 0, nHits_fit_FR_ = 0;
209  float nLayers_seed_FR_ = 0, nLayers_build_FR_ = 0, nLayers_fit_FR_ = 0;
210  int nHitsMatched_seed_FR_ = 0, nHitsMatched_build_FR_ = 0, nHitsMatched_fit_FR_ = 0;
211  float fracHitsMatched_seed_FR_ = 0, fracHitsMatched_build_FR_ = 0, fracHitsMatched_fit_FR_ = 0;
212  int lastlyr_seed_FR_ = 0, lastlyr_build_FR_ = 0, lastlyr_fit_FR_ = 0;
213  int algorithm_FR_ = 0;
214 
215  // swim phi
216  float dphi_seed_FR_ = 0., dphi_build_FR_ = 0., dphi_fit_FR_ = 0.;
217 
218  float hitchi2_seed_FR_ = 0., hitchi2_build_FR_ = 0., hitchi2_fit_FR_ = 0.;
219  int score_seed_FR_ = 0, score_build_FR_ = 0, score_fit_FR_ = 0;
220 
221  int mcID_seed_FR_ = 0, mcID_build_FR_ = 0, mcID_fit_FR_ = 0;
222  int mcmask_seed_FR_ = 0, mcmask_build_FR_ = 0, mcmask_fit_FR_ = 0;
223  int mcTSmask_seed_FR_ = 0, mcTSmask_build_FR_ = 0, mcTSmask_fit_FR_ = 0;
224  int nHits_mc_seed_FR_ = 0, nHits_mc_build_FR_ = 0, nHits_mc_fit_FR_ = 0;
225  float nLayers_mc_seed_FR_ = 0, nLayers_mc_build_FR_ = 0, nLayers_mc_fit_FR_ = 0;
226  int lastlyr_mc_seed_FR_ = 0, lastlyr_mc_build_FR_ = 0, lastlyr_mc_fit_FR_ = 0;
227 
228  float helixchi2_seed_FR_ = 0., helixchi2_build_FR_ = 0., helixchi2_fit_FR_ = 0.;
229 
230  int duplmask_seed_FR_ = 0, duplmask_build_FR_ = 0, duplmask_fit_FR_ = 0;
231  int iTkMatches_seed_FR_ = 0, iTkMatches_build_FR_ = 0, iTkMatches_fit_FR_ = 0;
232 
233  // hit info
234  std::vector<int> hitlyrs_seed_FR_, hitlyrs_build_FR_, hitlyrs_fit_FR_, hitlyrs_mc_seed_FR_, hitlyrs_mc_build_FR_,
235  hitlyrs_mc_fit_FR_;
236  std::vector<int> hitidxs_seed_FR_, hitidxs_build_FR_, hitidxs_fit_FR_, hitidxs_mc_seed_FR_, hitidxs_mc_build_FR_,
237  hitidxs_mc_fit_FR_;
238  std::vector<int> hitmcTkIDs_seed_FR_, hitmcTkIDs_build_FR_, hitmcTkIDs_fit_FR_, hitmcTkIDs_mc_seed_FR_,
239  hitmcTkIDs_mc_build_FR_, hitmcTkIDs_mc_fit_FR_;
240  std::vector<float> hitxs_seed_FR_, hitxs_build_FR_, hitxs_fit_FR_, hitxs_mc_seed_FR_, hitxs_mc_build_FR_,
241  hitxs_mc_fit_FR_;
242  std::vector<float> hitys_seed_FR_, hitys_build_FR_, hitys_fit_FR_, hitys_mc_seed_FR_, hitys_mc_build_FR_,
243  hitys_mc_fit_FR_;
244  std::vector<float> hitzs_seed_FR_, hitzs_build_FR_, hitzs_fit_FR_, hitzs_mc_seed_FR_, hitzs_mc_build_FR_,
245  hitzs_mc_fit_FR_;
246 
247  // Configuration tree
248  std::unique_ptr<TTree> configtree_;
249  int Ntracks_ = 0, Nevents_ = 0;
250  float nLayers_ = 0;
251  int nlayers_per_seed_ = 0, maxCand_ = 0;
252  float chi2Cut_min_ = 0., nSigma_ = 0., minDPhi_ = 0., maxDPhi_ = 0., minDEta_ = 0., maxDEta_ = 0.;
253  float beamspotX_ = 0., beamspotY_ = 0., beamspotZ_ = 0.;
254  float minSimPt_ = 0., maxSimPt_ = 0.;
255  float hitposerrXY_ = 0., hitposerrZ_ = 0., hitposerrR_ = 0.;
256  float varXY_ = 0., varZ_ = 0.;
257  float ptinverr049_ = 0., phierr049_ = 0., thetaerr049_ = 0., ptinverr012_ = 0., phierr012_ = 0., thetaerr012_ = 0.;
258 
259  // CMSSW Efficiency tree
260  std::unique_ptr<TTree> cmsswefftree_;
261  int evtID_ceff_ = 0, cmsswID_ceff_ = 0, seedID_cmssw_ceff_ = 0;
262 
263  float x_cmssw_ceff_ = 0., y_cmssw_ceff_ = 0., z_cmssw_ceff_ = 0.;
264  float pt_cmssw_ceff_ = 0., phi_cmssw_ceff_ = 0., eta_cmssw_ceff_ = 0.;
265  float nLayers_cmssw_ceff_ = 0;
266  int nHits_cmssw_ceff_ = 0, lastlyr_cmssw_ceff_ = 0;
267 
268  // build
269  int seedID_build_ceff_ = 0, mcTrackID_build_ceff_ = 0;
270  int cmsswmask_build_ceff_ = 0;
271 
272  float pt_build_ceff_ = 0., ept_build_ceff_ = 0.;
273  float phi_build_ceff_ = 0., ephi_build_ceff_ = 0.;
274  float eta_build_ceff_ = 0., eeta_build_ceff_ = 0.;
275 
276  float x_mc_build_ceff_ = 0., y_mc_build_ceff_ = 0., z_mc_build_ceff_ = 0.;
277  float pt_mc_build_ceff_ = 0., phi_mc_build_ceff_ = 0., eta_mc_build_ceff_ = 0.;
278 
279  float nLayers_build_ceff_ = 0;
280  int nHits_build_ceff_ = 0, nHitsMatched_build_ceff_ = 0, lastlyr_build_ceff_ = 0;
281  float fracHitsMatched_build_ceff_ = 0;
282 
283  float xhit_build_ceff_ = 0., yhit_build_ceff_ = 0., zhit_build_ceff_ = 0.;
284 
285  // chi2 of tracks + phi swim
286  float hitchi2_build_ceff_ = 0., helixchi2_build_ceff_ = 0.;
287  int score_build_ceff_ = 0;
288  float dphi_build_ceff_ = 0.;
289 
290  int duplmask_build_ceff_ = 0, nTkMatches_build_ceff_ = 0;
291 
292  // fit
293  int seedID_fit_ceff_ = 0, mcTrackID_fit_ceff_ = 0;
294  int cmsswmask_fit_ceff_ = 0;
295 
296  float pt_fit_ceff_ = 0., ept_fit_ceff_ = 0.;
297  float phi_fit_ceff_ = 0., ephi_fit_ceff_ = 0.;
298  float eta_fit_ceff_ = 0., eeta_fit_ceff_ = 0.;
299 
300  float x_mc_fit_ceff_ = 0., y_mc_fit_ceff_ = 0., z_mc_fit_ceff_ = 0.;
301  float pt_mc_fit_ceff_ = 0., phi_mc_fit_ceff_ = 0., eta_mc_fit_ceff_ = 0.;
302 
303  float nLayers_fit_ceff_ = 0;
304  int nHits_fit_ceff_ = 0, nHitsMatched_fit_ceff_ = 0, lastlyr_fit_ceff_ = 0;
305  float fracHitsMatched_fit_ceff_ = 0;
306 
307  float xhit_fit_ceff_ = 0., yhit_fit_ceff_ = 0., zhit_fit_ceff_ = 0.;
308 
309  // chi2 of tracks + phi swim
310  float hitchi2_fit_ceff_ = 0., helixchi2_fit_ceff_ = 0.;
311  int score_fit_ceff_ = 0;
312  float dphi_fit_ceff_ = 0.;
313 
314  int duplmask_fit_ceff_ = 0, nTkMatches_fit_ceff_ = 0;
315 
316  ULong64_t itermask_build_ceff_ = 0, itermask_fit_ceff_ = 0;
317  ULong64_t iterduplmask_build_ceff_ = 0, iterduplmask_fit_ceff_ = 0;
318  ULong64_t algo_seed_ceff_ = 0;
319 
320  // hit info
321  std::vector<int> hitlyrs_cmssw_ceff_, hitlyrs_build_ceff_, hitlyrs_mc_build_ceff_, hitlyrs_fit_ceff_,
322  hitlyrs_mc_fit_ceff_;
323  std::vector<int> hitidxs_cmssw_ceff_, hitidxs_build_ceff_, hitidxs_mc_build_ceff_, hitidxs_fit_ceff_,
324  hitidxs_mc_fit_ceff_;
325 
326  // CMSSW FakeRate tree
327  std::unique_ptr<TTree> cmsswfrtree_;
328  int evtID_cFR_ = 0, seedID_cFR_ = 0, mcTrackID_cFR_ = 0;
329 
330  //seed algo
331  int algorithm_cFR_ = 0;
332 
333  // build info
334  int cmsswID_build_cFR_ = 0, cmsswmask_build_cFR_ = 0;
335 
336  float pt_build_cFR_ = 0., ept_build_cFR_ = 0.;
337  float phi_build_cFR_ = 0., ephi_build_cFR_ = 0.;
338  float eta_build_cFR_ = 0., eeta_build_cFR_ = 0.;
339 
340  float x_mc_cFR_ = 0., y_mc_cFR_ = 0., z_mc_cFR_ = 0.;
341  float pt_mc_cFR_ = 0., phi_mc_cFR_ = 0., eta_mc_cFR_ = 0.;
342 
343  float nLayers_build_cFR_ = 0;
344  int nHits_build_cFR_ = 0, nHitsMatched_build_cFR_ = 0, lastlyr_build_cFR_ = 0;
345  float fracHitsMatched_build_cFR_ = 0;
346 
347  float xhit_build_cFR_ = 0., yhit_build_cFR_ = 0., zhit_build_cFR_ = 0.;
348 
349  // chi2 of tracks
350  float hitchi2_build_cFR_ = 0., helixchi2_build_cFR_ = 0.;
351  int score_build_cFR_ = 0;
352  float dphi_build_cFR_ = 0.;
353 
354  // for duplicate track matches
355  int duplmask_build_cFR_ = 0, iTkMatches_build_cFR_ = 0;
356 
357  // cmssw info
358  int seedID_cmssw_build_cFR_ = 0;
359  float x_cmssw_build_cFR_ = 0., y_cmssw_build_cFR_ = 0., z_cmssw_build_cFR_ = 0.;
360  float pt_cmssw_build_cFR_ = 0., phi_cmssw_build_cFR_ = 0., eta_cmssw_build_cFR_ = 0.;
361  float nLayers_cmssw_build_cFR_ = 0;
362  int nHits_cmssw_build_cFR_ = 0, lastlyr_cmssw_build_cFR_ = 0;
363 
364  // fit info
365  int cmsswID_fit_cFR_ = 0, cmsswmask_fit_cFR_ = 0;
366 
367  float pt_fit_cFR_ = 0., ept_fit_cFR_ = 0.;
368  float phi_fit_cFR_ = 0., ephi_fit_cFR_ = 0.;
369  float eta_fit_cFR_ = 0., eeta_fit_cFR_ = 0.;
370 
371  float nLayers_fit_cFR_ = 0;
372  int nHits_fit_cFR_ = 0, nHitsMatched_fit_cFR_ = 0, lastlyr_fit_cFR_ = 0;
373  float fracHitsMatched_fit_cFR_ = 0;
374 
375  float xhit_fit_cFR_ = 0., yhit_fit_cFR_ = 0., zhit_fit_cFR_ = 0.;
376 
377  // chi2 of tracks
378  float hitchi2_fit_cFR_ = 0., helixchi2_fit_cFR_ = 0.;
379  int score_fit_cFR_ = 0;
380  float dphi_fit_cFR_ = 0.;
381 
382  // for duplicate track matches
383  int duplmask_fit_cFR_ = 0, iTkMatches_fit_cFR_ = 0;
384 
385  // cmssw info
386  int seedID_cmssw_fit_cFR_ = 0;
387  float x_cmssw_fit_cFR_ = 0., y_cmssw_fit_cFR_ = 0., z_cmssw_fit_cFR_ = 0.;
388  float pt_cmssw_fit_cFR_ = 0., phi_cmssw_fit_cFR_ = 0., eta_cmssw_fit_cFR_ = 0.;
389  float nLayers_cmssw_fit_cFR_ = 0;
390  int nHits_cmssw_fit_cFR_ = 0, lastlyr_cmssw_fit_cFR_ = 0;
391 
392  // hit info
393  std::vector<int> hitlyrs_mc_cFR_, hitlyrs_build_cFR_, hitlyrs_cmssw_build_cFR_, hitlyrs_fit_cFR_,
394  hitlyrs_cmssw_fit_cFR_;
395  std::vector<int> hitidxs_mc_cFR_, hitidxs_build_cFR_, hitidxs_cmssw_build_cFR_, hitidxs_fit_cFR_,
396  hitidxs_cmssw_fit_cFR_;
397 
398  // Fit tree (for fine tuning z-phi windows and such --> MPlex Only
399  std::unique_ptr<TTree> fittree_;
400  int ntotallayers_fit_ = 0, tkid_fit_ = 0, evtid_fit_ = 0;
401 
402  static const int nfvs_ = 24;
403  std::vector<float> fvs_[nfvs_];
404 
405  std::vector<float>&z_prop_fit_ = fvs_[0], &ez_prop_fit_ = fvs_[1];
406  std::vector<float>&z_hit_fit_ = fvs_[2], &ez_hit_fit_ = fvs_[3], &z_sim_fit_ = fvs_[4], &ez_sim_fit_ = fvs_[5];
407  std::vector<float>&pphi_prop_fit_ = fvs_[6], &epphi_prop_fit_ = fvs_[7];
408  std::vector<float>&pphi_hit_fit_ = fvs_[8], &epphi_hit_fit_ = fvs_[9], &pphi_sim_fit_ = fvs_[10],
409  &epphi_sim_fit_ = fvs_[11];
410  std::vector<float>&pt_up_fit_ = fvs_[12], &ept_up_fit_ = fvs_[13], &pt_sim_fit_ = fvs_[14],
411  &ept_sim_fit_ = fvs_[15];
412  std::vector<float>&mphi_up_fit_ = fvs_[16], &emphi_up_fit_ = fvs_[17], &mphi_sim_fit_ = fvs_[18],
413  &emphi_sim_fit_ = fvs_[19];
414  std::vector<float>&meta_up_fit_ = fvs_[20], &emeta_up_fit_ = fvs_[21], &meta_sim_fit_ = fvs_[22],
415  &emeta_sim_fit_ = fvs_[23];
416 
417  std::mutex glock_;
418  };
419 } // end namespace mkfit
420 #endif
421 #endif
std::vector< TrackExtra > TrackExtraVec
virtual void resetValidationMaps()
Definition: Validation.h:50
virtual void fillEfficiencyTree(const Event &)
Definition: Validation.h:66
virtual void setTrackScoresDumbCMSSW(Event &)
Definition: Validation.h:64
static std::mutex mutex
Definition: Proxy.cc:8
TTreeValidation(std::string)
virtual void saveTTrees()
Definition: Validation.h:73
virtual void makeSimTkToRecoTksMaps(Event &)
Definition: Validation.h:56
virtual void setTrackExtras(Event &ev)
Definition: Validation.h:55
std::unordered_map< int, std::vector< int > > TkIDToTkIDVecMap
Definition: TrackExtra.h:125
virtual void alignTracks(TrackVec &, TrackExtraVec &, bool)
Definition: Validation.h:48
virtual void fillCMSSWFakeRateTree(const Event &)
Definition: Validation.h:70
std::unordered_map< int, int > TkIDToTkIDMap
Definition: TrackExtra.h:124
std::vector< ReducedTrack > RedTrackVec
Definition: TrackExtra.h:35
virtual void makeSeedTkToCMSSWTkMap(Event &)
Definition: Validation.h:60
virtual void makeCMSSWTkToRecoTksMaps(Event &)
Definition: Validation.h:59
virtual void makeSeedTkToRecoTkMaps(Event &)
Definition: Validation.h:57
virtual void makeRecoTkToSeedTkMapsDumbCMSSW(Event &)
Definition: Validation.h:62
std::vector< Track > TrackVec
virtual void makeCMSSWTkToSeedTkMap(Event &)
Definition: Validation.h:61
virtual void makeRecoTkToRecoTkMaps(Event &)
Definition: Validation.h:58
virtual void collectFitInfo(const FitVal &, int, int)
Definition: Validation.h:53
virtual void fillFakeRateTree(const Event &)
Definition: Validation.h:67
virtual void fillCMSSWEfficiencyTree(const Event &)
Definition: Validation.h:69
std::map< int, std::map< int, std::vector< int > > > LayIdxIDVecMapMap
Definition: TrackExtra.h:37
virtual void fillConfigTree()
Definition: Validation.h:68
virtual void fillFitTree(const Event &)
Definition: Validation.h:71