9#include <cdc/modules/HitLevelInfoWriter/HitLevelInfoWriter.h>
11#include <analysis/dataobjects/ParticleList.h>
12#include <analysis/dataobjects/Particle.h>
13#include <analysis/utility/ReferenceFrame.h>
14#include <mdst/dataobjects/HitPatternCDC.h>
15#include <mdst/dataobjects/PIDLikelihood.h>
16#include <mdst/dbobjects/BeamSpot.h>
28 setDescription(
"Extract dE/dx information for calibration development.");
33 addParam(
"m_isExtraVar",
m_isExtraVar,
"True or False for extra track/hit level variables",
false);
35 addParam(
"relativeCorrections",
m_isRelative,
"If true, apply corrections relative to those used in production",
false);
45 B2INFO(
"Creating a ROOT file for the hit level information...");
55 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()"}};
78 if (nParticleList == 0) {
79 for (
int idedx = 0; idedx <
m_dedxTracks.getEntries(); idedx++) {
83 B2WARNING(
"No dedx related track...");
89 B2WARNING(
"No related track...");
95 B2WARNING(
"No related fit for this track...");
99 if (dedxTrack->
size() == 0 || dedxTrack->
size() > 200)
continue;
100 if (dedxTrack->
getCosTheta() < TMath::Cos(150.0 * TMath::DegToRad()))
continue;
101 if (dedxTrack->
getCosTheta() > TMath::Cos(17.0 * TMath::DegToRad()))
continue;
105 m_expID = evtMetaData->getExperiment();
106 m_runID = evtMetaData->getRun();
153 for (
int iList = 0; iList < nParticleList; iList++) {
156 if (!particlelist or particlelist->getListSize(
true) == 0) {
163 for (
unsigned int iPart = 0; iPart < particlelist->getListSize(
true); iPart++) {
164 Particle* part = particlelist->getParticle(iPart,
true);
166 B2WARNING(
"No particles...");
171 B2WARNING(
"No related PID likelihood...");
176 B2WARNING(
"No related track...");
181 B2WARNING(
"No related CDCDedxTrack...");
186 if (ptype !=
"pi+") {
187 if (ptype ==
"K+") fitResult = track->getTrackFitResultWithClosestMass(
Const::kaon);
188 else if (ptype ==
"p+") fitResult = track->getTrackFitResultWithClosestMass(
Const::proton);
189 else if (ptype ==
"deuteron") fitResult = track->getTrackFitResultWithClosestMass(
Const::deuteron);
190 else if (ptype ==
"mu+") fitResult = track->getTrackFitResultWithClosestMass(
Const::muon);
191 else if (ptype ==
"e+") fitResult = track->getTrackFitResultWithClosestMass(
Const::electron);
194 B2WARNING(
"No related fit for this track...");
198 if (dedxTrack->
size() == 0 || dedxTrack->
size() > 200)
continue;
200 if (dedxTrack->
getCosTheta() < TMath::Cos(150.0 * TMath::DegToRad()))
continue;
201 if (dedxTrack->
getCosTheta() > TMath::Cos(17.0 * TMath::DegToRad()))
continue;
205 m_expID = evtMetaData->getExperiment();
206 m_runID = evtMetaData->getRun();
253 for (
unsigned int i = 0; i <
m_file.size(); i++) {
254 B2INFO(
"Done writing out the hit level information...\t" <<
m_tree[i]->GetEntries() <<
" tracks");
266 ROOT::Math::XYZVector trackMom = fitResult->
getMomentum();
268 m_pt = trackMom.Rho();
269 m_phi = trackMom.Phi();
271 m_theta = trackMom.Theta() * 180. / TMath::Pi();
280 ROOT::Math::XYZVector trackPos = fitResult->
getPosition();
281 m_vx0 = trackPos.X();
282 m_vy0 = trackPos.Y();
283 m_vz0 = trackPos.Z();
295 helix.
passiveMoveBy(ROOT::Math::XYZVector(beamSpotDB->getIPPosition()));
296 m_dr = frame.getVertex(ROOT::Math::XYZVector(helix.getPerigee())).Rho();
297 m_dphi = frame.getVertex(ROOT::Math::XYZVector(helix.getPerigee())).Phi();
298 m_dz = frame.getVertex(ROOT::Math::XYZVector(helix.getPerigee())).Z();
336 map<int, vector<double>>l_var;
376 double lout = 0, lin = 0, increment = 0;
381 const int lEdgeTrunc = int(
l_nhits * 0.05 + 0.51);
382 const int hEdgeTrunc = int(
l_nhits * (1 - 0.25) + 0.51);
389 for (
int il = 0; il <
l_nhits; ++il) {
394 l_path[il] = l_var[3][il];
395 l_dedx[il] = l_var[4][il];
403 if (
l_layer[il] > lastlayer) lout++;
404 else if (
l_layer[il] < lastlayer) lin++;
410 m_ioasym = (lout - lin) / increment;
414 for (
int ihit = 0; ihit <
h_nhits; ++ihit) {
454 vector<double> newLayerHits;
455 double newLayerDe = 0, newLayerDx = 0;
456 int nhitscombined = 0;
457 int wirelongesthit = 0;
458 double longesthit = 0;
460 for (
int ihit = 0; ihit <
h_nhits; ++ihit) {
463 double jWire = dedxTrack->
getWire(ihit);
465 double jEntaRS = dedxTrack->
getEntaRS(ihit);
466 double jPath = dedxTrack->
getPath(ihit);
483 double newhitdedx = 1.0;
487 if (correction != 0) {
488 newhitdedx /= correction;
490 newLayerDe += jadcbase / correction;
492 if (jPath > longesthit) {
494 wirelongesthit = jWire;
498 }
else newhitdedx = 0;
500 dedxTrack->
setDedx(ihit, newhitdedx);
505 if (newLayerDx != 0) {
507 double newLayerDedx = newLayerDe / totalDistance ;
508 newLayerHits.push_back(newLayerDedx);
509 l_var[0].push_back(nhitscombined);
510 l_var[1].push_back(wirelongesthit);
511 l_var[2].push_back(jLayer);
512 l_var[3].push_back(totalDistance);
513 l_var[4].push_back(newLayerDedx);
525 double dedxmean, dedxtrunc, dedxtruncNoSat, dedxerror;
527 calculateMeans(&dedxmean, &dedxtruncNoSat, &dedxerror, newLayerHits);
529 dedxtrunc = dedxtruncNoSat;
543 double costheta,
double ring,
double time)
const
545 double correction = 1.0;
548 correction *=
m_DB2DCell->getMean(layer, doca, enta);
549 correction *=
m_DB1DCell->getMean(layer, enta);
552 if (costheta <= -0.850 || costheta >= 0.950) correction *=
m_DBCosEdgeCor->getMean(costheta);
564 dedx =
D2I(costheta,
I2D(costheta, 1.00) / 1.00 * dedx);
570 double absCosTheta = fabs(cosTheta);
572 if (projection == 0) {
573 B2WARNING(
"Something wrong with dE/dx hadron constants!");
577 double chargeDensity = D / projection;
579 double denominator = 1 +
m_hadronpars[1] * chargeDensity;
581 if (denominator == 0) {
582 B2WARNING(
"Something wrong with dE/dx hadron constants!");
586 double I = D *
m_hadronpars[4] * numerator / denominator;
593 double absCosTheta = fabs(cosTheta);
597 B2WARNING(
"Something wrong with dE/dx hadron constants!");
605 if (b == 0 && a == 0) {
606 B2WARNING(
"both a and b coefficiants for hadron correction are 0");
610 double discr = b * b - 4.0 * a * c;
612 B2WARNING(
"negative discriminant; return uncorrectecd value");
616 double D = (a != 0) ? (-b +
sqrt(discr)) / (2.0 * a) : -c / b;
618 B2WARNING(
"D is less 0! will try another solution");
619 D = (a != 0) ? (-b -
sqrt(discr)) / (2.0 * a) : -c / b;
621 B2WARNING(
"D is still less 0! just return uncorrectecd value");
631 const vector<double>& dedx)
const
635 vector<double> sortedDedx = dedx;
636 sort(sortedDedx.begin(), sortedDedx.end());
637 sortedDedx.erase(remove(sortedDedx.begin(), sortedDedx.end(), 0), sortedDedx.end());
638 sortedDedx.shrink_to_fit();
640 double truncMeanTmp = 0.0, meanTmp = 0.0, sumOfSqs = 0.0;
642 const int numDedx = sortedDedx.size();
645 const int lEdgeTrunc = int(numDedx * 0.05 + 0.51);
646 const int hEdgeTrunc = int(numDedx * (1 - 0.25) + 0.51);
647 for (
int i = 0; i < numDedx; i++) {
648 meanTmp += sortedDedx[i];
649 if (i >= lEdgeTrunc and i < hEdgeTrunc) {
650 truncMeanTmp += sortedDedx[i];
651 sumOfSqs += sortedDedx[i] * sortedDedx[i];
656 if (numDedx != 0) meanTmp /= numDedx;
658 if (nValTrunc != 0) truncMeanTmp /= nValTrunc;
659 else truncMeanTmp = meanTmp;
662 *truncMean = truncMeanTmp;
665 *truncMeanErr =
sqrt(sumOfSqs /
double(nValTrunc) - truncMeanTmp * truncMeanTmp) / double(nValTrunc - 1);
666 else *truncMeanErr = 0;
679 double mean = dedxTrack->
getPmean(pdgIter.getIndex());
680 double sigma = dedxTrack->
getPreso(pdgIter.getIndex());
683 if (sigma != 0) chi[pdgIter.getIndex()] = ((dedx - mean) / (sigma));
690 for (
int il = 0; il < 200; ++il) {
699 for (
int ihit = 0; ihit < 200; ++ihit) {
730 m_file.push_back(
new TFile(filename.c_str(),
"RECREATE"));
731 m_tree.push_back(
new TTree(
"track",
"dE/dx information"));
733 int i =
m_tree.size() - 1;
734 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.