59 vector<const DTrackTimeBased*> locTrackTimeBasedVector;
60 locEventLoop->Get(locTrackTimeBasedVector);
63 locEventLoop->GetSingle(locEventRFBunch);
66 locEventLoop->GetSingle(locDetectorMatches);
69 map<JObject::oid_t, const DTrackTimeBased*> locBestTrackTimeBasedMap;
70 for(
size_t loc_i = 0; loc_i < locTrackTimeBasedVector.size(); ++loc_i)
72 JObject::oid_t locCandidateID = locTrackTimeBasedVector[loc_i]->candidateid;
73 if(locBestTrackTimeBasedMap.find(locCandidateID) == locBestTrackTimeBasedMap.end())
74 locBestTrackTimeBasedMap[locCandidateID] = locTrackTimeBasedVector[loc_i];
75 else if(locTrackTimeBasedVector[loc_i]->FOM > locBestTrackTimeBasedMap[locCandidateID]->FOM)
76 locBestTrackTimeBasedMap[locCandidateID] = locTrackTimeBasedVector[loc_i];
80 map<JObject::oid_t, const DTrackTimeBased*>::iterator locIterator;
81 vector<const DTrackTimeBased*> locTrackTimeBasedVector_OnePerTrack, locTrackTimeBasedVector_OnePerTrack_Good;
82 for(locIterator = locBestTrackTimeBasedMap.begin(); locIterator != locBestTrackTimeBasedMap.end(); ++locIterator)
85 locTrackTimeBasedVector_OnePerTrack.push_back(locTrackTimeBased);
87 locTrackTimeBasedVector_OnePerTrack_Good.push_back(locTrackTimeBased);
90 vector<const DTrackTimeBased*> locTrackTimeBasedVectorToUse = (locTrackTimeBasedVector_OnePerTrack_Good.size() >= 2) ? locTrackTimeBasedVector_OnePerTrack_Good : locTrackTimeBasedVector_OnePerTrack;
93 if(locTrackTimeBasedVectorToUse.empty())
95 if(locTrackTimeBasedVectorToUse.size() == 1)
108 TVector3 locTRoughPosition(locRoughPosition.X(), locRoughPosition.Y(), locRoughPosition.Z());
111 set<shared_ptr<DKinFitParticle>> locKinFitParticles;
112 for(
size_t loc_i = 0; loc_i < locTrackTimeBasedVectorToUse.size(); ++loc_i)
142 _data.push_back(locVertex);
159 const TMatrixFSym& locTrackErrorMatrix = *(locTrackTimeBased->
errorMatrix());
162 for(
size_t loc_i = 0; loc_i < 3; ++loc_i)
164 for(
size_t loc_j = 0; loc_j < 3; ++loc_j)
165 locVertex->
dCovarianceMatrix(loc_i, loc_j) = locTrackErrorMatrix(loc_i + 3, loc_j + 3);
170 _data.push_back(locVertex);
191 _data.push_back(locVertex);
200 DVector3 locDFitVertex(locFitVertex.X(), locFitVertex.Y(), locFitVertex.Z());
212 for(
size_t loc_i = 0; loc_i < 3; ++loc_i)
214 for(
size_t loc_j = 0; loc_j < 3; ++loc_j)
221 map<shared_ptr<DKinFitParticle>, map<DKinFitPullType, double> > locPulls_KinFitParticle;
225 auto locMapIterator = locPulls_KinFitParticle.begin();
226 for(; locMapIterator != locPulls_KinFitParticle.end(); ++locMapIterator)
228 auto locOutputKinFitParticle = locMapIterator->first;
232 locVertex->
dKinFitPulls[locSourceJObject] = locMapIterator->second;
235 _data.push_back(locVertex);
void Reset_NewEvent(void)
shared_ptr< DKinFitConstraint_Vertex > Make_VertexConstraint(const set< shared_ptr< DKinFitParticle >> &locFullConstrainParticles, const set< shared_ptr< DKinFitParticle >> &locNoConstrainParticles, TVector3 locVertexGuess=TVector3())
void Set_UpdateCovarianceMatricesFlag(bool locUpdateCovarianceMatricesFlag)
jerror_t Create_Vertex_NoTracks(const DEventRFBunch *locEventRFBunch)
TVector3 Get_CommonVertex(void) const
void Reset_NewEvent(void)
const DVector3 & position(void) const
jerror_t brun(jana::JEventLoop *locEventLoop, int32_t runnumber)
Called everytime a new run number is detected.
shared_ptr< DKinFitParticle > Make_DetectedParticle(const DKinematicData *locKinematicData)
DKinFitUtils_GlueX * dKinFitUtils
TLorentzVector DLorentzVector
void Add_Constraint(const shared_ptr< DKinFitConstraint > &locKinFitConstraint)
jerror_t Create_Vertex_OneTrack(const DTrackTimeBased *locTrackTimeBased, const DEventRFBunch *locEventRFBunch)
jerror_t init(void)
Called once at program start.
map< const JObject *, map< DKinFitPullType, double > > dKinFitPulls
DVector3 Calc_CrudeVertex(const vector< const DKinematicData * > &locParticles) const
DGeometry * GetDGeometry(unsigned int run_number)
set< shared_ptr< DKinFitConstraint > > Get_KinFitConstraints(void) const
unsigned int Get_NDF(void) const
void Set_DebugLevel(int locDebugLevel)
bool Get_IsMatchedToHit(const DTrackingData *locTrack) const
DLorentzVector dSpacetimeVertex
double Get_ChiSq(void) const
jerror_t Create_Vertex_KinFit(const DEventRFBunch *locEventRFBunch)
void Get_Pulls(map< shared_ptr< DKinFitParticle >, map< DKinFitPullType, double > > &locPulls) const
const JObject * Get_SourceJObject(const shared_ptr< DKinFitParticle > &locInputKinFitParticle) const
const TMatrixDSym & Get_VXi(void)
TMatrixFSym dCovarianceMatrix
shared_ptr< DKinFitParticle > Get_InputKinFitParticle(const shared_ptr< DKinFitParticle > &locKinFitParticle) const
shared_ptr< const TMatrixFSym > errorMatrix(void) const
bool GetTargetLength(double &target_length) const
z-location of center of target
bool GetTargetZ(double &z_target) const
z-location of center of target
const DAnalysisUtilities * dAnalysisUtilities
jerror_t evnt(jana::JEventLoop *locEventLoop, uint64_t eventnumber)
Called every event.
jerror_t Create_Vertex_Rough(DVector3 locPosition, const DEventRFBunch *locEventRFBunch)