|  | ATLAS Offline Software
    | 
 
 
 
Go to the documentation of this file.
   20 #include "TLorentzVector.h" 
   33                        const IInterface* 
p) : 
 
   58       ATH_MSG_ERROR(
"No SG name provided for the output of ZeeVertexRefittingTool!");
 
   59       return StatusCode::FAILURE;
 
   62     return StatusCode::SUCCESS;
 
   68     return StatusCode::SUCCESS;
 
   77       bool skipSample = 
true;
 
   84       if (skipSample) 
return StatusCode::SUCCESS;
 
   88     if (evtStore()->contains<xAOD::VertexContainer>(
m_refitpvKey.key())) {
 
   89       ATH_MSG_ERROR(
"Tool is attempting to write a StoreGate key " << 
m_refitpvKey.key() << 
" which already exists. Please use a different key");
 
   90       return StatusCode::FAILURE;
 
   98     refittedPVContainer->setStore( refittedPVAuxContainer );
 
  102                                              std::unique_ptr< xAOD::VertexAuxContainer >(refittedPVAuxContainer)));
 
  105     for ( 
const auto *
v : *pv_cont ) {
 
  112       return StatusCode::SUCCESS;
 
  120     std::vector< std::vector<unsigned int> > eepairs;
 
  125     for (
auto pair : eepairs) {
 
  126       std::vector<const xAOD::TrackParticle*> tps = { 
 
  131       TLorentzVector 
v0, v1, egamVec;
 
  132       if(
electrons->at(pair[0])->caloCluster())
 
  134            v0.SetPtEtaPhiM(
electrons->at(pair[0])->e()/cosh(
electrons->at(pair[0])->caloCluster()->etaBE(2)),
 
  135            electrons->at(pair[0])->caloCluster()->etaBE(2),
 
  136            electrons->at(pair[0])->caloCluster()->phiBE(2),
 
  140       if(
electrons->at(pair[1])->caloCluster())
 
  142            v1.SetPtEtaPhiM(
electrons->at(pair[1])->e()/cosh(
electrons->at(pair[1])->caloCluster()->etaBE(2)),
 
  143            electrons->at(pair[1])->caloCluster()->etaBE(2),
 
  144            electrons->at(pair[1])->caloCluster()->phiBE(2),
 
  150       ATH_MSG_DEBUG(
"Refitting PV for e tracks: " << tps[0] << 
" " << tps[1]);      
 
  159                 if(ipv !=0 ) refittedPVContainer->
push_back(nv);
 
  169             float vert_dphi = (fabs(vtxmom.DeltaPhi(egamVec)));
 
  171             vertices_sumPt(*
v) = vert_sumpt;
 
  172             vertices_sumPt2(*
v) = vert_sumpt2;
 
  173             vertices_dPhi(*
v) = vert_dphi;
 
  183           std::vector<ElementLink<xAOD::TrackParticleContainer> > electronTrackLinks = {
 
  184             electrons->at(pair[0])->trackParticleLink(),
 
  185             electrons->at(pair[1])->trackParticleLink() 
 
  187           electronTrackLinksDecor(*pv_ref) = electronTrackLinks;
 
  189           ATH_MSG_DEBUG(
"Electrons from pair not used in the refitting ");
 
  199     return StatusCode::SUCCESS;
 
  204     if (
particles->size()<2) 
return StatusCode::SUCCESS;
 
  207     std::vector<int> isSelected = m_parser->evaluateAsVector();
 
  208     unsigned int nEntries = isSelected.size();
 
  211     if (
nEntries==0) 
return StatusCode::SUCCESS; 
 
  216       return StatusCode::FAILURE;
 
  221       if (isSelected[
i]!=1) 
continue;     
 
  224       for (
unsigned int j=
i+1; j<
nEntries; ++j) {
 
  225         if (isSelected[j]!=1) 
continue; 
 
  229         if (qi*qj>=0) 
continue;
 
  235         ZeePairs.push_back( {
i, j} );
 
  238     return StatusCode::SUCCESS; 
 
  
float getVertexSumPt(const xAOD::Vertex *vertex, int power=1, bool useAux=true)
Loop over track particles associated with vertex and return scalar sum of pT^power in GeV (from auxda...
size_t nTrackParticles() const
Get the number of tracks associated with this vertex.
Temporary container used until we have I/O for AuxStoreInternal.
Vertex_v1 Vertex
Define the latest version of the vertex class.
@ IS_SIMULATION
true: simulation, false: data
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
uint32_t mcChannelNumber() const
The MC generator's channel number.
Helper class to provide type-safe access to aux data.
StatusCode recordNonConst(std::unique_ptr< T > data)
Record a non-const object to the store.
VertexAuxContainer_v1 VertexAuxContainer
Definition of the current jet auxiliary container.
::StatusCode StatusCode
StatusCode definition for legacy code.
#define CHECK(...)
Evaluate an expression and check for errors.
float z() const
Returns the z position.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
TLorentzVector getVertexMomentum(const xAOD::Vertex *vertex, bool useAux=true, const std::string &derivationPrefix="")
Return vector sum of tracks associated with vertex (from auxdata if available and useAux = true)
value_type push_back(value_type pElem)
Add an element to the end of the collection.
void makePrivateStore()
Create a new (empty) private store for this object.
Class describing a Vertex.
const xAOD::TrackParticle * getOriginalTrackParticle(const xAOD::Electron *el)
Helper function for getting the "Original" Track Particle (i.e before GSF) via the electron.
size_type size() const noexcept
Returns the number of elements in the collection.
bool eventType(EventType type) const
Check for one particular bitmask value.