Belle II Software  release-06-01-15
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 "TH1.h"
23 #include "TH2.h"
24 #include "TProfile.h"
25 #include "TTree.h"
26 
27 namespace Belle2 {
33  namespace CDC {
34 
41  class CDCCRTestModule : public HistoModule {
42 
43  public:
44 
49 
53  virtual ~CDCCRTestModule();
54 
58  void initialize() override;
59 
63  void beginRun() override;
64 
69  void event() override;
74  void endRun() override;
75 
79  void terminate() override;
80 
85  void defineHisto() override;
86 
87  private:
88 
92  TH1* getHist(const char* name, const char* title,
93  int nBins, double x0, double x1)
94  {
95  TH1* h = new TH1D(name, title, nBins, x0, x1);
96  m_allHistos.push_back(h);
97  return h;
98  }
99 
103  TProfile* getHistProfile(const char* name, const char* title,
104  int nBins, double x0, double x1)
105  {
106  TProfile* h = new TProfile(name, title, nBins, x0, x1);
107  m_allHistos.push_back(h);
108  return h;
109  }
110 
114  TH2* getHist(const char* name, const char* title,
115  int nBinsX, double x0, double x1,
116  int nBinsY, double y0, double y1)
117  {
118  TH2* h = new TH2D(name, title, nBinsX, x0, x1, nBinsY, y0, y1);
119  m_allHistos.push_back(h);
120  return h;
121  }
122 
126  TH1* getHist(const std::string& name, const std::string& title,
127  int nBins, double x0, double x1)
128  {
129  return getHist(name.c_str(), title.c_str(), nBins, x0, x1);
130  }
131 
135  TProfile* getHistProfile(const std::string& name, const std::string& title,
136  int nBins, double x0, double x1)
137  {
138  return getHistProfile(name.c_str(), title.c_str(), nBins, x0, x1);
139  }
140 
144  TH2* getHist(const std::string& name, const std::string& title,
145  int nBinsX, double x0, double x1,
146  int nBinsY, double y0, double y1)
147  {
148  return getHist(name.c_str(), title.c_str(), nBinsX, x0, x1, nBinsY, y0, y1);
149  }
150 
151 
156 
161 
165  void plotResults(Belle2::RecoTrack* track);
166 
170  void getHitDistInTrackCand(const RecoTrack* track);//Draw hit distribution from track candidate
171 
175  TVector3 getTriggerHitPosition(Belle2::RecoTrack* track);
176 
180  void HitEfficiency(const Belle2::RecoTrack* track);
181 
185  int getICLayer(int slayer, int ilayer)
186  {
187  if (slayer == 0) {return ilayer;}
188  else {return 8 + (slayer - 1) * 6 + ilayer;}
189  }
190 
197 
200 
203 
206 
209 
210  std::string m_trackArrayName;
211  std::string m_cdcHitArrayName ;
212  std::string m_recoTrackArrayName ;
216  std::vector<TH1*> m_allHistos;
217  std::string m_treeName;
219  TTree* m_tree;
220  TH1* m_hNTracks;
223  TH1* m_hNDF;
224  TH1* m_hNHits;
226  TH1* m_hChi2;
227  TH1* m_hPval;
228  TH2* m_hNDFChi2;
229  TH2* m_hNDFPval;
230  TH1* m_hAlpha;
231  TH1* m_hPhi0;
232  TH1* m_hTheta;
235  TH1* m_hHitDistInTrack[56];
236  TH1* m_hResidualU[56];
237  TH1* m_hEvtT0;
238  TH2* m_hNDFResidualU[56];
241  TH2* m_hDxDt[56];
242  TProfile* m_hHitEff_soft[56];
249  double res_b;
250  double res_u;
251  double res_b_err;
252  double res_u_err;
253  double weight;
254  double absRes_b;
255  double absRes_u;
256  double alpha;
257  double theta;
258  unsigned short adc;
259  short tdc;
260  double t;
261  double t_fit;
262  double dt_flight;
263  double dt_flight_sim;
264  double dt_prop;
265  double evtT0;
266  double Pt;
268  double x_mea;
269  double x_u;
270  double x_b;
271  double x_sim;
272  double z;
273  double z_sim;
274  double z_prop;
275  int lay;
276  int IWire;
277  int lr;
278  int numhits;
279  int boardID;
280  double Pval;
281  double TrPval;
282  double ndf;
283  double d0;
284  double z0;
285  double phi0;
286  double tanL;
287  double omega;
288  double m_MinimumPt;
290  TVector3 m_trigHitPos;
291  std::vector<double> m_TriggerPos;
292  std::vector<double> m_TriggerPlaneDirection;
293  std::vector<double> m_TriggerSize;
294  std::vector<int> m_up;
295  std::vector<int> m_low;
296  double trigHitPos_x;
297  double trigHitPos_z;
298  int trighit;
304  bool m_noBFit;
305  bool m_ToP;
306  bool m_ToF;
313  };
314  }
316 }
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.
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.
TVector3 getTriggerHitPosition(Belle2::RecoTrack *track)
extrapolation track to trigger counter plane (y position).
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.
TVector3 m_trigHitPos
Trigger position.
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.
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:76
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:95
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.