|
ATLAS Offline Software
|
Augment secondary vertices with muon-information-based mass.
More...
#include <BPhysAddMuonBasedInvMass.h>
|
| BPhysAddMuonBasedInvMass (const std::string &t, const std::string &n, const IInterface *p) |
| Main contructor. More...
|
|
virtual StatusCode | initialize () |
| Initialize augmentation tool. More...
|
|
virtual StatusCode | finalize () |
| Finalize augmentation tool. More...
|
|
virtual StatusCode | addBranches () const |
| Main method called for each event. More...
|
|
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 | renounceArray (SG::VarHandleKeyArray &handlesArray) |
| remove all handles from I/O resolution More...
|
|
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > | renounce (T &h) |
|
void | extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps) |
| Add StoreName to extra input/output deps as needed. More...
|
|
|
Calculate muon-information based mass values if available.
- Parameters
-
[in] | vtx | secondary vertex |
[in] | trkMasses | ordered vector of track mass values |
[in] | nMuRequested | number of muons requested |
- Returns
- muon-information based invariant mass for secondary vertex and the corresponding uncertainty
|
std::pair< double, double > | getMuCalcMass (xAOD::BPhysHelper &vtx, const std::vector< double > &trkMasses, int nMuRequested, BasedInvCache &cache) const |
|
std::pair< TrackBag, int > | getTracksWithMuons (xAOD::BPhysHelper &vtx, BasedInvCache &) const |
| Obtain a set of tracks with muon track information if available. More...
|
|
std::pair< double, double > | getInvariantMassWithError (TrackBag trksIn, const std::vector< double > &massHypotheses, const Amg::Vector3D &pos, BasedInvCache &) const |
| Calculate invariant mass and uncertainty from a set of tracks. More...
|
|
double | getMinChi2ToAnyPV (xAOD::BPhysHelper &vtx, const xAOD::VertexContainer *pvContainer, const std::vector< int > &pvtypes, const int minNTracksInPV, const int mode, const xAOD::BPhysHelper::pv_type &pvAssocType, BasedInvCache &cache) const |
| Determine minimum log chi2 of signal muon tracks w.r.t. More...
|
|
double | getTrackPVChi2 (const xAOD::TrackParticle &track, const Amg::Vector3D &pos, BasedInvCache &cache) const |
| Calculate log chi2 value of a track w.r.t. More...
|
|
MuonBag | findAllMuonsInDecay (xAOD::BPhysHelper &vtx) const |
| Find all muons associated to secondary vertex. More...
|
|
TrackBag | getIdTracksForMuons (MuonBag &muons) const |
| Obtain a set of ID tracks for a set of muons. More...
|
|
const xAOD::TrackParticle * | adjustTrackParticle (const xAOD::Muon *muon, BasedInvCache &cache) const |
| Extract TrackParticle for Muon and adjust kinematics. More...
|
|
void | initPvAssocTypeVec () |
| Initialize PV-to-SV association type vector. More...
|
|
Augment secondary vertices with muon-information-based mass.
- Author
- Wolfgang Walkowiak wolfg.nosp@m.ang..nosp@m.walko.nosp@m.wiak.nosp@m.@cern.nosp@m..ch
Add muon-information based invarient mass to secondary vertices using a four vector sum. Optionally, it also calculates the minimum chi2 for all muon tracks of the secondary vertex candidate w.r.t. any primary vertex matching the selection criteria.
Job options provided by this class:
Name
| Description |
BranchPrefix | assign the prefix of added branches (possibly the derivation format's name) |
VertexContainerName | name of container for vertices |
TrkMasses | ordered list of track masses (Important to keep proper order: J/psi muons go first!) |
TrackToVertexTool
| ToolHandle for track-to-vertex tool |
AdjustToMuonKinematics | Adjust the primary track particle's kinematics to the one of the muon. |
AddMinChi2ToAnyPVMode | mode of minLogChi2ToAnyPV calculation: (default: 0)
Value | Explanation | |
0 | no such calculation |
1 | use all PVs of requested type(s) |
2 | exclude PVs associated to SVs |
3 | replace PVs associated to SVs by corresponding refitted PVs |
|
PrimaryVertexContainerName | name of container for primary vertices |
MinNTracksInPV | minimum number of tracks in PV for PV to be considered in calculation of minChi2MuToAnyPV variable. |
PVTypesToConsider | list of primary vertex types to consider (default: {1, 3}) |
DoVertexType | PV-to-SV association types to be considered (bitwise variable, see xAODBPhys::BPhysHelper)
Note: only needed for AddMinChi2ToAnyPVMode > 1 |
- Note
For a usage example see BPHY8.py .
Definition at line 105 of file BPhysAddMuonBasedInvMass.h.
◆ StoreGateSvc_t
◆ BPhysAddMuonBasedInvMass()
DerivationFramework::BPhysAddMuonBasedInvMass::BPhysAddMuonBasedInvMass |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
◆ addBranches()
StatusCode DerivationFramework::BPhysAddMuonBasedInvMass::addBranches |
( |
| ) |
const |
|
virtual |
Main method called for each event.
Implements DerivationFramework::IAugmentationTool.
Definition at line 123 of file BPhysAddMuonBasedInvMass.cxx.
125 ATH_MSG_DEBUG(
"BPhysAddMuonBasedInvMass::addBranches() -- begin");
141 std::string branchPrefix(
"");
148 vtxItr!=vtxContainer->
end(); ++vtxItr) {
153 d_mucalc_mass(branchPrefix+
"MUCALC_mass");
155 d_mucalc_massErr(branchPrefix+
"MUCALC_massErr");
158 std::pair<double,double> MuCalcCandMass =
162 d_mucalc_mass(**vtxItr) = MuCalcCandMass.first;
163 d_mucalc_massErr(**vtxItr) = MuCalcCandMass.second;
171 d_minChi2ToAnyPV(branchPrefix+
"minLogChi2ToAnyPV");
173 d_minChi2ToAnyPV(**vtxItr) =
181 d_minChi2ToAnyPV(branchPrefix+
"minLogChi2ToAnyPV_"
184 d_minChi2ToAnyPV(**vtxItr) =
192 <<
" Undefined AddMinChi2ToAnyPVMode value: "
199 ATH_MSG_DEBUG(
"BPhysAddMuonBasedInvMass::addBranches() -- end");
202 return StatusCode::SUCCESS;
◆ adjustTrackParticle()
Extract TrackParticle for Muon and adjust kinematics.
Extract primary track particle from muon; if configured adjust pt, eta and phi of it before returning a pointer to it.
- Parameters
-
- Returns
- TrackParticle pointer
Definition at line 316 of file BPhysAddMuonBasedInvMass.cxx.
324 auto it = cache.adjTpCache.find(org);
325 if (
it != cache.adjTpCache.end() ) {
339 float qoverp = p4.P() > 0. ? 1./p4.P() : 10.e6;
340 if ( org->
qOverP() < 0. ) qoverp *= -1.;
342 p4.Phi(), p4.Theta(), qoverp);
344 cache.adjTpCache[org] = newTp;
347 <<
" org = " << org);
354 <<
" -> tp: " <<
tp);
360 << org->
d0() <<
"," << org->
z0() <<
"," << org->
phi0()
361 <<
"," << org->
theta() <<
"," << org->
qOverP() <<
") pt: "
368 <<
tp->d0() <<
"," <<
tp->z0() <<
"," <<
tp->phi0()
369 <<
"," <<
tp->theta() <<
"," <<
tp->qOverP() <<
") pt: "
◆ 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()
◆ 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 DerivationFramework::BPhysAddMuonBasedInvMass::finalize |
( |
| ) |
|
|
virtual |
◆ findAllMuonsInDecay()
Find all muons associated to secondary vertex.
Returns a vector of xAOD::Muon objects found in this vertex and subsequent decay vertices. Recursively calls itself if necessary.
- Parameters
-
- Returns
- container of muons found
Definition at line 382 of file BPhysAddMuonBasedInvMass.cxx.
391 muons.insert(muons.end(), muonsForVtx.begin(), muonsForVtx.end());
◆ getIdTracksForMuons()
TrackBag DerivationFramework::BPhysAddMuonBasedInvMass::getIdTracksForMuons |
( |
MuonBag & |
muons | ) |
const |
|
protected |
Obtain a set of ID tracks for a set of muons.
- Parameters
-
[in] | muons | container of muon objects |
- Returns
- container of associated ID tracks
Definition at line 239 of file BPhysAddMuonBasedInvMass.cxx.
243 for (
auto &
muon : muons) {
244 if (
muon !=
nullptr ) {
246 muon->trackParticle(xAOD::Muon::InnerDetectorTrackParticle);
247 if ( trk !=
nullptr ) {
248 muTracks.push_back(trk);
251 <<
" no ID track for muon found.");
255 <<
" muon pointer is NULL!");
◆ getInvariantMassWithError()
std::pair< double, double > DerivationFramework::BPhysAddMuonBasedInvMass::getInvariantMassWithError |
( |
TrackBag |
trksIn, |
|
|
const std::vector< double > & |
massHypotheses, |
|
|
const Amg::Vector3D & |
pos, |
|
|
BasedInvCache & |
cache |
|
) |
| const |
|
protected |
Calculate invariant mass and uncertainty from a set of tracks.
Returns invariant mass and mass error given a set of tracks, their mass hypotheses and a reference position. Each track must have a separate mass hypothesis in the vector, and they must be in the same order as the tracks in the track vector. Otherwise it will go horribly wrong.
- Parameters
-
[in] | trksIn | container with tracks to be considered |
[in] | massHypoTheses | vector of mass hypotheses in the same order as the tracks |
[in] | pos | position of the vertex |
- Returns
- invariant mass value and uncertainty
Definition at line 518 of file BPhysAddMuonBasedInvMass.cxx.
524 std::pair<double, double>
mass(0.,0.);
527 if ( trksIn.size() == massHypotheses.size() ) {
530 auto massHypItr = massHypotheses.cbegin();
532 double pxTmp,pyTmp,pzTmp,massTmp,eTmp;
534 std::vector<TLorentzVector> trkMom;
535 TLorentzVector totMom;
536 std::vector<const Trk::Perigee*> trkPer;
537 const auto &ctx = cache.ctx;
538 for (;trItr != trItrEnd; ++trItr,++massHypItr){
542 if ( trkPerigee != NULL ) {
544 pxTmp = trkPerigee->momentum()[
Trk::px];
545 pyTmp = trkPerigee->momentum()[
Trk::py];
546 pzTmp = trkPerigee->momentum()[
Trk::pz];
548 << pxTmp <<
"," << pyTmp <<
"," << pzTmp <<
")");
551 pxTmp = ((*trItr)->p4()).Px();
552 pyTmp = ((*trItr)->p4()).Py();
553 pzTmp = ((*trItr)->p4()).Pz();
555 "defaulting to simple momentum!");
557 trkPer.push_back(trkPerigee.release());
558 massTmp = *massHypItr;
559 eTmp = pxTmp*pxTmp+pyTmp*pyTmp+pzTmp*pzTmp+massTmp*massTmp;
560 eTmp = eTmp > 0. ? sqrt(eTmp) : 0.;
561 TLorentzVector tmpMom(pxTmp, pyTmp, pzTmp, eTmp);
562 trkMom.push_back(tmpMom);
565 mass.first = totMom.M();
568 trItr = trksIn.begin();
573 for (; tmItr != trkMom.
end(); ++tmItr, ++trItr, ++perItr) {
574 dMdP(0) = (totMom.E() * tmItr->Px()/tmItr->E() - totMom.Px())/totMom.M();
575 dMdP(1) = (totMom.E() * tmItr->Py()/tmItr->E() - totMom.Py())/totMom.M();
576 dMdP(2) = (totMom.E() * tmItr->Pz()/tmItr->E() - totMom.Pz())/totMom.M();
577 if ( *perItr != NULL ) {
578 mErr2 += (dMdP.transpose() * getMomentumCov(*perItr) * dMdP)(0,0);
580 mErr2 += (dMdP.transpose() * getMomentumCov(*trItr ) * dMdP)(0,0);
583 mass.second = mErr2 > 0. ? sqrt(mErr2) : 0.;
585 for ( perItr = trkPer.begin(); perItr != trkPer.end(); ++perItr) {
590 "size mismatch of tracks and mass hypotheses vectors!");
◆ getMinChi2ToAnyPV()
Determine minimum log chi2 of signal muon tracks w.r.t.
Find minimum log chi2 distance of signal muons w.r.t any primary vertex of required types and with a minimum number of tracks cut. It also depends on the mode w.r.t. the treatment of the associated primary vertex and the type of PV-to-SV association. Returns this minimum chi2.
- Parameters
-
[in] | vtx | secondary vertex |
[in] | pvContainer | container of primary vertices @parma[in] pvtypes vector of primary vertex types to be considered |
[in] | minNTracksInPV | minimum number of tracks in primary vertex for it to be considered |
[in] | mode | mode of operation (possible values: 0, 1, 2 ,3) |
[in] | pv_type | type of PV-to-SV association |
- Returns
- minimum log chi2 = log(d0^2/d0e^+z0^2/z0e^2) w.r.t. any primary vertex
Definition at line 404 of file BPhysAddMuonBasedInvMass.cxx.
421 origPV = vtx.
origPv(pvAssocType);
422 if ( origPV ==
nullptr ) {
424 <<
" origPV == NULL for pvAssocType = "
428 refPV = vtx.
pv(pvAssocType);
429 if ( refPV ==
nullptr ) {
431 <<
" refPV == NULL for pvAssocType = "
439 for (
const auto pvtx : *pvContainer) {
440 if ( pvtx !=
nullptr ) {
441 if (
std::find(pvtypes.begin(),pvtypes.end(),pvtx->vertexType())
445 if (
mode > 1 && pvtx == origPV ) {
452 if ( refPV !=
nullptr ) {
456 <<
" refPV == NULL!");
463 for (
auto &
track : tracks) {
471 <<
" pvtx == NULL!");
◆ getMuCalcMass()
std::pair< double, double > DerivationFramework::BPhysAddMuonBasedInvMass::getMuCalcMass |
( |
xAOD::BPhysHelper & |
vtx, |
|
|
const std::vector< double > & |
trkMasses, |
|
|
int |
nMuRequested, |
|
|
BasedInvCache & |
cache |
|
) |
| const |
|
protected |
Definition at line 208 of file BPhysAddMuonBasedInvMass.cxx.
212 std::pair<double, double> mpe(0., -1.);
216 if ( tracksWithMu.second == nMuRequested ) {
217 if ( tracksWithMu.first.size() == trkMasses.size() ) {
223 <<
" vector sizes disagree!"
224 <<
" tracksWithMu: " << tracksWithMu.first.size()
225 <<
" BtrkMasses: " << trkMasses.size());
228 mpe.second = -10 - tracksWithMu.second;
230 <<
" muon number mismatch:"
231 <<
" tracksWithMu: " << tracksWithMu.second
232 <<
" requested: " << nMuRequested);
◆ getTrackPVChi2()
Calculate log chi2 value of a track w.r.t.
a position.
Calculate the log chi2 ( = log((d0/d0e)^2+(z0/z0e)^2) contribution of a track at the position closest to the given PV.
- Parameters
-
[in] | track | track considered |
[in] | pos | position considered |
- Returns
- log chi2 value
Definition at line 483 of file BPhysAddMuonBasedInvMass.cxx.
490 if ( trkPerigee != NULL ) {
491 const AmgSymMatrix(5)* locError = trkPerigee->covariance();
492 if ( locError != NULL ) {
493 double d0 = trkPerigee->parameters()[
Trk::d0];
494 double z0 = trkPerigee->parameters()[
Trk::z0];
497 if (fabs(d0Err) > 0. && fabs(z0Err) > 0.) {
501 <<
" d0 = " <<
d0 <<
", d0Err = " << d0Err
502 <<
", z0 = " <<
z0 <<
", z0Err = " << z0Err);
◆ getTracksWithMuons()
Obtain a set of tracks with muon track information if available.
- Parameters
-
- Returns
- container of muon tracks, number of muons found
Definition at line 264 of file BPhysAddMuonBasedInvMass.cxx.
268 std::vector<int> vnMuFound;
272 if ( muons.size() > 0 ) {
273 for (
int itrk=0; itrk<vtx.
nRefTrks(); ++itrk) {
278 for (
unsigned int imu = 0; imu<muons.size(); ++imu) {
280 muons.at(imu)->trackParticle(xAOD::Muon::InnerDetectorTrackParticle) ) {
283 if ( trkMuon != NULL ) {
284 trkParticle = trkMuon;
290 tracksWithMu.push_back(trkParticle);
291 vnMuFound.push_back(nMuFound);
295 ATH_MSG_DEBUG(
"BPhysAddMuonBasedInvMass::getTracksWithMuons: "
296 "vertex contains no muons, but "
297 << vtx.
nRefTrks() <<
" refitted tracks ...");
300 std::string svnMuFound =
"[";
301 for (
unsigned int i=0;
i<vnMuFound.size(); ++
i) {
304 svnMuFound.back() =
']';
305 ATH_MSG_DEBUG(
"BPhysAddMuonBasedInvMass::getTracksWithMuons: "
306 "nMuFound = " << nMuFound
307 <<
"\nvnMuFound = " << svnMuFound );
309 return std::pair<TrackBag, int>(std::move(tracksWithMu), nMuFound);
◆ initialize()
StatusCode DerivationFramework::BPhysAddMuonBasedInvMass::initialize |
( |
| ) |
|
|
virtual |
◆ initPvAssocTypeVec()
void DerivationFramework::BPhysAddMuonBasedInvMass::initPvAssocTypeVec |
( |
| ) |
|
|
protected |
Initialize PV-to-SV association type vector.
◆ 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& DerivationFramework::IAugmentationTool::interfaceID |
( |
| ) |
|
|
inlinestaticinherited |
AlgTool interface methods.
Definition at line 31 of file IAugmentationTool.h.
31 {
return IID_IAugmentationTool; }
◆ 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.
◆ renounce()
◆ renounceArray()
◆ 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_addMinChi2ToAnyPVMode
int DerivationFramework::BPhysAddMuonBasedInvMass::m_addMinChi2ToAnyPVMode |
|
private |
◆ m_adjustToMuonKinematics
bool DerivationFramework::BPhysAddMuonBasedInvMass::m_adjustToMuonKinematics |
|
private |
◆ m_branchPrefix
std::string DerivationFramework::BPhysAddMuonBasedInvMass::m_branchPrefix |
|
private |
◆ m_detStore
◆ m_doVertexType
int DerivationFramework::BPhysAddMuonBasedInvMass::m_doVertexType |
|
private |
◆ m_evtStore
◆ m_minNTracksInPV
int DerivationFramework::BPhysAddMuonBasedInvMass::m_minNTracksInPV |
|
private |
◆ m_pvAssocTypes
◆ m_pvContainerName
std::string DerivationFramework::BPhysAddMuonBasedInvMass::m_pvContainerName |
|
private |
◆ m_pvTypesToConsider
std::vector<int> DerivationFramework::BPhysAddMuonBasedInvMass::m_pvTypesToConsider |
|
private |
◆ m_trackToVertexTool
◆ m_trkMasses
std::vector<double> DerivationFramework::BPhysAddMuonBasedInvMass::m_trkMasses |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vertexContainerName
std::string DerivationFramework::BPhysAddMuonBasedInvMass::m_vertexContainerName |
|
private |
◆ m_vhka
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
JetConstituentVector::iterator iterator
float refTrkCharge(const size_t index) const
Returns charge of the i-th track.
virtual double pt() const override final
The transverse momentum ( ) of the particle.
size_t nTrackParticles() const
Get the number of tracks associated with this vertex.
Temporary container used until we have I/O for AuxStoreInternal.
static const std::string pv_type_str[]
int nRefTrks()
Returns number of stored refitted track momenta.
std::string find(const std::string &s)
return a remapped string
const xAOD::TrackParticle * adjustTrackParticle(const xAOD::Muon *muon, BasedInvCache &cache) const
Extract TrackParticle for Muon and adjust kinematics.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
std::vector< xAOD::BPhysHelper::pv_type > m_pvAssocTypes
std::vector< int > m_pvTypesToConsider
float z0() const
Returns the parameter.
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
void setDefiningParameters(float d0, float z0, float phi0, float theta, float qOverP)
Set the defining parameters.
const Amg::Vector3D & position() const
Returns the 3-pos.
MuonBag findAllMuonsInDecay(xAOD::BPhysHelper &vtx) const
Find all muons associated to secondary vertex.
@ pz
global momentum (cartesian)
void initPvAssocTypeVec()
Initialize PV-to-SV association type vector.
std::vector< const xAOD::Muon * > MuonBag
float d0() const
Returns the parameter.
AmgSymMatrix(3) BPhysAddMuonBasedInvMass
virtual void setOwner(IDataHandleHolder *o)=0
TLorentzVector FourMom_t
Definition of the 4-momentum type.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
std::pair< double, double > getInvariantMassWithError(TrackBag trksIn, const std::vector< double > &massHypotheses, const Amg::Vector3D &pos, BasedInvCache &) const
Calculate invariant mass and uncertainty from a set of tracks.
Helper class to provide type-safe access to aux data.
(Non-const) Iterator class for DataVector/DataList.
const xAOD::Vertex * precedingVertex(const size_t index)
Returns pointer to a preceding vertex.
double chi2(TH1 *h0, TH1 *h1)
#define CHECK(...)
Evaluate an expression and check for errors.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
std::vector< const xAOD::TrackParticle * > TrackBag
const xAOD::Vertex * origPv(const pv_type vertexType=BPhysHelper::PV_MIN_A0)
original PV
int m_addMinChi2ToAnyPVMode
const xAOD::IParticle * refTrkOrigin(const size_t index) const
: Returns the original track (charged or neutral) corresponding to the i-th refitted track
std::vector< double > m_trkMasses
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
float phi0() const
Returns the parameter, which has range to .
float qOverP() const
Returns the parameter.
const xAOD::Vertex * vtx() const
Getter method for the cached xAOD::Vertex.
std::string to_string(const DetectorType &type)
double error(const Amg::MatrixX &mat, int index)
return diagonal error of the matrix caller should ensure the matrix is symmetric and the index is in ...
void makePrivateStore()
Create a new (empty) private store for this object.
Eigen::Matrix< double, 3, 1 > Vector3D
double getMinChi2ToAnyPV(xAOD::BPhysHelper &vtx, const xAOD::VertexContainer *pvContainer, const std::vector< int > &pvtypes, const int minNTracksInPV, const int mode, const xAOD::BPhysHelper::pv_type &pvAssocType, BasedInvCache &cache) const
Determine minimum log chi2 of signal muon tracks w.r.t.
std::string m_pvContainerName
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
bool m_adjustToMuonKinematics
double getTrackPVChi2(const xAOD::TrackParticle &track, const Amg::Vector3D &pos, BasedInvCache &cache) const
Calculate log chi2 value of a track w.r.t.
Class describing a Vertex.
TrackBag getIdTracksForMuons(MuonBag &muons) const
Obtain a set of ID tracks for a set of muons.
#define ATH_MSG_WARNING(x)
std::pair< TrackBag, int > getTracksWithMuons(xAOD::BPhysHelper &vtx, BasedInvCache &) const
Obtain a set of tracks with muon track information if available.
int nPrecedingVertices()
: Links to preceding vertices
const xAOD::Vertex * pv(const pv_type vertexType=BPhysHelper::PV_MIN_A0)
Get the refitted collision vertex of type pv_type.
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
std::string m_vertexContainerName
Class describing a TrackParticle.
const std::vector< const xAOD::Muon * > & muons()
Returns linked muons.
ToolHandle< Reco::ITrackToVertex > m_trackToVertexTool
constexpr int pow(int base, int exp) noexcept
float theta() const
Returns the parameter, which has range 0 to .
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
std::pair< double, double > getMuCalcMass(xAOD::BPhysHelper &vtx, const std::vector< double > &trkMasses, int nMuRequested, BasedInvCache &cache) const
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
std::string m_branchPrefix