9#include "cdc/modules/cdcCRTest/CDCCRTestModule.h"
11#include <framework/gearbox/Const.h>
12#include <framework/core/HistoModule.h>
13#include <framework/datastore/StoreObjPtr.h>
14#include <framework/datastore/RelationArray.h>
16#include <genfit/TrackPoint.h>
17#include <genfit/KalmanFitterInfo.h>
18#include <genfit/MeasurementOnPlane.h>
19#include <genfit/MeasuredStateOnPlane.h>
20#include <genfit/StateOnPlane.h>
22#include <cdc/translators/RealisticCDCGeometryTranslator.h>
23#include <cdc/translators/RealisticTDCCountTranslator.h>
24#include <cdc/dataobjects/CDCRecoHit.h>
25#include <cdc/dataobjects/CDCSimHit.h>
26#include "TDirectory.h"
27#include <Math/ProbFuncMathCore.h>
32using namespace genfit;
43 addParam(
"CorrectToF",
m_ToF,
"if true, time of flight will take account in t",
true);
44 addParam(
"CorrectToP",
m_ToP,
"if true, time of Propagation will take account in t",
true);
47 "Track fit results histograms will be put into this directory", std::string(
"trackfit"));
50 addParam(
"noBFit",
m_noBFit,
"If true -> #Params ==4, #params ==5 for calculate P-Val",
false);
51 addParam(
"plotResidual",
m_plotResidual,
"plot biased residual, normalized res and xtplot for all layer",
false);
55 addParam(
"TriggerPos",
m_TriggerPos,
"Trigger position use for cut and reconstruct Trigger image", std::vector<double> { -0.6, -13.25, 17.3});
57 std::vector<double> { 0, 1, 0});
58 addParam(
"TriggerSize",
m_TriggerSize,
"Trigger Size, (Width x length)", std::vector<double> {100, 50});
59 addParam(
"IwireLow",
m_low,
"Lower boundary of hit dist. Histogram", std::vector<int> {0, 0, 0, 0, 0, 0, 0, 0, 0});
60 addParam(
"IwireUpper",
m_up,
"Upper boundary of hit dist. Histogram", std::vector<int> {161, 161, 193, 225, 257, 289, 321, 355, 385});
64 "Calculate residual for Layer that is set unUseInFit",
true);
65 addParam(
"SmallerOutput",
m_SmallerOutput,
"If true, trigghit position, residual cov,absRes, will not be stored",
false);
69 addParam(
"MinimumPt",
m_MinimumPt,
"Tracks with transverse momentum smaller than this will not be recorded", 0.);
132 TDirectory* oldDir = gDirectory;
136 m_hNTracks->GetXaxis()->SetBinLabel(1,
"fitted, converged");
137 m_hNTracks->GetXaxis()->SetBinLabel(2,
"fitted, not converged");
138 m_hNTracks->GetXaxis()->SetBinLabel(3,
"TrackCand, but no Track");
140 m_hNDF =
getHist(
"hNDF",
"NDF of fitted track;NDF;Tracks", 71, -1, 150);
141 m_hNHits =
getHist(
"hNHits",
"#hit of fitted track;#hit;Tracks", 61, -1, 150);
145 m_hChi2 =
getHist(
"hChi2",
"#chi^{2} of tracks;#chi^{2};Tracks", 400, 0, 400);
146 m_hPhi0 =
getHist(
"hPhi0",
"#Phi_{0} of tracks;#phi_{0} (Degree);Tracks", 400, -190, 190);
147 m_hAlpha =
getHist(
"hAlpha",
"#alpha Dist.;#alpha (Degree);Hits", 360, -90, 90);
148 m_hTheta =
getHist(
"hTheta",
"#theta Dist.;#theta (Degree);Hits", 360, 0, 180);
149 m_hPval =
getHist(
"hPval",
"p-values of tracks;pVal;Tracks", 1000, 0, 1);
150 m_hEvtT0 =
getHist(
"hEvtT0",
"Event T0; EvtT0 (ns); #event", 200, -100, 100);
152 m_hTriggerHitZX =
getHist(
"TriggerHitZX",
"Hit Position on trigger counter;z(cm);x(cm)", 300, -100, 100, 120, -15, 15);
162 m_hNDFChi2 =
getHist(
"hNDFChi2",
"#chi^{2} of tracks;NDF;#chi^{2};Tracks", 8, 0, 8, 800, 0, 200);
163 m_hNDFPval =
getHist(
"hNDFPval",
"p-values of tracks;NDF;pVal;Tracks", 8, 0, 8, 100, 0, 1);
166 for (
int i = 0; i < 56; ++i) {
169 Form(
"hit efficiency(soft) of Layer %d ;Drift distance;Software Efficiency", i), 200, -1, 1);
172 if (i < 8) {sl = 0;}
else { sl = floor((i - 8) / 6) + 1;}
182 const double normResRange = 20;
183 const double residualRange = 0.3;
184 std::string title, name;
186 name = (boost::format(
"hist_ResidualsU%1%") % i).str();
187 title = (boost::format(
"unnormalized, unbiased residuals in layer %1%;cm;Tracks") % i).str();
190 name = (boost::format(
"hNormalizedResidualsU%1%") % i).str();
191 title = (boost::format(
"normalized, unbiased residuals in layer %1%;NDF;#sigma (cm);Tracks") % i).str();
194 name = (boost::format(
"DxDt%1%") % i).str();
195 title = (boost::format(
"Drift Length vs Drift time at Layer_%1%;Drift Length (cm);Drift time (ns)") % i).str();
199 name = (boost::format(
"hNDFResidualsU%1%") % i).str();
200 title = (boost::format(
"unnormalized, unbiased residuals along U in layer %1%;NDF;cm;Tracks") % i).str();
203 name = (boost::format(
"hNDFNormalizedResidualsU%1%") % i).str();
204 title = (boost::format(
"normalized, unbiased residuals in layer %1%;NDF;#sigma (cm);Tracks") % i).str();
225 B2ASSERT(
"Trigger Position (TriggerPos) must be 3 components.",
m_TriggerPos.size() == 3);
226 B2ASSERT(
"Normal vector of Trigger Plane (NormTriggerPlaneDirection) must be 3 components.",
m_TriggerPlaneDirection.size() == 3);
227 B2ASSERT(
"Trigger size (TriggerSize) must be 2 component width and length(z direction)",
m_TriggerSize.size() == 2);
228 B2ASSERT(
"List of Lower boundary (IWireLow) ( for histo must be 9 components, equivalent 9 supper layers",
m_low.size() == 9);
229 B2ASSERT(
"List of Upper boundary (IWireUp) for histo must be 9 components, equivalent 9 supper layers",
m_low.size() == 9);
244 for (
int i = 0; i <
m_CDCHits.getEntries(); ++i) {
256 for (
int i = 0; i < nTr; ++i) {
258 if (track->getDirtyFlag()) {B2INFO(
"Dirty flag was set for track: " << track->getPositionSeed().Y());
continue;}
263 if (!track->hasTrackFitStatus()) {
267 const genfit::FitStatus* fs = track->getTrackFitStatus();
268 if (!fs || !fs->isFitted()) {
272 if (!fs->isFitConverged()) {
273 m_hNTracks->Fill(
"fitted, not converged", 1.0);
274 B2DEBUG(99,
"------Fitted but not converged");
279 B2DEBUG(99,
"-------Fitted and Converged");
281 nfitted = nfitted + 1;
284 if (!b2track) {B2DEBUG(99,
"No relation found");
continue;}
288 B2WARNING(
"track was fitted but Relation not found");
293 else {
ndf = fs->getNdf();}
294 double Chi2 = fs->getChi2();
295 TrPval = std::max(0., ROOT::Math::chisquared_cdf_c(Chi2,
ndf));
298 if (
ndf < 15)
continue;
325 }
catch (
const genfit::Exception& e) {
327 B2ERROR(
"Exception when calling the plotResults method" << e.what());
366 m_hNHits->Fill(track->getNumberOfCDCHits());
368 std::vector<genfit::TrackPoint*> tps = track->getHitPointsWithMeasurement();
370 for (genfit::TrackPoint* tp : tps) {
371 if (!tp->hasRawMeasurements())
374 const genfit::AbsMeasurement* raw = tp->getRawMeasurement(0);
378 const genfit::KalmanFitterInfo* kfi = tp->getKalmanFitterInfo();
379 if (!kfi) {B2DEBUG(199,
"No Fitter Info: Layer " << wireid.getICLayer());
continue;}
381 for (
unsigned int iMeas = 0; iMeas < kfi->getNumMeasurements(); ++iMeas) {
382 if ((kfi->getWeights().at(iMeas)) > 0.5) {
383 const genfit::MeasurementOnPlane& residual_b = kfi->getResidual(iMeas,
true);
384 const genfit::MeasurementOnPlane& residual_u = kfi->getResidual(iMeas,
false);
385 lay = wireid.getICLayer();
386 IWire = wireid.getIWire();
396 const genfit::MeasuredStateOnPlane& mop = kfi->getFittedState();
397 const B2Vector3D pocaOnWire = mop.getPlane()->getO();
402 x_mea = kfi->getMeasurementOnPlane(iMeas)->getState()(0);
403 x_b = kfi->getFittedState(
true).getState()(3);
404 res_b = residual_b.getState()(0);
405 x_u = kfi->getFittedState(
false).getState()(3);
406 res_u = residual_u.getState()(0);
409 if (fabs(
alpha) > M_PI / 2) {
419 B2DEBUG(199,
"x_unbiased " <<
x_u <<
" |left_right " <<
lr);
430 weight = residual_u.getWeight();
431 res_b_err = std::sqrt(residual_b.getCov()(0, 0));
432 res_u_err = std::sqrt(residual_u.getCov()(0, 0));
467 int iclay =
getICLayer(cdchit->getISuperLayer(), cdchit->getILayer());
468 B2DEBUG(99,
"In TrackCand: ICLayer: " << iclay <<
"IWire: " << cdchit->getIWire());
478 const genfit::AbsTrackRep* trackRepresentation = track->getCardinalRepresentation();
481 genfit::MeasuredStateOnPlane mop = track->getMeasuredStateOnPlaneClosestTo(ROOT::Math::XYZVector(trigpos), trackRepresentation);
482 double l = mop.extrapolateToPlane(genfit::SharedPlanePtr(
new genfit::DetPlane(trigpos, trigDir)));
483 if (fabs(l) < 1000) pos = mop.getPos();
484 }
catch (
const genfit::Exception& er) {
485 B2WARNING(
"extrapolate to Trigger counter failure" << er.what());
486 }
catch (
const std::runtime_error& er) {
487 B2WARNING(
"Runtime error encountered: " << er.what());
489 B2WARNING(
"Undefined exception encountered.");
507 const genfit::TrackPoint* tp = track->getCreatedTrackPoint(track->getRecoHitInformation(cdchit));
511 if (rightLeftHitInformation == RecoHitInformation::RightLeftInformation::c_left) {
513 }
else if (rightLeftHitInformation == RecoHitInformation::RightLeftInformation::c_right) {
517 if (!tp->hasRawMeasurements())
519 const genfit::KalmanFitterInfo* kfi = tp->getKalmanFitterInfo();
524 unsigned short imea = 0;
525 for (
unsigned int iMeas = 0; iMeas < kfi->getNumMeasurements(); ++iMeas) {
526 double ww = kfi->getWeights().at(iMeas);
527 if (ww > max) {max = ww; imea = iMeas;}
529 double xx = kfi->getMeasurementOnPlane(imea)->getState()(0);
537 B2INFO(
"Start estimate residual for un-fitted layer");
538 B2INFO(
"position seed" << track->getPositionSeed().Y());
541 const genfit::AbsTrackRep* trackRepresentation = track->getCardinalRepresentation();
549 B2INFO(
"number of cdchit" << track->getCDCHitList().size());
550 B2INFO(
"number of point use int fit" <<
ndf + 4);
552 typedef std::pair<double, const RecoHitInformation*> SortingRecoHitPair;
556 if (track->getRecoHitInformation(cdchit)->useInFit())
continue;
560 int hitSortingParameter = track->getRecoHitInformation(cdchit)->getSortingParameter();
562 SortingRecoHitPair frontSideHit = std::make_pair(0,
nullptr);;
563 SortingRecoHitPair backsideSideHit = std::make_pair(0,
nullptr);;
564 SortingRecoHitPair hit4extraction;
577 auto hitListReverse = track->getCDCHitList();
578 std::reverse(hitListReverse.begin(), hitListReverse.end());
587 B2DEBUG(99,
"forward sorting parameter: " << frontSideHit.first <<
" |backward sorting parameter = " << backsideSideHit.first);
588 if (std::fabs(frontSideHit.first - hitSortingParameter) < std::fabs(backsideSideHit.first - hitSortingParameter)) {
589 hit4extraction = frontSideHit;
591 hit4extraction = backsideSideHit;
595 if (hit4extraction.second ==
nullptr)
598 auto closestHitTrackPoint = track->getCreatedTrackPoint(hit4extraction.second);
601 genfit::MeasuredStateOnPlane meaOnPlane = closestHitTrackPoint->getFitterInfo(trackRepresentation)->getFittedState(
608 genfit::SharedPlanePtr plane =
nullptr;
611 }
catch (
const genfit::Exception& e) {
612 B2WARNING(
"Error happen, can not reconstruct plan for extrapolating" << e.what());
615 double segmentLength;
617 segmentLength = meaOnPlane.extrapolateToPlane(plane);
618 }
catch (
const genfit::Exception& e) {
619 B2WARNING(
"Could not extrapolate the fit" << e.what());
622 IWire = wireid.getIWire();
623 lay = wireid.getICLayer();
624 const B2Vector3D pocaOnWire = meaOnPlane.getPlane()->getO();
625 const B2Vector3D pocaMom = meaOnPlane.getMom();
626 x_u = meaOnPlane.getState()(3);
635 if (fabs(
alpha) > M_PI / 2) {
658 B2DEBUG(199,
"we calculate residua for lay - IWire: " <<
lay <<
" - " <<
IWire);
659 B2DEBUG(199,
"distance between two hit" << segmentLength);
661 B2DEBUG(199,
"DriftLength (cal | sim)" <<
x_mea <<
" - " <<
x_sim);
673 const StateOnPlane stateOnPlane = StateOnPlane(state.getState(), state.getPlane(), state.getRep());
674 genfit::StateOnPlane st(stateOnPlane);
680 B2Vector3D WireDirectionIdeal = Wire2PosIdeal - Wire1PosIdeal;
681 WireDirectionIdeal.
SetMag(1.);
684 const genfit::AbsTrackRep* rep = state.getRep();
685 rep->extrapolateToLine(st, Wire1PosIdeal, WireDirectionIdeal);
686 const B2Vector3D& PocaIdeal = rep->getPos(st);
688 double zPOCA = (Wire1PosIdeal.
Z()
689 + WireDirectionIdeal.
Dot(PocaIdeal - Wire1PosIdeal) * WireDirectionIdeal.
Z());
700 rep->extrapolateToLine(st, wire1, wireDirection);
704 const B2Vector3D& pocaOnWire = wire1 + wireDirection.
Dot(poca - wire1) * wireDirection;
705 if (fabs(wireDirection.
Angle(dirInPoca)) < 0.01) {
706 B2WARNING(
"cannot construct det plane, track parallel with wire");
710 genfit::SharedPlanePtr pl = genfit::SharedPlanePtr(
new genfit::DetPlane(pocaOnWire, U, wireDirection));
void SetMag(DataType mag)
Set magnitude keeping theta and phi constant.
DataType Z() const
access variable Z (= .at(2) without boundary check)
B2Vector3< DataType > Cross(const B2Vector3< DataType > &p) const
Cross product.
DataType X() const
access variable X (= .at(0) without boundary check)
DataType Y() const
access variable Y (= .at(1) without boundary check)
DataType Dot(const B2Vector3< DataType > &p) const
Scalar product.
DataType Angle(const B2Vector3< DataType > &q) const
The angle w.r.t.
Class containing the result of the unpacker in raw data and the result of the digitizer in simulation...
short getTDCCount() const
Getter for TDC count.
unsigned short getADCCount() const
Getter for integrated charge.
This class is used to transfer CDC information to the track fit.
WireID getWireID() const
Getter for WireID object.
const CDCHit * getCDCHit() const
get the pointer to the CDCHit object that was used to create this CDCRecoHit object.
double getFlightTime() const
The method to get flight time.
B2Vector3D getPosWire() const
The method to get position on wire.
double getDriftLength() const
The method to get drift length.
StoreObjPtr< EventT0 > m_eventTimeStoreObject
Event timing.
std::string m_recoTrackArrayName
Belle2::RecoTrack StoreArray name.e.
double m_MinimumPt
Minimum Transverse momentum of tracks.
int numhits
Number of hits.
TProfile * getHistProfile(const char *name, const char *title, int nBins, double x0, double x1)
Create profile plot.
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).
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.
double res_u
Unbiased residual.
TH1 * m_hPhi0
Phi0 of ttrack, see Helix.
void terminate() override
Termination action.
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 efficiency 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.
double dt_prop
Time of propagation.
bool m_ToP
Enable to correct ToP if true.
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.
CDCCRTestModule()
Constructor.
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)
TH2 * m_hTriggerHitZX
Trigger hit image.
std::vector< double > m_TriggerSize
Size of trigger counter (Width x length).
TH2 * m_h2DHitDistInCDCHit
2D Hit Dist.
TH1 * getHist(const char *name, const char *title, int nBins, double x0, double x1)
Create 1D histogram.
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).
The Class for CDC Geometry Parameters.
double getTheta(const B2Vector3D &momentum) const
Returns track incident angle (theta in rad.).
unsigned short getBoardID(const WireID &wID) const
Returns frontend board id. corresponding to the wire id.
double getAlpha(const B2Vector3D &posOnWire, const B2Vector3D &momentum) const
Returns track incident angle in rphi plane (alpha in rad.).
const B2Vector3D wireBackwardPosition(uint layerId, int cellId, EWirePosition set=c_Base) const
Returns the backward position of the input sense wire.
double getOutgoingAlpha(const double alpha) const
Converts incoming- to outgoing-alpha.
unsigned short getOutgoingLR(const unsigned short lr, const double alpha) const
Converts incoming-lr to outgoing-lr.
double getOutgoingTheta(const double alpha, const double theta) const
Converts incoming- to outgoing-theta.
double getDriftTime(double dist, unsigned short layer, unsigned short lr, double alpha, double theta) const
Return the drift time to the sense wire.
static CDCGeometryPar & Instance(const CDCGeometry *=nullptr)
Static method to get a reference to the CDCGeometryPar instance.
This class uses the realistic detector geometry (the one after alignment procedure) for the translati...
const B2Vector3D getWireBackwardPosition(const WireID &wireID) override
Get wire position at backward end.
const B2Vector3D getWireForwardPosition(const WireID &wireID) override
Get wire position at forward end.
Translator mirroring the realistic Digitization.
double getDriftLength(unsigned short tdcCount, const WireID &wireID=WireID(), double timeOfFlightEstimator=0, bool leftRight=false, double z=0, double alpha=0, double theta=static_cast< double >(TMath::Pi()/2.), unsigned short adcCount=0) override
Get Drift length.
double getDriftTime(unsigned short tdcCount, const WireID &wireID, double timeOfFlightEstimator, double z, unsigned short adcCount) override
Get Drift time.
static const ChargedStable muon
muon particle
HistoModule.h is supposed to be used instead of Module.h for the modules with histogram definitions t...
void setDescription(const std::string &description)
Sets the description of the module.
void setPropertyFlags(unsigned int propertyFlags)
Sets the flags for the module properties.
@ c_ParallelProcessingCertified
This module can be run in parallel processing mode safely (All I/O must be done through the data stor...
This is the Reconstruction Event-Data Model Track.
Low-level class to create/modify relations between StoreArrays.
T * getRelated(const std::string &name="", const std::string &namedRelation="") const
Get the object to or from which this object has a relation.
const std::string & getName() const
Return name under which the object is saved in the DataStore.
double getOmega() const
Getter for omega.
double getD0() const
Getter for d0.
double getTanLambda() const
Getter for tanLambda.
double getZ0() const
Getter for z0.
ROOT::Math::XYZVector getMomentum() const
Getter for vector of momentum at closest approach of track in r/phi projection.
double getPhi0() const
Getter for phi0.
Class that bundles various TrackFitResults.
const TrackFitResult * getTrackFitResult(const Const::ChargedStable &chargedStable) const
Default Access to TrackFitResults.
Class to identify a wire inside the CDC.
unsigned short getICLayer() const
Getter for continuous layer numbering.
void addParam(const std::string &name, T ¶mVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
double sqrt(double a)
sqrt for double
Abstract base class for different kinds of events.