Belle II Software  release-08-01-10
CDCCRTestModule.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #pragma once
10 
11 #include <framework/core/HistoModule.h>
12 
13 #include <cdc/dataobjects/WireID.h>
14 
15 #include <string>
16 
17 #include <mdst/dataobjects/Track.h>
18 #include <mdst/dataobjects/TrackFitResult.h>
19 #include <tracking/dataobjects/RecoTrack.h>
20 #include <framework/dataobjects/EventT0.h>
21 #include <framework/datastore/StoreArray.h>
22 #include <framework/geometry/B2Vector3.h>
23 #include "TH1.h"
24 #include "TH2.h"
25 #include "TProfile.h"
26 #include "TTree.h"
27 
28 namespace Belle2 {
34  namespace CDC {
35 
42  class CDCCRTestModule : public HistoModule {
43 
44  public:
45 
50 
54  virtual ~CDCCRTestModule();
55 
59  void initialize() override;
60 
64  void beginRun() override;
65 
70  void event() override;
75  void endRun() override;
76 
80  void terminate() override;
81 
86  void defineHisto() override;
87 
88  private:
89 
93  TH1* getHist(const char* name, const char* title,
94  int nBins, double x0, double x1)
95  {
96  TH1* h = new TH1D(name, title, nBins, x0, x1);
97  m_allHistos.push_back(h);
98  return h;
99  }
100 
104  TProfile* getHistProfile(const char* name, const char* title,
105  int nBins, double x0, double x1)
106  {
107  TProfile* h = new TProfile(name, title, nBins, x0, x1);
108  m_allHistos.push_back(h);
109  return h;
110  }
111 
115  TH2* getHist(const char* name, const char* title,
116  int nBinsX, double x0, double x1,
117  int nBinsY, double y0, double y1)
118  {
119  TH2* h = new TH2D(name, title, nBinsX, x0, x1, nBinsY, y0, y1);
120  m_allHistos.push_back(h);
121  return h;
122  }
123 
127  TH1* getHist(const std::string& name, const std::string& title,
128  int nBins, double x0, double x1)
129  {
130  return getHist(name.c_str(), title.c_str(), nBins, x0, x1);
131  }
132 
136  TProfile* getHistProfile(const std::string& name, const std::string& title,
137  int nBins, double x0, double x1)
138  {
139  return getHistProfile(name.c_str(), title.c_str(), nBins, x0, x1);
140  }
141 
145  TH2* getHist(const std::string& name, const std::string& title,
146  int nBinsX, double x0, double x1,
147  int nBinsY, double y0, double y1)
148  {
149  return getHist(name.c_str(), title.c_str(), nBinsX, x0, x1, nBinsY, y0, y1);
150  }
151 
152 
157 
162 
166  void plotResults(Belle2::RecoTrack* track);
167 
171  void getHitDistInTrackCand(const RecoTrack* track);//Draw hit distribution from track candidate
172 
177 
181  void HitEfficiency(const Belle2::RecoTrack* track);
182 
186  int getICLayer(int slayer, int ilayer)
187  {
188  if (slayer == 0) {return ilayer;}
189  else {return 8 + (slayer - 1) * 6 + ilayer;}
190  }
191 
198 
201 
204 
207 
210 
211  std::string m_trackArrayName;
212  std::string m_cdcHitArrayName ;
213  std::string m_recoTrackArrayName ;
217  std::vector<TH1*> m_allHistos;
218  std::string m_treeName;
220  TTree* m_tree;
221  TH1* m_hNTracks;
224  TH1* m_hNDF;
225  TH1* m_hNHits;
227  TH1* m_hChi2;
228  TH1* m_hPval;
229  TH2* m_hNDFChi2;
230  TH2* m_hNDFPval;
231  TH1* m_hAlpha;
232  TH1* m_hPhi0;
233  TH1* m_hTheta;
236  TH1* m_hHitDistInTrack[56];
237  TH1* m_hResidualU[56];
238  TH1* m_hEvtT0;
239  TH2* m_hNDFResidualU[56];
242  TH2* m_hDxDt[56];
243  TProfile* m_hHitEff_soft[56];
250  double res_b;
251  double res_u;
252  double res_b_err;
253  double res_u_err;
254  double weight;
255  double absRes_b;
256  double absRes_u;
257  double alpha;
258  double theta;
259  unsigned short adc;
260  short tdc;
261  double t;
262  double t_fit;
263  double dt_flight;
264  double dt_flight_sim;
265  double dt_prop;
266  double evtT0;
267  double Pt;
269  double x_mea;
270  double x_u;
271  double x_b;
272  double x_sim;
273  double z;
274  double z_sim;
275  double z_prop;
276  int lay;
277  int IWire;
278  int lr;
279  int numhits;
280  int boardID;
281  double Pval;
282  double TrPval;
283  double ndf;
284  double d0;
285  double z0;
286  double phi0;
287  double tanL;
288  double omega;
289  double m_MinimumPt;
292  std::vector<double> m_TriggerPos;
293  std::vector<double> m_TriggerPlaneDirection;
294  std::vector<double> m_TriggerSize;
295  std::vector<int> m_up;
296  std::vector<int> m_low;
297  double trigHitPos_x;
298  double trigHitPos_z;
299  int trighit;
305  bool m_noBFit;
306  bool m_ToP;
307  bool m_ToF;
314  };
315  }
317 }
CDC Cosmic test calibration module.
StoreObjPtr< EventT0 > m_eventTimeStoreObject
Event timing.
std::string m_recoTrackArrayName
Belle2::RecoTrack StoreArray nam.e.
double m_MinimumPt
Minimum Transverse momentum of tracks.
int trighit
Trigger hit information.
bool m_calExpectedDriftTime
Calculate expected drift time from x_fit or not.
double x_sim
Simulation DriftLength .
TTree * m_tree
Output tree recording the information of each hit.
double res_b
Biased residual.
double alpha
Entrance Azimuthal angle of hit (degree).
void getHitDistInTrackCand(const RecoTrack *track)
Make hit distribution from track candidate.
TH1 * m_hNHits
Number of Hits per track.
bool m_plotResidual
Process track to get the hit information of fitted track.
double res_u_err
Unbiased residual error.
TH1 * m_hNHits_trackcand
Number of Hits per trackCand.
B2Vector3D m_trigHitPos
Trigger position.
void initialize() override
Initializes the Module.
int getICLayer(int slayer, int ilayer)
Convert slayer and ilayer to iclayer.
StoreArray< TrackFitResult > m_TrackFitResults
Track fit results.
double absRes_b
absolute value of biased residual.
bool m_StoreTrackParams
Store Track parameter or not.
void event() override
Event action (main routine).
TProfile * getHistProfile(const std::string &name, const std::string &title, int nBins, double x0, double x1)
Create profile plot.
double dt_flight
Time of flight.
bool m_SmallerOutput
make output smaller by ignore some variable.
void HitEfficiency(const Belle2::RecoTrack *track)
Cal Hit eff.
TH1 * m_hHitDistInTrack[56]
Hit Dist.
std::string m_cdcHitArrayName
Belle2::CDCHit StoreArray name.
void endRun() override
End run action.
TH2 * getHist(const std::string &name, const std::string &title, int nBinsX, double x0, double x1, int nBinsY, double y0, double y1)
Create 2d-histogram.
double res_u
Unbiased residual.
TH1 * m_hPhi0
Phi0 of ttrack, see Helix.
void terminate() override
Termination action.
TH1 * getHist(const char *name, const char *title, int nBins, double x0, double x1)
Create 1D histogram.
TH1 * m_hNormalizedResidualU[56]
Residual distribution normalized with tracking error.
TH1 * m_hNTracks
Number of track fitted, Convergence, not conv, not fit.
TH1 * m_hHitDistInCDCHit[56]
Hit Dist.
double z0
Track Parameter, z0.
bool m_hitEfficiency
calculate hit eff or not, Haven't finished.
std::string m_relRecoTrackTrackName
Relation between RecoTrack and Belle2:Track.
std::vector< int > m_low
lower channel list for each board.
void plotResults(Belle2::RecoTrack *track)
Plot track parameters and related variables.
const genfit::SharedPlanePtr constructPlane(const genfit::MeasuredStateOnPlane &state, WireID m_wireID)
Construct a plane for the hit.
TH2 * m_hNDFNormalizedResidualU[56]
Normalized residual vs.
double Pval
P-value of fitted track.
double z_prop
Propagation Length along the sense wire.
double res_b_err
Biased residual error.
double t
Measurement Drift time.
TH2 * m_hNDFPval
Degree-of-freedom vs Probability histo.
TH1 * m_hTheta
Theta of each Hit.
TH1 * m_hNTracksPerEvent
Number of TrackCand per Event.
void beginRun() override
Begin run action.
std::string m_histogramDirectoryName
subdir where to place the histograms.
void getResidualOfUnFittedLayer(Belle2::RecoTrack *track)
Calculate residual for Layers which didn't use int fitting.
double omega
Track Parameter, omega.
double weight
Weight of hit.
double Pt
Transverse momentum.
double x_b
X_fit for biased track fit.
double t_fit
Drift time calculated from x_fit.
bool m_fillExpertHistos
Fill some histogram for monitoring fit quality.
TH1 * m_hAlpha
Alpha of each Hit.
std::string m_trackArrayName
Belle2::Track StoreArray name.
double z_sim
Z of hit on wire (simulation).
const Belle2::TrackFitResult * fitresult
Track fit result.
double TrPval
P-value of fitted track.
bool m_MakeHitDist
Switch to make histograms of hit distribution.
TH2 * m_hNDFChi2
Chi2 vs degree-of-freedom histo.
virtual ~CDCCRTestModule()
Destructor.
bool m_noBFit
fit incase no magnetic Field of not, if true, NDF=4 in cal P-value
bool m_EstimateResultForUnFittedLayer
Calculate residual for layer that we do not use in track fitting.
int boardID
Electrical Board ID.
double z
Z of hit on wire.
std::vector< TH1 * > m_allHistos
A list of 1d histograms.
TProfile * m_hHitEff_soft[56]
Hit efficience of each layer, software.
TH2 * m_h2DHitDistInTrack
2D Hit Dist..(ICLay vs IWire) have weight>0.5 after fit with DAF
double trigHitPos_x
X-position of track at trigger counter.
std::string m_trackFitResultArrayName
Belle2::TrackFitResult StoreArray name.
TProfile * getHistProfile(const char *name, const char *title, int nBins, double x0, double x1)
Create profile plot.
double dt_prop
Time of propagation.
bool m_ToP
Enable to correct ToP if true.
TH2 * getHist(const char *name, const char *title, int nBinsX, double x0, double x1, int nBinsY, double y0, double y1)
Create 2d-histogram.
double x_u
X_fit for unbiased track fit.
double theta
Entrance Polar angle of hit (degree).
std::vector< int > m_up
upper channel list for each board.
TH1 * m_hNTracksPerEventFitted
Number of TrackCand per Event.
bool m_ToF
Enable to correct ToF if true.
TH1 * m_hPval
Fit Probability histo.
B2Vector3D getTriggerHitPosition(Belle2::RecoTrack *track)
extrapolation track to trigger counter plane (y position).
std::string m_treeName
Name of tree for the output file.
double d0
Track Parameter, d0.
StoreArray< RecoTrack > m_RecoTracks
Tracks.
TH1 * m_hHitDistInTrCand[56]
Hit Dist.
StoreArray< Track > m_Tracks
Tracks.
TH2 * m_h2DHitDistInTrCand
2D Hit Dist.
std::vector< double > m_TriggerPlaneDirection
Nominal center position of trigger counter.
TH2 * m_hDxDt[56]
Unbiased x_fit vs.
TH2 * m_hNDFResidualU[56]
Residual vs.
double tanL
Track Parameter, tanL.
unsigned short adc
adc value.
bool m_StoreCDCSimHitInfo
Store CDCSimHit Information.
double phi0
Track Parameter, phi0.
double trigHitPos_z
Z-position of track at trigger counter.
std::vector< double > m_TriggerPos
Nominal center position of trigger counter.
bool m_EventT0Extraction
use Event T0 extract t0 or not.
double ndf
degree of freedom.
double absRes_u
absolute value of unbiased residual.
TH1 * m_hNDF
Number of Degree Freedom.
TH1 * m_hResidualU[56]
Residual distribution (in cm)
TH1 * getHist(const std::string &name, const std::string &title, int nBins, double x0, double x1)
Create 1d-histogram.
TH2 * m_hTriggerHitZX
Trigger hit image.
std::vector< double > m_TriggerSize
Size of trigger counter (Width x length).
TH2 * m_h2DHitDistInCDCHit
2D Hit Dist.
double dt_flight_sim
Time of flight (Simulation).
void defineHisto() override
Histogram definitions such as TH1(), TH2(), TNtuple(), TTree()....
StoreArray< CDCHit > m_CDCHits
CDC hits.
double x_mea
measure drift length (signed by left right).
HistoModule.h is supposed to be used instead of Module.h for the modules with histogram definitions t...
Definition: HistoModule.h:29
This is the Reconstruction Event-Data Model Track.
Definition: RecoTrack.h:79
Accessor to arrays stored in the data store.
Definition: StoreArray.h:113
Type-safe access to single objects in the data store.
Definition: StoreObjPtr.h:96
Values of the result of a track fit with a given particle hypothesis.
Class to identify a wire inside the CDC.
Definition: WireID.h:34
#StateOnPlane with additional covariance matrix.
Abstract base class for different kinds of events.
std::shared_ptr< genfit::DetPlane > SharedPlanePtr
Shared Pointer to a DetPlane.