|
ATLAS Offline Software
|
#include <InDetV0FinderTool.h>
|
| InDetV0FinderTool (const std::string &t, const std::string &n, const IInterface *p) |
|
| ~InDetV0FinderTool () |
|
StatusCode | initialize () |
|
StatusCode | finalize () |
|
StatusCode | performSearch (xAOD::VertexContainer *v0Container, xAOD::VertexContainer *ksContainer, xAOD::VertexContainer *laContainer, xAOD::VertexContainer *lbContainer, const xAOD::Vertex *vertex, const xAOD::VertexContainer *vertColl, const EventContext &ctx) const |
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysInitialize () override |
| Perform system initialization for an algorithm. More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
void | SGError (const std::string &errService) const |
|
bool | doFit (const xAOD::TrackParticle *track1, const xAOD::TrackParticle *track2, Amg::Vector3D &startingPoint, const EventContext &ctx) const |
|
bool | d0Pass (const xAOD::TrackParticle *track1, const xAOD::TrackParticle *track2, const xAOD::VertexContainer *vertColl, const EventContext &ctx) const |
|
bool | d0Pass (const xAOD::TrackParticle *track1, const xAOD::TrackParticle *track2, const xAOD::Vertex *vertex, const EventContext &ctx) const |
|
bool | d0Pass (const xAOD::TrackParticle *track1, const xAOD::TrackParticle *track2, const Amg::Vector3D &vertex, const EventContext &ctx) const |
|
bool | pointAtVertex (const xAOD::Vertex *v0, const xAOD::Vertex *PV) const |
|
bool | pointAtVertexColl (xAOD::Vertex *v0, const xAOD::VertexContainer *vertColl) const |
|
bool | doMassFit (xAOD::Vertex *vxCandidate, int pdgID) const |
|
xAOD::Vertex * | massFit (int pdgID, const std::vector< const xAOD::TrackParticle * > &pairV0, const Amg::Vector3D &vertex) const |
|
ElementLink< xAOD::TrackParticleContainer > | makeLink (const xAOD::TrackParticle *, const std::vector< const xAOD::TrackParticleContainer * > &) const |
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
|
SG::ReadHandleKey< xAOD::TrackParticleContainer > | m_trackParticleKey |
|
PublicToolHandle< Trk::IVertexFitter > | m_iVertexFitter |
|
PublicToolHandle< Trk::IVertexFitter > | m_iVKVertexFitter |
|
PublicToolHandle< Trk::IVertexFitter > | m_iKshortFitter |
|
PublicToolHandle< Trk::IVertexFitter > | m_iLambdaFitter |
|
PublicToolHandle< Trk::IVertexFitter > | m_iLambdabarFitter |
|
PublicToolHandle< Trk::IVertexFitter > | m_iGammaFitter |
|
PublicToolHandle< Trk::V0Tools > | m_V0Tools |
|
PublicToolHandle< Reco::ITrackToVertex > | m_trackToVertexTool |
|
PublicToolHandle< Trk::ITrackSelectorTool > | m_trkSelector |
|
PublicToolHandle< InDet::VertexPointEstimator > | m_vertexEstimator |
|
PublicToolHandle< Trk::IExtrapolator > | m_extrapolator |
|
const HepPDT::ParticleDataTable * | m_particleDataTable = nullptr |
|
BooleanProperty | m_doSimpleV0 {this, "doSimpleV0", false} |
| = true equivalent to the old InDetSimpleV0Finder (false) More...
|
|
BooleanProperty | m_useorigin {this, "useorigin", true} |
| = true only using tracks that have no vertex association (true) More...
|
|
BooleanProperty | m_samesign {this, "AddSameSign", false} |
| = true select tracks with same sign (false) More...
|
|
BooleanProperty | m_pv {this, "trkSelPV", false} |
| = true select tracks wrt primary vertex (false) More...
|
|
BooleanProperty | m_use_vertColl {this, "useVertexCollection", false} |
| = true select tracks wrt a vertex collection (false) More...
|
|
BooleanProperty | m_useTRTplusTRT {this, "useTRTplusTRT", false} |
| = use TRT+TRT pairs (true) More...
|
|
BooleanProperty | m_useTRTplusSi {this, "useTRTplusSi", false} |
| = use TRT+Si pairs (true) More...
|
|
BooleanProperty | m_useV0Fitter {this, "useV0Fitter", false} |
| = true if using TrkV0Fitter, = false if using VKalVert (true) More...
|
|
IntegerProperty | m_masses {this, "masses", 1} |
| = 1 if using PDG values, = 2 if user set (1) More...
|
|
DoubleProperty | m_masspi {this, "masspi", 139.57} |
| pion mass (139.57 MeV) More...
|
|
DoubleProperty | m_massp {this, "massp", 938.272} |
| proton mass (938.272 MeV) More...
|
|
DoubleProperty | m_masse {this, "masse", 0.510999} |
| electron mass (0.510999 MeV) More...
|
|
DoubleProperty | m_massK0S {this, "massK0S", 497.672} |
| Kshort mass (497.672 MeV) More...
|
|
DoubleProperty | m_massLambda {this, "massLambda", 1115.68} |
| Lambda mass (1115.68 MeV) More...
|
|
DoubleProperty | m_ptTRT {this, "ptTRT", 700.} |
| Minimum pT for TRT tracks (700. More...
|
|
DoubleProperty | m_maxsxy {this, "maxsxy", 1000.} |
| Maximum Rxy of starting point (1000. More...
|
|
DoubleProperty | m_uksmin {this, "uksmin", 400.} |
| min Kshort mass, unconstrained fit (400. More...
|
|
DoubleProperty | m_uksmax {this, "uksmax", 600.} |
| max Kshort mass, unconstrained fit (600. More...
|
|
DoubleProperty | m_ulamin {this, "ulamin", 1000.} |
| min Lambda mass, unconstrained fit (1000. More...
|
|
DoubleProperty | m_ulamax {this, "ulamax", 1200.} |
| max Lambda mass, unconstrained fit (1200. More...
|
|
DoubleProperty | m_ksmin {this, "ksmin", 400.} |
| min Kshort mass (400. More...
|
|
DoubleProperty | m_ksmax {this, "ksmax", 600.} |
| max Kshort mass (600. More...
|
|
DoubleProperty | m_lamin {this, "lamin", 1000.} |
| min Lambda mass (1000. More...
|
|
DoubleProperty | m_lamax {this, "lamax", 1200.} |
| max Lambda mass (1200. More...
|
|
DoubleProperty | m_errmass {this, "errmass", 100.} |
| Maximum mass error (100. More...
|
|
DoubleProperty | m_minVertProb {this, "minVertProb", 0.0001} |
| Minimum vertex probability (0.0001) More...
|
|
DoubleProperty | m_minConstrVertProb {this, "minConstrVertProb", 0.0001} |
| Minimum vertex probability for constrained fit (0.0001) More...
|
|
DoubleProperty | m_d0_cut {this, "d0_cut", 2.} |
| track d0 significance wrt a vertex (>2.) More...
|
|
DoubleProperty | m_vert_lxy_sig {this, "vert_lxy_sig", 2.} |
| V0 lxy significance wrt a vertex (>2.) More...
|
|
DoubleProperty | m_vert_lxy_cut {this, "vert_lxy_cut", 500.} |
| V0 lxy V0 lxy (<500.) More...
|
|
DoubleProperty | m_vert_a0xy_cut {this, "vert_a0xy_cut", 3.} |
| V0 |a0xy| wrt a vertex (<3.) More...
|
|
DoubleProperty | m_vert_a0z_cut {this, "vert_a0z_cut", 15.} |
| V0 |a0z| wrt a vertex (<15.) More...
|
|
std::atomic< unsigned int > | m_events_processed {} |
|
std::atomic< unsigned int > | m_V0s_stored {} |
|
std::atomic< unsigned int > | m_Kshort_stored {} |
|
std::atomic< unsigned int > | m_Lambda_stored {} |
|
std::atomic< unsigned int > | m_Lambdabar_stored {} |
|
std::atomic< unsigned int > | m_Gamma_stored {} |
|
const Trk::TrkV0VertexFitter * | m_concreteVertexFitter = nullptr |
|
SG::ReadHandleKey< xAOD::VertexContainer > | m_vertexKey |
|
SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_v0LinksDecorkeyks |
|
SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_v0LinksDecorkeylb |
|
SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_v0LinksDecorkeylbb |
|
SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_v0_ksLinksDecorkey |
|
SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_v0_laLinksDecorkey |
|
SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_v0_lbLinksDecorkey |
|
SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_mDecor_gfit |
|
SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_mDecor_gmass |
|
SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_mDecor_gmasserr |
|
SG::WriteDecorHandleKey< xAOD::VertexContainer > | m_mDecor_gprob |
|
SG::ReadHandleKey< xAOD::EventInfo > | m_eventInfo_key {this, "EventInfo", "EventInfo", "Input event information"} |
|
SG::ReadCondHandleKey< InDet::BeamSpotData > | m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" } |
|
SG::ReadDecorHandleKeyArray< xAOD::EventInfo > | m_beamSpotDecoKey {this, "BeamSpotDecoKeys" ,{}, "Add the scheduler dependencies on the beamspot information"} |
|
Gaudi::Property< bool > | m_useBeamSpotCond { this, "UseBeamSpotCond", false } |
|
Gaudi::Property< std::string > | m_v0Key { this, "V0ContainerName", "V0Candidates", "V0 container name (same calling alg)" } |
|
Gaudi::Property< std::string > | m_ksKey { this, "KshortContainerName", "KshortCandidates", "Ks container name (same calling alg)" } |
|
Gaudi::Property< std::string > | m_laKey |
|
Gaudi::Property< std::string > | m_lbKey |
|
Gaudi::Property< int > | m_maxPV { this, "MaxPV", 999999 } |
|
SG::ReadHandleKeyArray< xAOD::TrackParticleContainer > | m_RelinkContainers {this, "RelinkTracks", {}, "Track Containers if they need to be relinked through indirect use" } |
|
ServiceHandle< IPartPropSvc > | m_partPropSvc {this, "PartPropSvc", "PartPropSvc"} |
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
Definition at line 98 of file InDetV0FinderTool.h.
◆ StoreGateSvc_t
◆ InDetV0FinderTool()
InDet::InDetV0FinderTool::InDetV0FinderTool |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
◆ ~InDetV0FinderTool()
InDet::InDetV0FinderTool::~InDetV0FinderTool |
( |
| ) |
|
|
default |
◆ d0Pass() [1/3]
◆ d0Pass() [2/3]
Definition at line 648 of file InDetV0FinderTool.cxx.
659 if (per1 ==
nullptr)
return pass;
661 if (per2 ==
nullptr) {
664 double d0_1 = per1->parameters()[
Trk::d0];
◆ d0Pass() [3/3]
Definition at line 626 of file InDetV0FinderTool.cxx.
641 if (per1 ==
nullptr)
return pass;
643 if (per2 ==
nullptr) {
646 double d0_1 = per1->parameters()[
Trk::d0];
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ doFit()
◆ doMassFit()
bool InDet::InDetV0FinderTool::doMassFit |
( |
xAOD::Vertex * |
vxCandidate, |
|
|
int |
pdgID |
|
) |
| const |
|
private |
Definition at line 717 of file InDetV0FinderTool.cxx.
726 }
else if (pdgID == -3122) {
732 if (in_mass_window) pass =
true;
740 std::vector<double>
masses;
744 }
else if (pdgID == 3122) {
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ finalize()
StatusCode InDet::InDetV0FinderTool::finalize |
( |
| ) |
|
◆ initialize()
StatusCode InDet::InDetV0FinderTool::initialize |
( |
| ) |
|
Definition at line 54 of file InDetV0FinderTool.cxx.
118 for (
const std::string
beam : {
"beamPosX",
"beamPosY",
"beamPosZ"}) {
157 ATH_MSG_FATAL(
"The vertex fitter passed is not a V0 Vertex Fitter");
158 return StatusCode::FAILURE;
166 return StatusCode::SUCCESS;
175 const EventContext& ctx
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ interfaceID()
static const InterfaceID& InDet::InDetV0FinderTool::interfaceID |
( |
| ) |
|
|
inlinestatic |
◆ invariantMass()
Definition at line 705 of file InDetV0FinderTool.cxx.
709 double mass = 1000000000.;
710 double error = 1000000001.;
711 bool in_mass_window =
false;
712 double winmass_min = 0., winmass_max = 0.;
◆ makeLink()
◆ massFit()
Definition at line 748 of file InDetV0FinderTool.cxx.
772 if (pdgID == -3122) {
784 const std::vector<const xAOD::TrackParticleContainer*>& trackcols)
const
788 bool elementSet =
false;
789 if(trackcols.empty()){
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ performSearch()
Definition at line 180 of file InDetV0FinderTool.cxx.
183 trackCols.push_back(handle.cptr());
190 if ( !TPC.isValid() )
193 return StatusCode::SUCCESS;
195 ATH_MSG_DEBUG(
"Track particle container size " << TPC->size());
203 beamspot = beamSpotHandle->beamPos();
208 beamspot =
Amg::Vector3D(beamPosX(0), beamPosY(0), beamPosZ(0));
211 std::vector<const xAOD::TrackParticle*> posTracks; posTracks.clear();
212 std::vector<const xAOD::TrackParticle*> negTracks; negTracks.clear();
214 if (
m_pv && primaryVertex) vx = primaryVertex;
216 if (TPC->size() > 1) {
218 for ( tpIt=TPC->begin(); tpIt!=TPC->end(); ++tpIt )
226 posTracks.push_back(TP);
227 negTracks.push_back(TP);
230 posTracks.push_back(*tpIt);
232 negTracks.push_back(*tpIt);
238 ATH_MSG_DEBUG(
"number of tracks passing preselection, positive " << posTracks.size() <<
" negative " << negTracks.size());
240 if (!posTracks.empty() && !negTracks.empty())
243 if (!vertices.isValid())
246 return StatusCode::SUCCESS;
260 std::vector<const xAOD::TrackParticle*>::const_iterator tpIt1;
261 std::vector<const xAOD::TrackParticle*>::const_iterator tpIt2;
263 for (tpIt1 = posTracks.begin(); tpIt1 != posTracks.end(); ++tpIt1)
270 double pt1 = TP1->
pt();
275 for (
const auto *
const vx : *vertices)
285 if (foundVertex1)
break;
289 for (tpIt2 = negTracks.begin(); tpIt2 != negTracks.end(); ++tpIt2)
291 if (*tpIt1 == *tpIt2)
continue;
299 ATH_MSG_DEBUG(
"nclus1 " << (
int)nclus1 <<
" nclus2 " << (
int)nclus2);
304 double pt2 = TP2->
pt();
309 for (
const auto *
const vx : *vertices)
319 if (foundVertex2)
break;
322 bool usepair =
false;
324 if (
m_useorigin && foundVertex1 ==
nullptr && foundVertex2 ==
nullptr) usepair =
true;
325 if (!usepair)
continue;
327 bool trk_cut1 =
false;
328 bool trk_cut2 =
false;
329 if (nclus1 != 0) trk_cut1 =
true;
330 if (nclus1 == 0 && pt1 >=
m_ptTRT) trk_cut1 =
true;
331 if (!trk_cut1)
continue;
332 if (nclus2 != 0) trk_cut2 =
true;
333 if (nclus2 == 0 && pt2 >=
m_ptTRT) trk_cut2 =
true;
334 if (!trk_cut2)
continue;
342 if (errorcode != 0) {startingPoint(0) = 0.0; startingPoint(1) = 0.0; startingPoint(2) = 0.0;}
343 bool errorCode =
false;
344 if (errorcode == 0 || errorcode == 5 || errorcode == 6 || errorcode == 8) errorCode =
true;
345 if (!errorCode)
continue;
347 bool d0wrtVertex =
true;
349 if ( !
d0Pass(TP1,TP2,vertColl, ctx) ) d0wrtVertex =
false;
353 if ( !
d0Pass(TP1,TP2,primaryVertex, ctx) ) d0wrtVertex =
false;
355 if ( !
d0Pass(TP1,TP2,beamspot, ctx) ) d0wrtVertex =
false;
358 if (!d0wrtVertex)
continue;
362 if (
doFit(TP1,TP2,startingPoint, ctx) )
364 std::vector<const xAOD::TrackParticle*> pairV0;
366 pairV0.push_back(TP1);
367 pairV0.push_back(TP2);
372 std::unique_ptr<xAOD::Vertex> myVxCandidate;
376 myVxCandidate = std::unique_ptr<xAOD::Vertex>(
m_iVKVertexFitter->fit(pairV0, startingPoint) );
384 bool doKshortFit =
false;
385 doKshortFit =
doMassFit(myVxCandidate.get(),310);
386 bool doLambdaFit =
false;
387 doLambdaFit =
doMassFit(myVxCandidate.get(),3122);
388 bool doLambdabarFit =
false;
389 doLambdabarFit =
doMassFit(myVxCandidate.get(),-3122);
390 if (doKshortFit || doLambdaFit || doLambdabarFit)
392 bool pointAtVert =
true;
397 if ( !
pointAtVertex(myVxCandidate.get(),primaryVertex) ) pointAtVert =
false;
404 std::unique_ptr<xAOD::Vertex> myKshort;
405 std::unique_ptr<xAOD::Vertex> myLambda;
406 std::unique_ptr<xAOD::Vertex> myLambdabar;
407 std::unique_ptr<xAOD::Vertex> myGamma;
408 bool foundKshort =
false;
409 bool foundLambda =
false;
410 bool foundLambdabar =
false;
413 myKshort = std::unique_ptr<xAOD::Vertex>(
massFit(310, pairV0,
vertex) );
423 myLambda = std::unique_ptr<xAOD::Vertex>(
massFit(3122, pairV0,
vertex) );
433 myLambdabar = std::unique_ptr<xAOD::Vertex>(
massFit(-3122, pairV0,
vertex));
437 foundLambdabar =
true;
442 bool doGamma =
false;
444 double gamma_prob = -1., gamma_mass = -1., gamma_massErr = -1.;
445 if (foundKshort || foundLambda || foundLambdabar) doGamma =
true;
459 v0Container->
push_back(myVxCandidate.release());
468 ksContainer->
push_back(myKshort.release());
472 v0LinksDecorks(*(ksContainer->
back())) = v0Link;
476 v0_ksLinksDecor(*(v0Container->
back())) = ksLink;
478 v0_ksLinksDecor(*(v0Container->
back())) = ksLink;
487 laContainer->
push_back(myLambda.release());
491 v0LinksDecorlb(*(laContainer->
back())) = v0Link;
495 v0_laLinksDecor(*(v0Container->
back())) = laLink;
497 v0_laLinksDecor(*(v0Container->
back())) = laLink;
506 lbContainer->
push_back(myLambdabar.release());
510 v0LinksDecorlbb(*(lbContainer->
back())) = v0Link;
514 v0_lbLinksDecor(*(v0Container->
back())) = lbLink;
516 v0_lbLinksDecor(*(v0Container->
back())) = lbLink;
519 myGamma = std::unique_ptr<xAOD::Vertex>(
massFit(22, pairV0,
vertex) );
522 gamma_prob =
m_V0Tools->vertexProbability(myGamma.get());
527 mDecor_gfit( *(v0Container->
back()) ) = gamma_fit;
528 mDecor_gmass( *(v0Container->
back()) ) = gamma_mass;
529 mDecor_gmasserr( *(v0Container->
back()) ) = gamma_massErr;
530 mDecor_gprob( *(v0Container->
back()) ) = gamma_prob;
552 if (v0Container->
empty())
ATH_MSG_DEBUG(
"No Candidates found. Empty container returned");
553 if (ksContainer->
empty())
ATH_MSG_DEBUG(
"No Kshort Candidates found. Empty container returned");
554 if (laContainer->
empty())
ATH_MSG_DEBUG(
"No Lambda Candidates found. Empty container returned");
555 if (lbContainer->
empty())
ATH_MSG_DEBUG(
"No Lambdabar Candidates found. Empty container returned");
557 return StatusCode::SUCCESS;
563 <<
"----------------------------------------------------------------------------------------------------------------------------------------------" <<
endmsg
◆ pointAtVertex()
◆ pointAtVertexColl()
Definition at line 697 of file InDetV0FinderTool.cxx.
698 double e2sq = per2->momentum().mag2() +
m2*
m2;
699 double e2 = (e2sq>0.) ? sqrt(e2sq) : 0.;
700 double p = (per1->momentum()+per2->momentum()).
mag();
702 double mass = (msq>0.) ? sqrt(msq) : 0.;
◆ renounce()
◆ renounceArray()
◆ SGError()
void InDet::InDetV0FinderTool::SGError |
( |
const std::string & |
errService | ) |
const |
|
private |
Definition at line 586 of file InDetV0FinderTool.cxx.
588 double massKshort_i=2000001., massLambda_i=2000001., massLambdabar_i=2000001.;
◆ sysInitialize()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_beamSpotDecoKey
◆ m_beamSpotKey
◆ m_concreteVertexFitter
◆ m_d0_cut
DoubleProperty InDet::InDetV0FinderTool::m_d0_cut {this, "d0_cut", 2.} |
|
private |
◆ m_detStore
◆ m_doSimpleV0
BooleanProperty InDet::InDetV0FinderTool::m_doSimpleV0 {this, "doSimpleV0", false} |
|
private |
◆ m_errmass
DoubleProperty InDet::InDetV0FinderTool::m_errmass {this, "errmass", 100.} |
|
private |
◆ m_eventInfo_key
◆ m_events_processed
std::atomic<unsigned int> InDet::InDetV0FinderTool::m_events_processed {} |
|
mutableprivate |
◆ m_evtStore
◆ m_extrapolator
Initial value:{
this, "Extrapolator", "Trk::Extrapolator"}
Definition at line 141 of file InDetV0FinderTool.h.
◆ m_Gamma_stored
std::atomic<unsigned int> InDet::InDetV0FinderTool::m_Gamma_stored {} |
|
mutableprivate |
◆ m_iGammaFitter
Initial value:{
this, "GammaFitterTool", "Trk::TrkVKalVrtFitter"}
Definition at line 131 of file InDetV0FinderTool.h.
◆ m_iKshortFitter
Initial value:{
this, "KshortFitterTool", "Trk::TrkVKalVrtFitter"}
Definition at line 125 of file InDetV0FinderTool.h.
◆ m_iLambdabarFitter
Initial value:{
this, "LambdabarFitterTool", "Trk::TrkVKalVrtFitter"}
Definition at line 129 of file InDetV0FinderTool.h.
◆ m_iLambdaFitter
Initial value:{
this, "LambdaFitterTool", "Trk::TrkVKalVrtFitter"}
Definition at line 127 of file InDetV0FinderTool.h.
◆ m_iVertexFitter
Initial value:{
this, "VertexFitterTool", "Trk::V0VertexFitter"}
Definition at line 121 of file InDetV0FinderTool.h.
◆ m_iVKVertexFitter
Initial value:{
this, "VKVertexFitterTool", "Trk::TrkVKalVrtFitter"}
Definition at line 123 of file InDetV0FinderTool.h.
◆ m_Kshort_stored
std::atomic<unsigned int> InDet::InDetV0FinderTool::m_Kshort_stored {} |
|
mutableprivate |
◆ m_ksKey
Gaudi::Property<std::string> InDet::InDetV0FinderTool::m_ksKey { this, "KshortContainerName", "KshortCandidates", "Ks container name (same calling alg)" } |
|
private |
◆ m_ksmax
DoubleProperty InDet::InDetV0FinderTool::m_ksmax {this, "ksmax", 600.} |
|
private |
◆ m_ksmin
DoubleProperty InDet::InDetV0FinderTool::m_ksmin {this, "ksmin", 400.} |
|
private |
◆ m_laKey
Gaudi::Property<std::string> InDet::InDetV0FinderTool::m_laKey |
|
private |
Initial value:{ this, "LambdaContainerName", "LambdaCandidates",
"Lambda container name (same calling alg)" }
Definition at line 228 of file InDetV0FinderTool.h.
◆ m_lamax
DoubleProperty InDet::InDetV0FinderTool::m_lamax {this, "lamax", 1200.} |
|
private |
◆ m_Lambda_stored
std::atomic<unsigned int> InDet::InDetV0FinderTool::m_Lambda_stored {} |
|
mutableprivate |
◆ m_Lambdabar_stored
std::atomic<unsigned int> InDet::InDetV0FinderTool::m_Lambdabar_stored {} |
|
mutableprivate |
◆ m_lamin
DoubleProperty InDet::InDetV0FinderTool::m_lamin {this, "lamin", 1000.} |
|
private |
◆ m_lbKey
Gaudi::Property<std::string> InDet::InDetV0FinderTool::m_lbKey |
|
private |
Initial value:{ this, "LambdabarContainerName", "LambdabarCandidates",
"Lambdabar container name (same calling alg)" }
Definition at line 230 of file InDetV0FinderTool.h.
◆ m_masse
DoubleProperty InDet::InDetV0FinderTool::m_masse {this, "masse", 0.510999} |
|
private |
◆ m_masses
IntegerProperty InDet::InDetV0FinderTool::m_masses {this, "masses", 1} |
|
private |
◆ m_massK0S
DoubleProperty InDet::InDetV0FinderTool::m_massK0S {this, "massK0S", 497.672} |
|
private |
◆ m_massLambda
DoubleProperty InDet::InDetV0FinderTool::m_massLambda {this, "massLambda", 1115.68} |
|
private |
◆ m_massp
DoubleProperty InDet::InDetV0FinderTool::m_massp {this, "massp", 938.272} |
|
private |
◆ m_masspi
DoubleProperty InDet::InDetV0FinderTool::m_masspi {this, "masspi", 139.57} |
|
private |
◆ m_maxPV
Gaudi::Property<int> InDet::InDetV0FinderTool::m_maxPV { this, "MaxPV", 999999 } |
|
private |
◆ m_maxsxy
DoubleProperty InDet::InDetV0FinderTool::m_maxsxy {this, "maxsxy", 1000.} |
|
private |
◆ m_mDecor_gfit
◆ m_mDecor_gmass
◆ m_mDecor_gmasserr
◆ m_mDecor_gprob
◆ m_minConstrVertProb
DoubleProperty InDet::InDetV0FinderTool::m_minConstrVertProb {this, "minConstrVertProb", 0.0001} |
|
private |
◆ m_minVertProb
DoubleProperty InDet::InDetV0FinderTool::m_minVertProb {this, "minVertProb", 0.0001} |
|
private |
◆ m_particleDataTable
const HepPDT::ParticleDataTable* InDet::InDetV0FinderTool::m_particleDataTable = nullptr |
|
private |
◆ m_partPropSvc
ServiceHandle<IPartPropSvc> InDet::InDetV0FinderTool::m_partPropSvc {this, "PartPropSvc", "PartPropSvc"} |
|
private |
◆ m_ptTRT
DoubleProperty InDet::InDetV0FinderTool::m_ptTRT {this, "ptTRT", 700.} |
|
private |
◆ m_pv
BooleanProperty InDet::InDetV0FinderTool::m_pv {this, "trkSelPV", false} |
|
private |
◆ m_RelinkContainers
◆ m_samesign
BooleanProperty InDet::InDetV0FinderTool::m_samesign {this, "AddSameSign", false} |
|
private |
◆ m_trackParticleKey
Initial value:{ this, "TrackParticleCollection", "InDetTrackParticles",
"key for retrieval of TrackParticles" }
Definition at line 118 of file InDetV0FinderTool.h.
◆ m_trackToVertexTool
Initial value:{
this, "TrackToVertexTool", "Reco::TrackToVertex"}
Definition at line 135 of file InDetV0FinderTool.h.
◆ m_trkSelector
Initial value:{
this, "TrackSelectorTool", "InDet::TrackSelectorTool"}
Definition at line 137 of file InDetV0FinderTool.h.
◆ m_uksmax
DoubleProperty InDet::InDetV0FinderTool::m_uksmax {this, "uksmax", 600.} |
|
private |
◆ m_uksmin
DoubleProperty InDet::InDetV0FinderTool::m_uksmin {this, "uksmin", 400.} |
|
private |
◆ m_ulamax
DoubleProperty InDet::InDetV0FinderTool::m_ulamax {this, "ulamax", 1200.} |
|
private |
◆ m_ulamin
DoubleProperty InDet::InDetV0FinderTool::m_ulamin {this, "ulamin", 1000.} |
|
private |
◆ m_use_vertColl
BooleanProperty InDet::InDetV0FinderTool::m_use_vertColl {this, "useVertexCollection", false} |
|
private |
◆ m_useBeamSpotCond
Gaudi::Property<bool> InDet::InDetV0FinderTool::m_useBeamSpotCond { this, "UseBeamSpotCond", false } |
|
private |
◆ m_useorigin
BooleanProperty InDet::InDetV0FinderTool::m_useorigin {this, "useorigin", true} |
|
private |
= true only using tracks that have no vertex association (true)
Definition at line 147 of file InDetV0FinderTool.h.
◆ m_useTRTplusSi
BooleanProperty InDet::InDetV0FinderTool::m_useTRTplusSi {this, "useTRTplusSi", false} |
|
private |
◆ m_useTRTplusTRT
BooleanProperty InDet::InDetV0FinderTool::m_useTRTplusTRT {this, "useTRTplusTRT", false} |
|
private |
◆ m_useV0Fitter
BooleanProperty InDet::InDetV0FinderTool::m_useV0Fitter {this, "useV0Fitter", false} |
|
private |
= true if using TrkV0Fitter, = false if using VKalVert (true)
Definition at line 153 of file InDetV0FinderTool.h.
◆ m_v0_ksLinksDecorkey
◆ m_v0_laLinksDecorkey
◆ m_v0_lbLinksDecorkey
◆ m_v0Key
Gaudi::Property<std::string> InDet::InDetV0FinderTool::m_v0Key { this, "V0ContainerName", "V0Candidates", "V0 container name (same calling alg)" } |
|
private |
◆ m_v0LinksDecorkeyks
◆ m_v0LinksDecorkeylb
◆ m_v0LinksDecorkeylbb
◆ m_V0s_stored
std::atomic<unsigned int> InDet::InDetV0FinderTool::m_V0s_stored {} |
|
mutableprivate |
◆ m_V0Tools
PublicToolHandle<Trk::V0Tools> InDet::InDetV0FinderTool::m_V0Tools |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vert_a0xy_cut
DoubleProperty InDet::InDetV0FinderTool::m_vert_a0xy_cut {this, "vert_a0xy_cut", 3.} |
|
private |
◆ m_vert_a0z_cut
DoubleProperty InDet::InDetV0FinderTool::m_vert_a0z_cut {this, "vert_a0z_cut", 15.} |
|
private |
◆ m_vert_lxy_cut
DoubleProperty InDet::InDetV0FinderTool::m_vert_lxy_cut {this, "vert_lxy_cut", 500.} |
|
private |
◆ m_vert_lxy_sig
DoubleProperty InDet::InDetV0FinderTool::m_vert_lxy_sig {this, "vert_lxy_sig", 2.} |
|
private |
◆ m_vertexEstimator
Initial value:{
this, "VertexPointEstimator", "InDet::VertexPointEstimator"}
Definition at line 139 of file InDetV0FinderTool.h.
◆ m_vertexKey
Initial value:{ this, "VertexContainer", "PrimaryVertices",
"primary vertex container" }
Definition at line 207 of file InDetV0FinderTool.h.
◆ m_vhka
The documentation for this class was generated from the following files:
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Const iterator class for DataVector/DataList.
double e1(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 1st sampling
float charge() const
Returns the charge.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
@ V0Vtx
Vertex from V0 decay.
const TrackParticleLinks_t & trackParticleLinks() const
Get all the particles associated with the vertex.
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
const Amg::Vector3D & position() const
Returns the 3-pos.
const std::string & key() const
Return the StoreGate ID for the referenced object.
virtual void setOwner(IDataHandleHolder *o)=0
void setVertexType(VxType::VertexType vType)
Set the type of the vertex.
void addTrackAtVertex(const ElementLink< TrackParticleContainer > &tr, float weight=1.0)
Add a new track to the vertex.
const Trk::Perigee & perigeeParameters() const
Returns the Trk::MeasuredPerigee track parameters.
Handle class for reading a decoration on an object.
::StatusCode StatusCode
StatusCode definition for legacy code.
Handle class for adding a decoration to an object.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
void clearTracks()
Remove all tracks from the vertex.
const T * back() const
Access the last element in the collection as an rvalue.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
bool setElement(ElementType element)
Set to point to an element.
bool setStorableObject(BaseConstReference data, bool replace=false, IProxyDict *sg=0)
Set link to point to a new container (storable).
double charge(const T &p)
value_type push_back(value_type pElem)
Add an element to the end of the collection.
Eigen::Matrix< double, 3, 1 > Vector3D
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
virtual xAOD::Vertex * fit(const std::vector< const xAOD::TrackParticle * > &vectorTrk, const Amg::Vector3D &startingPoint) const override
Interface for xAOD::TrackParticle with Amg::Vector3D starting point.
Class describing a Vertex.
double e2(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 2nd sampling
#define ATH_MSG_WARNING(x)
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
@ numberOfSCTHits
number of hits in SCT [unit8_t].
This class implements a vertex fitting algorithm optimised for V0 finding.
Class describing a TrackParticle.
size_type size() const noexcept
Returns the number of elements in the collection.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Scalar mag() const
mag method
bool empty() const noexcept
Returns true if the collection is empty.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.