11 #include <framework/core/Module.h>
14 #include <framework/database/DBObjPtr.h>
15 #include <framework/datastore/StoreArray.h>
16 #include <framework/datastore/StoreObjPtr.h>
19 #include <analysis/VertexFitting/RaveInterface/RaveSetup.h>
20 #include <analysis/VertexFitting/RaveInterface/RaveVertexFitter.h>
21 #include <analysis/VertexFitting/RaveInterface/RaveKinematicVertexFitter.h>
24 #include <CLHEP/Geometry/Point3D.h>
25 #include <CLHEP/Matrix/SymMatrix.h>
26 #include <CLHEP/Vector/LorentzVector.h>
29 #include <analysis/dataobjects/Particle.h>
30 #include <analysis/dataobjects/ParticleList.h>
31 #include <analysis/dataobjects/TagVertex.h>
32 #include <mdst/dataobjects/Track.h>
33 #include <mdst/dataobjects/TrackFitResult.h>
34 #include <mdst/dbobjects/BeamSpot.h>
35 #include <mdst/dataobjects/MCParticle.h>
48 struct ParticleAndWeight;
79 virtual void event()
override;
105 std::vector<const MCParticle*>
162 std::pair<TVector3, TMatrixDSym>
findConstraintBoost(
double cut,
double shiftAlongBoost = -2000.)
const;
183 std::vector<ParticleAndWeight>
getParticlesWithoutKS(
const std::vector<const Particle*>& tagParticles,
184 double massWindowWidth = 0.01)
const;
206 void fillParticles(std::vector<ParticleAndWeight>& particleAndWeights);
212 void fillTagVinfo(
const TVector3& tagVpos,
const TMatrixDSym& tagVposErr);
238 static std::string
printVector(
const TVector3& vec);
243 static std::string
printMatrix(
const TMatrixD& mat);
248 static std::string
printMatrix(
const TMatrixDSym& mat);
This class contains the beam spot position and size modeled as a gaussian distribution in space.
Class for accessing objects in the database.
A Class to store the Monte Carlo particle information.
Class to store reconstructed particles.
Accessor to arrays stored in the data store.
Type-safe access to single objects in the data store.
Tag side Vertex Fitter module for modular analysis.
int m_fitTruthStatus
Store info about whether the fit was performed with the truth info 0 fit performed with measured para...
TMatrixDSym m_constraintCov
constraint to be used in the tag vertex fit
double m_truthTagVol
MC tagV component in the direction orthogonal to the boost.
std::vector< const Particle * > m_tagParticles
tracks of the rest of the event
const BeamSpot & getBeamSpot() const
returns the BeamSpot object
double m_shiftZ
parameter for testing the systematic error from the IP measurement
double m_tagVl
tagV component in the boost direction
TVector3 m_tagV
tag side fit result
double m_truthTagVl
MC tagV component in the boost direction
bool m_useTruthInFit
Set to true if the tag fit is to be made with the TRUE tag track momentum and position.
std::vector< double > m_raveWeights
Store the weights used by Rave in the vtx fit so that they can be accessed later.
TMatrixDSym m_pvCov
covariance matrix of the PV (useful with tube and KFit)
double m_mcDeltaT
generated DeltaT with boost-direction approximation
std::string m_listName
Breco particle list name.
bool m_useRollBack
Set to true if the tag fit is to be made with the tag track position rolled back to mother B.
double m_tagVlErr
Error of the tagV component in the boost direction
std::string m_roeMaskName
ROE particles from this mask will be used for vertex fitting.
double m_tagVChi2
chi^2 value of the tag vertex fit result
bool m_mcInfo
true if user wants to retrieve MC information out from the tracks used in the fit
std::string m_useMCassociation
No MC association or standard Breco particle or internal MCparticle association.
double m_tagVolErr
Error of the tagV component in the direction orthogonal to the boost.
TVector3 m_BeamSpotCenter
Beam spot position.
double m_mcTagLifeTime
generated tag side life time of B-decay
double m_tagVNDF
Number of degrees of freedom in the tag vertex fit.
double m_deltaTErr
reconstructed DeltaT error
std::string m_fitAlgo
Algorithm used for the tag fit (Rave or KFit)
double m_mcDeltaTau
generated DeltaT
double m_fitPval
P value of the tag side fit result.
StoreArray< TagVertex > m_verArray
StoreArray of TagVertexes.
DBObjPtr< BeamSpot > m_beamSpotDB
Beam spot database object.
std::vector< const Particle * > m_raveParticles
tracks given to rave for the track fit (after removing Kshorts
TVector3 m_mcVertReco
generated Breco decay vertex
int m_reqPXDHits
N of PXD hits for a track to be used.
double m_confidenceLevel
required fit confidence level
double m_tagVChi2IP
IP component of the chi^2 of the tag vertex fit result.
double m_tagVol
tagV component in the direction orthogonal to the boost
TLorentzVector m_tagMomentum
B tag momentum computed from fully reconstructed B sig.
std::string m_constraintType
Choose constraint: noConstraint, IP, tube, boost, (breco)
StoreArray< MCParticle > m_mcParticles
StoreArray of MCParticles.
double m_mcLifeTimeReco
generated Breco life time
double m_Bfield
magnetic field from data base
TMatrixDSym m_tagVErrMatrix
Error matrix of the tag side fit result.
int m_mcPDG
generated tag side B flavor
StoreObjPtr< ParticleList > m_plist
input particle list
TVector3 m_constraintCenter
centre position of the constraint for the tag Vertex fit
int m_rollbackStatus
Store info about whether the fit was performed with the rolled back tracks 0 fit performed with measu...
std::string m_trackFindingType
Choose how to find the tag tracks: standard, standard_PXD.
TVector3 m_mcTagV
generated tag side vertex
bool m_verbose
choose if you want to print extra infos
int m_FitType
fit algo used
std::vector< const MCParticle * > m_raveMCParticles
Store the MC particles corresponding to each track used by Rave in the vtx fit.
TMatrixDSym m_BeamSpotCov
size of the beam spot == covariance matrix on the beam spot position
double m_deltaT
reconstructed DeltaT
Values of the result of a track fit with a given particle hypothesis.
TVector3 getRollBackPoca(ParticleAndWeight const &paw)
This shifts the position of tracks by the vector difference of mother B and production point of track...
bool doVertexFit(const Particle *Breco)
central method for the tag side vertex fit
std::vector< const Particle * > getTagTracks_standardAlgorithm(const Particle *Breco, int nPXDHits) const
performs the fit using the standard algorithm - using all tracks in RoE The user can specify a reques...
TrackFitResult getTrackWithRollBackCoordinates(ParticleAndWeight const &paw)
If the fit has to be done with the rolled back tracks, Rave or KFit is fed with a track where the pos...
std::pair< TVector3, TMatrixDSym > findConstraint(const Particle *Breco, double cut) const
calculate the constraint for the vertex fit on the tag side using Breco information
virtual void initialize() override
Initialize the Module.
std::vector< ParticleAndWeight > getParticlesWithoutKS(const std::vector< const Particle * > &tagParticles, double massWindowWidth=0.01) const
Get a list of pions from a list of pions removing the Kshorts Warning: this assumes all the particles...
virtual void event() override
Event processor.
Particle * doVertexFitForBTube(const Particle *mother, std::string fitType) const
it returns an intersection between B rec and beam spot (= origin of BTube)
void BtagMCVertex(const Particle *Breco)
get the vertex of the MC B particle associated to Btag.
bool makeGeneralFit()
TO DO: tag side vertex fit in the case of semileptonic tag side decay.
virtual void beginRun() override
Called when entering a new run.
void deltaT(const Particle *Breco)
calculate DeltaT and MC-DeltaT (rec - tag) in ps from Breco and Btag vertices DT = Dl / gamma beta c ...
void fillParticles(std::vector< ParticleAndWeight > &particleAndWeights)
Fill sorted list of particles into external variable.
TagVertexModule()
Constructor.
void resetReturnParams()
Reset all parameters that are computed in each event and then used to compute tuple variables.
static std::string printVector(const TVector3 &vec)
Print a TVector3 (useful for debugging)
bool makeGeneralFitRave()
make the vertex fit on the tag side: RAVE AVF tracks coming from Ks removed all other tracks used
TrackFitResult getTrackWithTrueCoordinates(ParticleAndWeight const &paw) const
If the fit has to be done with the truth info, Rave is fed with a track where the momentum is replace...
void fillTagVinfo(const TVector3 &tagVpos, const TMatrixDSym &tagVposErr)
Fill tagV vertex info.
static bool compBrecoBgen(const Particle *Breco, const MCParticle *Bgen)
compare Breco with the two MC B particles
std::pair< TVector3, TMatrixDSym > findConstraintBoost(double cut, double shiftAlongBoost=-2000.) const
calculate the standard constraint for the vertex fit on the tag side
std::pair< TVector3, TMatrixDSym > findConstraintBTube(const Particle *Breco, double cut)
calculate constraint for the vertex fit on the tag side using the B tube (cylinder along the expected...
static std::string printMatrix(const TMatrixD &mat)
Print a TMatrix (useful for debugging)
bool makeGeneralFitKFit()
make the vertex fit on the tag side: KFit tracks coming from Ks removed all other tracks used
static TVector3 getTruePoca(ParticleAndWeight const &paw)
This finds the point on the true particle trajectory closest to the measured track position.
Abstract base class for different kinds of events.
this struct is used to store and sort the tag tracks
const Particle * particle
tag track fit result with pion mass hypo, for sorting purposes
const MCParticle * mcParticle
mc particle matched to the tag track, for sorting purposes
double weight
rave weight associated to the track, for sorting purposes