23 const IInterface*
p) :
25 m_v0Tools(
"Trk::V0Tools"),
26 m_fourMuonTool(
"DerivationFramework::FourMuonTool",this),
27 m_pvRefitter(
"Analysis::PrimaryVertexRefitter",this)
36 declareProperty(
"PairContainerName" ,
m_pairName =
"Pairs");
37 declareProperty(
"QuadrupletContainerName",
m_quadName =
"Quadruplets");
40 declareProperty(
"RefitPV" ,
m_refitPV =
false);
41 declareProperty(
"MaxPVrefit" ,
m_PV_max = 1);
61 return StatusCode::SUCCESS;
70 return StatusCode::SUCCESS;
82 bool acceptEvent =
false;
86 if( !
m_fourMuonTool->performSearch(pairContainer, pairAuxContainer, quadContainer, quadAuxContainer, acceptEvent).isSuccess() ) {
88 return StatusCode::FAILURE;
110 return StatusCode::FAILURE;
121 refPvContainer->setStore(refPvAuxContainer);
127 if(quadContainer->
size() >0){
130 ATH_MSG_FATAL(
"refitting failed - check the vertices you passed");
131 return StatusCode::FAILURE;
134 if(pairContainer->
size()>0) {
137 ATH_MSG_FATAL(
"refitting failed - check the vertices you passed");
138 return StatusCode::FAILURE;
142 if(quadContainer->
size() >0){
146 if(pairContainer->
size() >0)
168 for(; pairItr!=pairContainer->
end(); ++pairItr) {
178 double massErr =
m_v0Tools->invariantMassError(pairHelper.
vtx(), muonPairMasses);
194 for(; quadItr!=quadContainer->
end(); ++quadItr) {
204 double massErr =
m_v0Tools->invariantMassError(quadHelper.
vtx(), muonQuadMasses);
221 if (!evtStore()->contains<xAOD::VertexContainer>(
m_pairName))
222 evtStore()->record(pairContainer,
m_pairName).ignore();
223 if (!evtStore()->contains<xAOD::VertexAuxContainer>(
m_pairName+
"Aux."))
224 evtStore()->record(pairAuxContainer,
m_pairName+
"Aux.").ignore();
227 if (!evtStore()->contains<xAOD::VertexContainer>(
m_quadName))
228 evtStore()->record(quadContainer,
m_quadName).ignore();
229 if (!evtStore()->contains<xAOD::VertexAuxContainer>(
m_quadName+
"Aux."))
230 evtStore()->record(quadAuxContainer,
m_quadName+
"Aux.").ignore();
238 return StatusCode::SUCCESS;
259 const float errConst = -9999999;