22 const IInterface*
p) :
24 m_v0Tools(
"Trk::V0Tools"),
25 m_fourMuonTool(
"DerivationFramework::FourMuonTool",this),
26 m_pvRefitter(
"Analysis::PrimaryVertexRefitter",this)
35 declareProperty(
"PairContainerName" ,
m_pairName =
"Pairs");
36 declareProperty(
"QuadrupletContainerName",
m_quadName =
"Quadruplets");
39 declareProperty(
"RefitPV" ,
m_refitPV =
false);
40 declareProperty(
"MaxPVrefit" ,
m_PV_max = 1);
60 return StatusCode::SUCCESS;
69 return StatusCode::SUCCESS;
81 bool acceptEvent =
false;
85 if( !
m_fourMuonTool->performSearch(pairContainer, pairAuxContainer, quadContainer, quadAuxContainer, acceptEvent).isSuccess() ) {
87 return StatusCode::FAILURE;
109 return StatusCode::FAILURE;
120 refPvContainer->setStore(refPvAuxContainer);
126 if(quadContainer->
size() >0){
129 ATH_MSG_FATAL(
"refitting failed - check the vertices you passed");
130 return StatusCode::FAILURE;
133 if(pairContainer->
size()>0) {
136 ATH_MSG_FATAL(
"refitting failed - check the vertices you passed");
137 return StatusCode::FAILURE;
141 if(quadContainer->
size() >0){
145 if(pairContainer->
size() >0)
156 std::vector<double> muonPairMasses = std::vector<double>(2, 105.658);
157 std::vector<double> muonQuadMasses = std::vector<double>(4, 105.658);
167 for(; pairItr!=pairContainer->
end(); ++pairItr) {
177 double massErr =
m_v0Tools->invariantMassError(pairHelper.
vtx(), muonPairMasses);
193 for(; quadItr!=quadContainer->
end(); ++quadItr) {
203 double massErr =
m_v0Tools->invariantMassError(quadHelper.
vtx(), muonQuadMasses);
220 if (!evtStore()->contains<xAOD::VertexContainer>(
m_pairName))
221 evtStore()->record(pairContainer,
m_pairName).ignore();
222 if (!evtStore()->contains<xAOD::VertexAuxContainer>(
m_pairName+
"Aux."))
223 evtStore()->record(pairAuxContainer,
m_pairName+
"Aux.").ignore();
226 if (!evtStore()->contains<xAOD::VertexContainer>(
m_quadName))
227 evtStore()->record(quadContainer,
m_quadName).ignore();
228 if (!evtStore()->contains<xAOD::VertexAuxContainer>(
m_quadName+
"Aux."))
229 evtStore()->record(quadAuxContainer,
m_quadName+
"Aux.").ignore();
237 return StatusCode::SUCCESS;
258 const float errConst = -9999999;