Skip to content
Snippets Groups Projects

Fixed use of ITrackFitter interface

Merged Marco Clemencic requested to merge fix-track-fit into master
7 files
+ 140
147
Compare changes
  • Side-by-side
  • Inline
Files
7
@@ -41,18 +41,18 @@ StatusCode DToKPiTwoProng::initialize() {
StatusCode sc = GaudiTupleAlg::initialize();
if (sc.isFailure()){
return Warning("Failed to init base class", StatusCode::FAILURE);
}
}
m_vertexer = tool<ITrackVertexer>( "TrackVertexer" );
m_trackExtrapolator = tool<ITrackExtrapolator>("TrackMasterExtrapolator");
m_trackPreFit = tool<ITrackFitter>("TrackMasterFitter"," preFit", this);
m_trackFit = tool<ITrackFitter>("TrackMasterFitter", "fit", this);
auto propertysvc = service<LHCb::IParticlePropertySvc>("LHCb::ParticlePropertySvc",true) ;
const LHCb::ParticleProperty* prop = propertysvc->find( m_resonanceName);
if (!prop) return Error("Failed to find resonance", StatusCode::SUCCESS);
m_minMass = prop->mass() - m_deltaMass;
m_minMass = prop->mass() - m_deltaMass;
m_maxMass = prop->mass() + m_deltaMass;
const LHCb::ParticleProperty* prop2 = propertysvc->find("pi+");
@@ -60,8 +60,8 @@ StatusCode DToKPiTwoProng::initialize() {
const LHCb::ParticleProperty* prop3 = propertysvc->find("K+");
m_kaonMass = prop3->mass();
/*
using namespace LoKi::Particles;
double dMass = massFromName(m_resonanceName);
@@ -77,45 +77,45 @@ StatusCode DToKPiTwoProng::initialize() {
StatusCode DToKPiTwoProng::execute()
{
// Create the output container
// Create the output container
typedef KeyedContainer<LHCb::TwoProngVertex, Containers::HashMap> TwoProngVertices;
TwoProngVertices* vertContainer = new TwoProngVertices() ;
put(vertContainer, m_vertexLocation);
LHCb::Track::Selection* daughterCont = new LHCb::Track::Selection() ;
put(daughterCont, m_trackOutputLocation);
//std::cout << " Going to Loop " << std::endl;
// get the input particles
// get the input particles
const LHCb::Particle::Container* particles = get<LHCb::Particle::Container>(m_particleLocation);
for( auto iterP = particles->begin(); iterP != particles->end(); ++iterP ){
const SmartRefVector<LHCb::Particle> daughters = (*iterP)->daughters();
LHCb::Track* track1 = track(daughters.front());
LHCb::Track* track2 = track(daughters.back());
m_trackPreFit->fit(*track1);
m_trackFit->fit(*track1);
m_trackPreFit->operator()(*track1);
m_trackFit->operator()(*track1);
m_trackPreFit->fit(*track2);
m_trackFit->fit(*track2);
m_trackPreFit->operator()(*track2);
m_trackFit->operator()(*track2);
double z = (*iterP)->endVertex()->position().z();
// make the vertex, make first particle the kaon
auto tvertex = (PIDK(daughters[0]) > PIDK(daughters[1]) ? refittedMass(*track1, *track2, z)
: refittedMass(*track2, *track1, z) );
: refittedMass(*track2, *track1, z) );
double m = tvertex->mass(m_kaonMass, m_pionMass);
//Tuple tuple = nTuple("testTuple");
//tuple << Tuples::Column("m", m);
//tuple->write();
//tuple << Tuples::Column("m", m);
//tuple->write();
// std::cout << " m" << m << std::endl;
// std::cout << " m" << m << std::endl;
plot(m , "m" , 1000. , 2000, 200);
if (m > m_minMass && m < m_maxMass){
vertContainer->insert(tvertex.release());
@@ -142,11 +142,11 @@ double DToKPiTwoProng::PIDK(const LHCb::Particle* part) const{
return proto == 0 ? -9999 : proto->info(LHCb::ProtoParticle::CombDLLk,-1000);
}
std::unique_ptr<LHCb::TwoProngVertex>
DToKPiTwoProng::refittedMass(const LHCb::Track& track1,
std::unique_ptr<LHCb::TwoProngVertex>
DToKPiTwoProng::refittedMass(const LHCb::Track& track1,
const LHCb::Track& track2,
double zVert ) const{
LHCb::State state1 = *track1.stateAt(LHCb::State::ClosestToBeam);
m_trackExtrapolator->propagate(state1, zVert);
LHCb::State state2 = *track2.stateAt(LHCb::State::ClosestToBeam);
@@ -157,10 +157,5 @@ DToKPiTwoProng::refittedMass(const LHCb::Track& track1,
vertex->addToTracks( &track2 ) ;
return vertex;
}
}
Loading