9#include <reconstruction/modules/HitLevelInfoWriter/HitLevelInfoWriter.h>
10#include <mdst/dbobjects/BeamSpot.h>
22 setDescription(
"Extract dE/dx information for calibration development.");
27 addParam(
"m_isExtraVar",
m_isExtraVar,
"True or False for extra track/hit level variables",
false);
29 addParam(
"relativeCorrections",
m_isRelative,
"If true, apply corrections relative to those used in production",
false);
39 B2INFO(
"Creating a ROOT file for the hit level information...");
49 map<string, string> pdgMap = {{
"pi+",
"Const::pion.getPDGCode()"}, {
"K+",
"Const::kaon.getPDGCode()"}, {
"mu+",
"Const::muon.getPDGCode()"}, {
"e+",
"Const::electron.getPDGCode()"}, {
"p+",
"Const::proton.getPDGCode()"}, {
"deuteron",
"Const::deuteron.getPDGCode()"}};
72 if (nParticleList == 0) {
73 for (
int idedx = 0; idedx <
m_dedxTracks.getEntries(); idedx++) {
77 B2WARNING(
"No dedx related track...");
83 B2WARNING(
"No related track...");
89 B2WARNING(
"No related fit for this track...");
93 if (dedxTrack->
size() == 0 || dedxTrack->
size() > 200)
continue;
94 if (dedxTrack->
getCosTheta() < TMath::Cos(150.0 * TMath::DegToRad()))
continue;
95 if (dedxTrack->
getCosTheta() > TMath::Cos(17.0 * TMath::DegToRad()))
continue;
99 m_expID = evtMetaData->getExperiment();
100 m_runID = evtMetaData->getRun();
147 for (
int iList = 0; iList < nParticleList; iList++) {
150 if (!particlelist or particlelist->getListSize(
true) == 0) {
157 for (
unsigned int iPart = 0; iPart < particlelist->getListSize(
true); iPart++) {
158 Particle* part = particlelist->getParticle(iPart,
true);
160 B2WARNING(
"No particles...");
165 B2WARNING(
"No related PID likelihood...");
170 B2WARNING(
"No related track...");
175 B2WARNING(
"No related CDCDedxTrack...");
180 if (ptype !=
"pi+") {
181 if (ptype ==
"K+") fitResult = track->getTrackFitResultWithClosestMass(
Const::kaon);
182 else if (ptype ==
"p+") fitResult = track->getTrackFitResultWithClosestMass(
Const::proton);
183 else if (ptype ==
"deuteron") fitResult = track->getTrackFitResultWithClosestMass(
Const::deuteron);
184 else if (ptype ==
"mu+") fitResult = track->getTrackFitResultWithClosestMass(
Const::muon);
185 else if (ptype ==
"e+") fitResult = track->getTrackFitResultWithClosestMass(
Const::electron);
188 B2WARNING(
"No related fit for this track...");
192 if (dedxTrack->
size() == 0 || dedxTrack->
size() > 200)
continue;
194 if (dedxTrack->
getCosTheta() < TMath::Cos(150.0 * TMath::DegToRad()))
continue;
195 if (dedxTrack->
getCosTheta() > TMath::Cos(17.0 * TMath::DegToRad()))
continue;
199 m_expID = evtMetaData->getExperiment();
200 m_runID = evtMetaData->getRun();
247 for (
unsigned int i = 0; i <
m_file.size(); i++) {
248 B2INFO(
"Done writing out the hit level information...\t" <<
m_tree[i]->GetEntries() <<
" tracks");
260 ROOT::Math::XYZVector trackMom = fitResult->
getMomentum();
262 m_pt = trackMom.Rho();
263 m_phi = trackMom.Phi();
265 m_theta = trackMom.Theta() * 180. / TMath::Pi();
274 ROOT::Math::XYZVector trackPos = fitResult->
getPosition();
275 m_vx0 = trackPos.X();
276 m_vy0 = trackPos.Y();
277 m_vz0 = trackPos.Z();
289 helix.
passiveMoveBy(ROOT::Math::XYZVector(beamSpotDB->getIPPosition()));
290 m_dr = frame.getVertex(ROOT::Math::XYZVector(helix.getPerigee())).Rho();
291 m_dphi = frame.getVertex(ROOT::Math::XYZVector(helix.getPerigee())).Phi();
292 m_dz = frame.getVertex(ROOT::Math::XYZVector(helix.getPerigee())).Z();
322 if (m_cosTheta <= -0.850 || m_cosTheta >= 0.950) {
330 map<int, vector<double>>l_var;
370 double lout = 0, lin = 0, increment = 0;
375 const int lEdgeTrunc = int(
l_nhits * 0.05 + 0.51);
376 const int hEdgeTrunc = int(
l_nhits * (1 - 0.25) + 0.51);
383 for (
int il = 0; il <
l_nhits; ++il) {
388 l_path[il] = l_var[3][il];
389 l_dedx[il] = l_var[4][il];
397 if (
l_layer[il] > lastlayer) lout++;
398 else if (
l_layer[il] < lastlayer) lin++;
404 m_ioasym = (lout - lin) / increment;
408 for (
int ihit = 0; ihit <
h_nhits; ++ihit) {
448 vector<double> newLayerHits;
449 double newLayerDe = 0, newLayerDx = 0;
450 int nhitscombined = 0;
451 int wirelongesthit = 0;
452 double longesthit = 0;
454 for (
int ihit = 0; ihit <
h_nhits; ++ihit) {
457 double jWire = dedxTrack->
getWire(ihit);
459 double jEntaRS = dedxTrack->
getEntaRS(ihit);
460 double jPath = dedxTrack->
getPath(ihit);
477 double newhitdedx = 1.0;
481 if (correction != 0) {
482 newhitdedx /= correction;
484 newLayerDe += jadcbase / correction;
486 if (jPath > longesthit) {
488 wirelongesthit = jWire;
492 }
else newhitdedx = 0;
494 dedxTrack->
setDedx(ihit, newhitdedx);
499 if (newLayerDx != 0) {
501 double newLayerDedx = newLayerDe / totalDistance ;
502 newLayerHits.push_back(newLayerDedx);
503 l_var[0].push_back(nhitscombined);
504 l_var[1].push_back(wirelongesthit);
505 l_var[2].push_back(jLayer);
506 l_var[3].push_back(totalDistance);
507 l_var[4].push_back(newLayerDedx);
519 double dedxmean, dedxtrunc, dedxtruncNoSat, dedxerror;
521 calculateMeans(&dedxmean, &dedxtruncNoSat, &dedxerror, newLayerHits);
523 dedxtrunc = dedxtruncNoSat;
537 double costheta,
double ring,
double time)
const
539 double correction = 1.0;
542 correction *=
m_DB2DCell->getMean(layer, doca, enta);
543 correction *=
m_DB1DCell->getMean(layer, enta);
546 if (costheta <= -0.850 || costheta >= 0.950) correction *=
m_DBCosEdgeCor->getMean(costheta);
558 dedx =
D2I(costheta,
I2D(costheta, 1.00) / 1.00 * dedx);
564 double absCosTheta = fabs(cosTheta);
566 if (projection == 0) {
567 B2WARNING(
"Something wrong with dE/dx hadron constants!");
571 double chargeDensity = D / projection;
573 double denominator = 1 +
m_hadronpars[1] * chargeDensity;
575 if (denominator == 0) {
576 B2WARNING(
"Something wrong with dE/dx hadron constants!");
580 double I = D *
m_hadronpars[4] * numerator / denominator;
587 double absCosTheta = fabs(cosTheta);
591 B2WARNING(
"Something wrong with dE/dx hadron constants!");
599 if (b == 0 && a == 0) {
600 B2WARNING(
"both a and b coefficiants for hadron correction are 0");
604 double discr = b * b - 4.0 * a * c;
606 B2WARNING(
"negative discriminant; return uncorrectecd value");
610 double D = (a != 0) ? (-b +
sqrt(discr)) / (2.0 * a) : -c / b;
612 B2WARNING(
"D is less 0! will try another solution");
613 D = (a != 0) ? (-b -
sqrt(discr)) / (2.0 * a) : -c / b;
615 B2WARNING(
"D is still less 0! just return uncorrectecd value");
625 const vector<double>& dedx)
const
629 vector<double> sortedDedx = dedx;
630 sort(sortedDedx.begin(), sortedDedx.end());
631 sortedDedx.erase(remove(sortedDedx.begin(), sortedDedx.end(), 0), sortedDedx.end());
632 sortedDedx.shrink_to_fit();
634 double truncMeanTmp = 0.0, meanTmp = 0.0, sumOfSqs = 0.0;
636 const int numDedx = sortedDedx.size();
639 const int lEdgeTrunc = int(numDedx * 0.05 + 0.51);
640 const int hEdgeTrunc = int(numDedx * (1 - 0.25) + 0.51);
641 for (
int i = 0; i < numDedx; i++) {
642 meanTmp += sortedDedx[i];
643 if (i >= lEdgeTrunc and i < hEdgeTrunc) {
644 truncMeanTmp += sortedDedx[i];
645 sumOfSqs += sortedDedx[i] * sortedDedx[i];
650 if (numDedx != 0) meanTmp /= numDedx;
652 if (nValTrunc != 0) truncMeanTmp /= nValTrunc;
653 else truncMeanTmp = meanTmp;
656 *truncMean = truncMeanTmp;
659 *truncMeanErr =
sqrt(sumOfSqs /
double(nValTrunc) - truncMeanTmp * truncMeanTmp) / double(nValTrunc - 1);
660 else *truncMeanErr = 0;
673 double mean = dedxTrack->
getPmean(pdgIter.getIndex());
674 double sigma = dedxTrack->
getPreso(pdgIter.getIndex());
677 if (sigma != 0) chi[pdgIter.getIndex()] = ((dedx - mean) / (sigma));
684 for (
int il = 0; il < 200; ++il) {
693 for (
int ihit = 0; ihit < 200; ++ihit) {
724 m_file.push_back(
new TFile(filename.c_str(),
"RECREATE"));
725 m_tree.push_back(
new TTree(
"track",
"dE/dx information"));
727 int i =
m_tree.size() - 1;
728 m_tree[i]->SetDirectory(0);
Debug output for CDCDedxPID module.
double getTimeMean() const
Return the injection gain for this track.
int getHitLayer(int i) const
Return the (global) layer number for a hit.
int getADCBaseCount(int i) const
Return the base adcCount (no non-linearity) for this hit.
int getADCCount(int i) const
Return the adcCount for this hit.
double getDedxMean() const
Get the dE/dx mean for this track.
double getDriftD(int i) const
Return the drift distance for this hit.
int getLayer(int i) const
Return the (global) layer number for a layer hit.
double getDoca(int i) const
Return the distance of closest approach to the sense wire for this hit.
double getDedx() const
Get dE/dx truncated mean for this track.
double getPath(int i) const
Return the path length through the cell for this hit.
int getWireInLayer(int i) const
Return the sensor ID for this hit: wire number in the layer.
double getPmean(int i) const
Return the PID (predicted mean) value.
double getOneDCorrection(int i) const
Return the 1D correction for this hit.
int getWireLongestHit(int i) const
Return the wire number of the longest hit per layer.
double getWeightKaonHypo(int i) const
Return the max weights from KalmanFitterInfo using kaon hypothesis.
void setDedx(double mean)
Set the dE/dx truncated average for this track.
double getCosineCorrection() const
Return the cosine correction for this track.
double getEntaRS(int i) const
Return rescaled enta value for cell height=width assumption.
double getLayerDedx(int i) const
Return the total dE/dx for this layer.
double getCellHalfWidth(int i) const
Return the half-width of the CDC cell.
double getPDG() const
Get the identity of the particle.
double getTwoDCorrection(int i) const
Return the 2D correction for this hit.
double getPreso(int i) const
Return the PID (predicted reso) value.
int getNLayerHits() const
Return the number of layer hits for this track.
int getFoundByTrackFinder(int i) const
Return the TrackFinder which added the given hit to track.
int getDriftT(int i) const
Return the drift time for this hit.
double getCosTheta() const
Return cos(theta) for this track.
double getInjectionRing() const
Return cos(theta) for this track.
int getCharge() const
Return the charge for this track.
double getWireGain(int i) const
Return the wire gain for this hit.
double getWeightPionHypo(int i) const
Return the max weights from KalmanFitterInfo using pion hypothesis.
int getWire(int i) const
Return the sensor ID for this hit: wire number for CDC (0-14336)
double getDocaRS(int i) const
Return rescaled doca value for cell height=width assumption.
double getCosEdgeCorrection() const
Return the cosine correction for this track.
double getRunGain() const
Return the run gain for this track.
double getNonLADCCorrection(int i) const
Return the factor introduce for adcCount (non-linearity) correction.
double getDedxError() const
Get the error on the dE/dx truncated mean for this track.
double getWeightProtonHypo(int i) const
Return the max weights from KalmanFitterInfo using proton hypothesis.
double getEnta(int i) const
Return the entrance angle in the CDC cell for this hit.
double getInjectionTime() const
Return cos(theta) for this track.
double trackID() const
Return the track ID.
double getLayerPath(int i) const
Return the distance travelled in this layer.
double getChi(int i) const
Return the PID (chi) value.
double getScaleFactor() const
Return the scale factor for this track.
double getLength() const
Return the total path length for this track.
int getNHitsCombined(int i) const
Return the number of hits combined per layer.
double getDedxNoSat() const
Get dE/dx truncated mean without the saturation correction for this track.
int size() const
Return the number of hits for this track.
double getNLayerHitsUsed() const
Return the number of hits used to determine the truncated mean.
double getMomentum() const
Return the track momentum valid in the CDC.
Provides a type-safe way to pass members of the chargedStableSet set.
static const unsigned int c_SetSize
Number of elements (for use in array bounds etc.)
A set of ParticleType objects, with defined order.
static const ChargedStable muon
muon particle
static const ParticleSet chargedStableSet
set of charged stable particles
static const ChargedStable pion
charged pion particle
static const ChargedStable proton
proton particle
static const ChargedStable kaon
charged kaon particle
static const ChargedStable electron
electron particle
static const ChargedStable deuteron
deuteron particle
Class for accessing objects in the database.
bool hasHypothesis(EHypothesisBit bitmask) const
Return if specific hypothesis bit is set.
double getE1oE9() const
Return E1/E9 (shower shape variable).
double getE9oE21() const
Return E9/E21 (shower shape variable).
double getEnergy(EHypothesisBit hypothesis) const
Return Energy (GeV).
double getNumberOfCrystals() const
Return number of a crystals in a shower (sum of weights).
@ c_nPhotons
CR is split into n photons (N1)
double h_ndoca[kMaxHits]
normalized distance of closest approach
double h_driftD[kMaxHits]
drift distance
double h_onedCor[kMaxHits]
calibration 1D cleanup correction
int l_nhits
the total number of layer hits for this Track
double m_cosEdgeCor
calibration cosine edge correction
double m_presk
pred reso for kaon hypothesis
double m_phi0
Angle of the transverse momentum in the r-phi plane.
double m_d0
Signed distance to the POCA in the r-phi plane.
double m_presp
pred reso for proton hypothesis
double D2I(const double cosTheta, const double D) const
hadron saturation parameterization part 2
int l_wirelongesthit[kMaxHits]
the wire number of longest hit in this layer
double m_ioasym
asymmetry in increasing vs decreasing layer numbers per track
StoreObjPtr< EventLevelTriggerTimeInfo > m_TTDInfo
Store Object Ptr: EventLevelTriggerTimeInfo.
std::vector< double > m_hadronpars
hadron saturation parameters
double m_p
momentum from tracking
double m_e9_21
ratio of energies of the central 3x3 crystal vs 5x5 crystals
int m_trackID
ID number of the Track.
DBObjPtr< CDCDedxRunGain > m_DBRunGain
Run gain DB object.
double m_vx0
X coordinate of track POCA to origin.
virtual ~HitLevelInfoWriterModule()
Destructor.
StoreArray< KLMCluster > m_klmClusters
Required array of input KLMClusters.
double m_pmeand
pred mean for deuteron hypothesis
virtual void initialize() override
Initialize the module.
DBObjPtr< CDCDedxHadronCor > m_DBHadronCor
hadron saturation parameters
double h_enta[kMaxHits]
entrance angle
double m_chipOld
chi value for proton hypothesis
std::string m_strOutputBaseName
Base name for the output ROOT files.
virtual void event() override
This method is called for each event.
double h_WeightKaonHypo[kMaxHits]
weight for kaon hypothesis from KalmanFitterInfo
DBObjPtr< CDCDedxCosineEdge > m_DBCosEdgeCor
cosine edge calibration
HitLevelInfoWriterModule()
Default constructor.
double m_pmeanp
pred mean for proton hypothesis
double I2D(const double cosTheta, const double I) const
hadron saturation parameterization part 1
double h_WeightProtonHypo[kMaxHits]
weight for proton hypothesis from KalmanFitterInfo
double m_chid
modified chi value for deuteron hypothesis
double m_chikOld
chi value for kaon hypothesis
double m_dz
vertex or POCA in case of tracks z in respect to IPs
bool m_isHitLevel
Flag to switch on/off hit level info.
DBObjPtr< CDCDedxADCNonLinearity > m_DBNonlADC
hadron saturation non linearity
double m_pmeank
pred mean for kaon hypothesis
double h_facnladc[kMaxHits]
calibration hit gain
DBObjPtr< CDCDedx1DCell > m_DB1DCell
1D correction DB object
void saveChiValue(double(&chi)[Const::ChargedStable::c_SetSize], CDCDedxTrack *dedxTrack, double dedx) const
for all particles, save chi values into 'chi' chi array of chi values to be modified
StoreArray< TrackFitResult > m_trackFitResults
Required array of input TrackFitResults.
int h_nhits
the number of good hits for this Track
virtual void terminate() override
End of the event processing.
double h_adccorr[kMaxHits]
charge per hit corr by nonlinear ADC
std::vector< TTree * > m_tree
output ROOT trees
double m_presmu
pred reso for muon hypothesis
double m_cosCor
calibration cosine correction
double m_tanlambda
Slope of the track in the r-z plane.
int h_layer[kMaxHits]
layer number
double h_adcraw[kMaxHits]
charge per hit
int m_expID
experiment in which this Track was found
void fillTrack(const TrackFitResult *fitResult)
Fill the TTree with the information from the track fit.
double h_path[kMaxHits]
path length in cell
double m_chimu
modified chi value for muon hypothesis
double m_phi
phi for the track
double m_vy0
Y coordinate of track POCA to origin.
double m_chik
modified chi value for kaon hypothesis
void recalculateDedx(CDCDedxTrack *dedxTrack, std::map< int, std::vector< double > > &l_var, double(&cdcChi)[Const::ChargedStable::c_SetSize])
Function to recalculate the dedx with latest constants.
double m_chi2
chi^2 from track fit
void HadronCorrection(double costheta, double &dedx) const
Function to apply the hadron correction.
void calculateMeans(double *mean, double *truncatedMean, double *truncatedMeanErr, const std::vector< double > &dedx) const
Save arithmetic and truncated mean for the 'dedx' values.
double h_wireGain[kMaxHits]
calibration hit gain
double m_theta
cos(theta) for the track
double h_twodCor[kMaxHits]
calibration 2D correction
double m_chie
modified chi value for electron hypothesis
DBObjPtr< CDCDedx2DCell > m_DB2DCell
2D correction DB object
double m_runGain
calibration run gain
int m_eventID
event in which this Track was found
double m_timeGain
calibration injection time gain
void bookOutput(std::string filename)
Create the output TFiles and TTrees.
double m_chidOld
chi value for deuteron hypothesis
bool m_isExtraVar
Flag to switch on/off extra level info and some available w/ release/5 only.
void clearEntries()
Clear the arrays before filling an event.
std::vector< TFile * > m_file
output ROOT files
double m_dr
track d0 relative to IP
double m_prese
pred reso for electron hypothesis
DBObjPtr< CDCDedxCosineCor > m_DBCosineCor
Electron saturation correction DB object.
int h_foundByTrackFinder[kMaxHits]
the 'found by track finder' flag for the given hit
double m_timeReso
calibration injection time reso
StoreArray< Track > m_tracks
Required array of input Tracks.
double l_dedx[kMaxHits]
dE/dx for this layer
double l_path[kMaxHits]
distance travelled in this layer
int l_layer[kMaxHits]
layer number
double m_chipiOld
chi value for pion hypothesis
double m_chip
modified chi value for proton hypothesis
bool m_isCorrection
Flag to switch on/off corrections.
double m_pmeane
pred mean for electron hypothesis
double m_cosTheta
cos(theta) for the track
int l_nhitsused
the total number of layer hits used for this Track
StoreArray< ECLCluster > m_eclClusters
Required array of input ECLClusters.
double h_dedx[kMaxHits]
charge per path length
double m_chieOld
chi value for electron hypothesis
double h_driftT[kMaxHits]
drift time
double m_dphi
POCA in degrees in respect to IP.
DBObjPtr< CDCDedxWireGain > m_DBWireGains
Wire gain DB object.
double m_eop
energy over momentum in the calorimeter
bool m_isDeadwire
write only active wires
double m_presd
pred reso for deuteron hypothesis
double m_scale
calibration scale factor
double m_klmLayers
number of klm layers with hits
int l_nhitscombined[kMaxHits]
the number of hits combined this layer
double m_error
standard deviation of the truncated mean
double m_pCDC
momentum valid in CDC
double m_truncNoSat
dE/dx averaged, truncated mean, with corrections (not hadron)
double m_length
total path length of the Track
double m_injring
HER injection status.
double m_nCDChits
Number of CDC hits associated to the track.
double h_ndocaRS[kMaxHits]
normalized +RS distance of closest approach
double m_vz0
Z coordinate of track POCA to origin.
double m_trunc
dE/dx averaged, truncated mean, with corrections
double GetCorrection(int &adc, int layer, int wireID, double doca, double enta, double costheta, double ring, double time) const
Function to get the correction factor.
int m_inCDC
frack is CDC acceptance or not
double h_doca[kMaxHits]
distance of closest approach
double m_chimuOld
chi value for muon hypothesis
double m_z0
z coordinate of the POCA
int m_charge
the charge for this Track
double h_WeightPionHypo[kMaxHits]
weight for pion hypothesis from KalmanFitterInfo
int m_runID
run in which this Track was found
double m_e
energy in the calorimeter
StoreArray< CDCDedxTrack > m_dedxTracks
Required array of CDCDedxTracks.
double m_injtime
time since last injection in micro seconds
double m_pmeanmu
pred mean for muon hypothesis
double h_entaRS[kMaxHits]
normalized + RS distance of entrance angle
bool m_isRelative
Flag to switch on/off relative constants.
double m_prespi
pred reso for pion hypothesis
DBObjPtr< CDCDedxInjectionTime > m_DBInjectTime
time gain/reso DB object
int h_wire[kMaxHits]
sense wire ID
DBObjPtr< CDCDedxScaleFactor > m_DBScaleFactor
Scale factor to make electrons ~1.
double m_mean
dE/dx averaged
int h_lwire[kMaxHits]
sense wire within layer
double m_chipi
modified chi value for pion hypothesis
std::vector< std::string > m_strParticleList
Vector of ParticleLists to write out.
double m_pt
transverse momentum from tracking
double m_pmeanpi
pred mean for pion hypothesis
void fillDedx(CDCDedxTrack *dedxTrack)
Fill the TTree with the information from a CDCDedxTrack object.
double m_e1_9
ratio of energies of the central 1 crystal vs 3x3 crystals
unsigned short getNHits() const
Get the total Number of CDC hits in the fit.
int getLayers() const
Get number of layers with hits.
void setDescription(const std::string &description)
Sets the description of the module.
Class to collect log likelihoods from TOP, ARICH, dEdx, ECL and KLM aimed for output to mdst includes...
Class to store reconstructed particles.
static const ReferenceFrame & GetCurrent()
Get current rest frame.
TO * getRelatedTo(const std::string &name="", const std::string &namedRelation="") const
Get the object to which this object has a relation.
T * getRelated(const std::string &name="", const std::string &namedRelation="") const
Get the object to or from which this object has a relation.
FROM * getRelatedFrom(const std::string &name="", const std::string &namedRelation="") const
Get the object from which this object has a relation.
Type-safe access to single objects in the data store.
Values of the result of a track fit with a given particle hypothesis.
short getChargeSign() const
Return track charge (1 or -1).
double getPValue() const
Getter for Chi2 Probability of the track fit.
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.
ROOT::Math::XYZVector getPosition() const
Getter for vector of position at closest approach of track in r/phi projection.
HitPatternCDC getHitPatternCDC() const
Getter for the hit pattern in the CDC;.
UncertainHelix getUncertainHelix() const
Conversion to framework Uncertain Helix (i.e., with covariance).
double getPhi0() const
Getter for phi0.
Class that bundles various TrackFitResults.
This class represents an ideal helix in perigee parameterization including the covariance matrix of t...
double passiveMoveBy(const ROOT::Math::XYZVector &by)
Moves origin of the coordinate system (passive transformation) by the given vector.
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.