ATLAS Offline Software
InDetBeamSpotFinder.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef INDET_INDETBEAMSPOTFINDER_H
6 #define INDET_INDETBEAMSPOTFINDER_H
7 // Author: Brian Amadio
9 // Contact: btamadio@lbl.gov
10 // Main Algorithm: Determine the Beamspot position
12 
14 #include "GaudiKernel/ServiceHandle.h"
15 #include "GaudiKernel/ToolHandle.h"
16 #include "GaudiKernel/ITHistSvc.h"
17 #include "InDetBeamSpotFinder/IInDetBeamSpotTool.h" //for BeamSpot::Event
19 #include "xAODEventInfo/EventInfo.h" //typedef, can't fwd declare
20 #include "xAODTracking/VertexContainer.h" //typedef, can't fwd declare
21 #include "xAODTracking/TrackingPrimitives.h" //for xAOD::VxType
25 #include "BeamSpotID.h"
26 #include <string>
27 #include <vector>
28 #include <map>
29 
30 class IToolSvc;
31 class IInDetBeamSpotTool;
32 class TTree;
33 
34 namespace InDet {
36 
37  public:
38  //Standard constructor and methods
39  InDetBeamSpotFinder (const std::string& name, ISvcLocator* pSvcLocator);
40  virtual StatusCode initialize() override;
41  virtual StatusCode execute() override;
42  virtual StatusCode finalize() override;
43 
44  private:
45  //Reorganize and clean up this section
46  ServiceHandle<IToolSvc> m_toolSvc{this, "ToolSvc", "ToolSvc"};
47  ServiceHandle<ITHistSvc> m_thistSvc{this, "THistSvc", "THistSvc"};
48  ToolHandleArray<IInDetBeamSpotTool> m_beamSpotToolList;
49 
51  {this, "BunchCrossingCondDataKey", "BunchCrossingData" ,"SG Key of BunchCrossing CDO"};
52 
54  {this, "EvtInfo", "EventInfo", "EventInfo name"};
56  {this, "VertexContainer", "PrimaryVertices", "Vertex container name"};
57 
58  //Beamspot sorting options
59  unsigned int m_maxRunsPerFit;
60  unsigned int m_maxEventsPerFit;
61  unsigned int m_maxLBsPerFit;
62  //Event Selection
63  std::vector<unsigned int> m_BCIDsToAccept;
64  //Job Options
66  std::string m_beamSpotNtupleName;
67  //Initialize some pointers
68  TTree * m_root_bs=0;
69  TTree * m_root_vrt=0;
70 
72  int pileup{}, bcid{}, defectWord{}, fill{}, lbEnd{}, lbStart{};
73  int nEvents{}, nValid{}, nVtxAll{}, nVtxPrim{};
74  int run{}, separation{}, status{}, timeEnd{}, timeStart{}, runEnd{};
75  std::map<std::string,double>paramMap{};
76  std::map<std::string,double>covMap{};
77  };
78 
80  double x{},y{},z{},vxx{},vxy{},vyy{},vzz{};
82  unsigned int run{}, lb{}, bcid{}, pileup{}, nTracks{};
83  unsigned long long eventNumber{}, eventTime{}, eventTime_NS{};
84  bool passed{}, valid{};
85  };
86 
90 
91  std::string m_vertexTreeName;
92  std::vector<BeamSpot::Event> m_eventList;
93  std::map< BeamSpot::ID, std::vector<BeamSpot::Event> > m_eventMap;
94  std::vector<std::vector<BeamSpot::Event>> m_sortedEventList;
95  std::vector<std::vector<BeamSpot::VrtHolder>> m_sortedVertices;
96 
97  bool passEventSelection(const xAOD::EventInfo &);
100  void writeToBeamSpotTree(const IInDetBeamSpotTool *bs, std::vector<BeamSpot::Event> &, std::vector<BeamSpot::VrtHolder> &);
101  void sortEvents();
105  bool iequals(const std::string &, const std::string &);
106  int min_lb( std::vector<BeamSpot::Event> & );
107  int max_lb( std::vector<BeamSpot::Event> & );
108  int min_run( std::vector<BeamSpot::Event> & );
109  int max_run( std::vector<BeamSpot::Event> & );
110 
111  void convertVtxTypeNames();
112 
113  // Parameters for vertex selection criteria
114  int m_minTrackNum{}; //min Tracks in a vertex to be added
115  int m_maxTrackNum{}; //max Tracks in a vertex to be added
116  double m_maxChi2Vertex{}; //maxChi2 of vertex
117  double m_maxTransverseError{}; // max transverse vertex resolution
118  double m_maxAbsCorrelXY{}; //max absolute XY correlation of a vertex to be added
119  double m_minVtxProb{}; // probability cut on chi2/ndf
120  unsigned int m_minVertexNum{}; //min vertex count for solution
121 
122  std::vector<std::string> m_vertexTypeNames{}; //names of vertexTypes
123  std::vector<xAOD::VxType::VertexType> m_vertexTypes{};
124 
125  IInDetBeamSpotTool * cloneTool( int );
126  bool passVertexSelection(const xAOD::Vertex * );
127  //For forcing a specific run number
128 
129  // bool m_groupFitsByBCID; // each bcid is fitted separately
130  bool m_useFilledBCIDsOnly{}; // Only use filled BCIDs not empty ones (data)
131  std::string m_fitSortingKey{};
132 
134  //std::map<unsigned int,long> m_nEvents;
135  //std::map<BeamSpot::ID, long> m_nEvents;
136 
137  unsigned long m_secondsPerFit{};
138  };
139 }//end namespace
140 
141 #endif
142 
InDet::InDetBeamSpotFinder::m_writeVertexNtuple
bool m_writeVertexNtuple
Definition: InDetBeamSpotFinder.h:65
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::lbStart
int lbStart
Definition: InDetBeamSpotFinder.h:72
InDet::InDetBeamSpotFinder::m_vertexTypes
std::vector< xAOD::VxType::VertexType > m_vertexTypes
Definition: InDetBeamSpotFinder.h:123
InDet::InDetBeamSpotFinder::convertVtxTypeNames
void convertVtxTypeNames()
Definition: InDetBeamSpotFinder.cxx:207
InDet::InDetBeamSpotFinder::cloneTool
IInDetBeamSpotTool * cloneTool(int)
Definition: InDetBeamSpotFinder.cxx:446
InDet::InDetBeamSpotFinder::vertexNtuple_struct::eventNumber
unsigned long long eventNumber
Definition: InDetBeamSpotFinder.h:83
InDet::InDetBeamSpotFinder
Definition: InDetBeamSpotFinder.h:35
InDet::InDetBeamSpotFinder::m_BCIDsToAccept
std::vector< unsigned int > m_BCIDsToAccept
Definition: InDetBeamSpotFinder.h:63
InDet::InDetBeamSpotFinder::initialize
virtual StatusCode initialize() override
Definition: InDetBeamSpotFinder.cxx:54
InDet::InDetBeamSpotFinder::min_run
int min_run(std::vector< BeamSpot::Event > &)
Definition: InDetBeamSpotFinder.cxx:462
InDet::InDetBeamSpotFinder::vertexNtuple_struct::vxx
double vxx
Definition: InDetBeamSpotFinder.h:80
InDet::InDetBeamSpotFinder::max_lb
int max_lb(std::vector< BeamSpot::Event > &)
Definition: InDetBeamSpotFinder.cxx:457
InDet::InDetBeamSpotFinder::m_useFilledBCIDsOnly
bool m_useFilledBCIDsOnly
Definition: InDetBeamSpotFinder.h:130
InDet::InDetBeamSpotFinder::m_vertexContainer
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexContainer
Definition: InDetBeamSpotFinder.h:56
InDet
Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
InDet::InDetBeamSpotFinder::m_maxLBsPerFit
unsigned int m_maxLBsPerFit
Definition: InDetBeamSpotFinder.h:61
InDet::InDetBeamSpotFinder::passEventSelection
bool passEventSelection(const xAOD::EventInfo &)
Definition: InDetBeamSpotFinder.cxx:227
BeamSpotID.h
IInDetBeamSpotTool.h
InDet::InDetBeamSpotFinder::vertexNtuple_struct::pileup
unsigned int pileup
Definition: InDetBeamSpotFinder.h:82
InDet::InDetBeamSpotFinder::m_bcDataKey
SG::ReadCondHandleKey< BunchCrossingCondData > m_bcDataKey
Definition: InDetBeamSpotFinder.h:51
InDet::InDetBeamSpotFinder::vertexNtuple_struct::vzz
double vzz
Definition: InDetBeamSpotFinder.h:80
SG::ReadHandleKey< xAOD::EventInfo >
InDet::InDetBeamSpotFinder::m_maxEventsPerFit
unsigned int m_maxEventsPerFit
Definition: InDetBeamSpotFinder.h:60
InDet::InDetBeamSpotFinder::vertexNtuple_struct::z
double z
Definition: InDetBeamSpotFinder.h:80
InDet::InDetBeamSpotFinder::m_eventInfo
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfo
Definition: InDetBeamSpotFinder.h:54
xAOD::VxType::VertexType
VertexType
Vertex types.
Definition: TrackingPrimitives.h:570
AthAlgorithm.h
InDet::InDetBeamSpotFinder::m_writeAllVertices
bool m_writeAllVertices
Definition: InDetBeamSpotFinder.h:133
InDet::InDetBeamSpotFinder::m_thistSvc
ServiceHandle< ITHistSvc > m_thistSvc
Definition: InDetBeamSpotFinder.h:47
InDet::InDetBeamSpotFinder::finalize
virtual StatusCode finalize() override
Definition: InDetBeamSpotFinder.cxx:93
InDet::InDetBeamSpotFinder::sortEvents
void sortEvents()
Definition: InDetBeamSpotFinder.cxx:156
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::timeEnd
int timeEnd
Definition: InDetBeamSpotFinder.h:74
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::runEnd
int runEnd
Definition: InDetBeamSpotFinder.h:74
InDet::InDetBeamSpotFinder::m_sortedVertices
std::vector< std::vector< BeamSpot::VrtHolder > > m_sortedVertices
Definition: InDetBeamSpotFinder.h:95
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::nVtxAll
int nVtxAll
Definition: InDetBeamSpotFinder.h:73
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::nEvents
int nEvents
Definition: InDetBeamSpotFinder.h:73
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::covMap
std::map< std::string, double > covMap
Definition: InDetBeamSpotFinder.h:76
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
InDet::InDetBeamSpotFinder::vertexNtuple_struct::lb
unsigned int lb
Definition: InDetBeamSpotFinder.h:82
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::paramMap
std::map< std::string, double > paramMap
Definition: InDetBeamSpotFinder.h:75
InDet::InDetBeamSpotFinder::vertexNtuple_struct::passed
bool passed
Definition: InDetBeamSpotFinder.h:84
InDet::InDetBeamSpotFinder::min_lb
int min_lb(std::vector< BeamSpot::Event > &)
Definition: InDetBeamSpotFinder.cxx:452
InDet::InDetBeamSpotFinder::m_root_bs
TTree * m_root_bs
Definition: InDetBeamSpotFinder.h:68
InDet::InDetBeamSpotFinder::setupBeamSpotTree
StatusCode setupBeamSpotTree()
Definition: InDetBeamSpotFinder.cxx:307
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::fill
int fill
Definition: InDetBeamSpotFinder.h:72
InDet::InDetBeamSpotFinder::m_maxChi2Vertex
double m_maxChi2Vertex
Definition: InDetBeamSpotFinder.h:116
InDet::InDetBeamSpotFinder::m_eventList
std::vector< BeamSpot::Event > m_eventList
Definition: InDetBeamSpotFinder.h:92
InDet::InDetBeamSpotFinder::m_root_vtx
vertexNtuple_struct m_root_vtx
Definition: InDetBeamSpotFinder.h:88
run
Definition: run.py:1
InDet::BeamSpotStatusCode
Class to hold the definition and accessor methods for the beamspot status-word.
Definition: BeamSpotStatusCode.h:19
InDet::InDetBeamSpotFinder::m_vertexTreeName
std::string m_vertexTreeName
Definition: InDetBeamSpotFinder.h:91
InDet::InDetBeamSpotFinder::passVertexSelection
bool passVertexSelection(const xAOD::Vertex *)
Definition: InDetBeamSpotFinder.cxx:239
InDet::InDetBeamSpotFinder::vertexNtuple_struct::bcid
unsigned int bcid
Definition: InDetBeamSpotFinder.h:82
InDet::InDetBeamSpotFinder::performFits
StatusCode performFits()
Definition: InDetBeamSpotFinder.cxx:260
InDet::InDetBeamSpotFinder::writeToVertexTree
void writeToVertexTree(BeamSpot::Event &, BeamSpot::VrtHolder &)
Definition: InDetBeamSpotFinder.cxx:359
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
InDet::InDetBeamSpotFinder::m_sortedEventList
std::vector< std::vector< BeamSpot::Event > > m_sortedEventList
Definition: InDetBeamSpotFinder.h:94
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::defectWord
int defectWord
Definition: InDetBeamSpotFinder.h:72
InDet::InDetBeamSpotFinder::vertexNtuple_struct::y
double y
Definition: InDetBeamSpotFinder.h:80
AthAlgorithm
Definition: AthAlgorithm.h:47
InDet::InDetBeamSpotFinder::m_beamSpotNtuple
beamSpotNtuple_struct m_beamSpotNtuple
Definition: InDetBeamSpotFinder.h:87
InDet::InDetBeamSpotFinder::m_maxRunsPerFit
unsigned int m_maxRunsPerFit
Definition: InDetBeamSpotFinder.h:59
InDet::InDetBeamSpotFinder::readEvent
BeamSpot::Event readEvent(const xAOD::EventInfo &, const xAOD::VertexContainer &)
Definition: InDetBeamSpotFinder.cxx:100
ReadCondHandleKey.h
InDet::InDetBeamSpotFinder::writeToBeamSpotTree
void writeToBeamSpotTree(const IInDetBeamSpotTool *bs, std::vector< BeamSpot::Event > &, std::vector< BeamSpot::VrtHolder > &)
Definition: InDetBeamSpotFinder.cxx:392
InDet::InDetBeamSpotFinder::vertexNtuple_struct::vxy
double vxy
Definition: InDetBeamSpotFinder.h:80
InDet::InDetBeamSpotFinder::m_fitSortingKey
std::string m_fitSortingKey
Definition: InDetBeamSpotFinder.h:131
InDet::InDetBeamSpotFinder::m_eventMap
std::map< BeamSpot::ID, std::vector< BeamSpot::Event > > m_eventMap
Definition: InDetBeamSpotFinder.h:93
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::lbEnd
int lbEnd
Definition: InDetBeamSpotFinder.h:72
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
EventInfo.h
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::nVtxPrim
int nVtxPrim
Definition: InDetBeamSpotFinder.h:73
InDet::InDetBeamSpotFinder::InDetBeamSpotFinder
InDetBeamSpotFinder(const std::string &name, ISvcLocator *pSvcLocator)
Definition: InDetBeamSpotFinder.cxx:30
BeamSpotStatusCode.h
SG::ReadCondHandleKey< BunchCrossingCondData >
InDet::InDetBeamSpotFinder::m_root_vrt
TTree * m_root_vrt
Definition: InDetBeamSpotFinder.h:69
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::nValid
int nValid
Definition: InDetBeamSpotFinder.h:73
InDet::InDetBeamSpotFinder::m_maxTrackNum
int m_maxTrackNum
Definition: InDetBeamSpotFinder.h:115
InDet::InDetBeamSpotFinder::vertexNtuple_struct::nTracks
unsigned int nTracks
Definition: InDetBeamSpotFinder.h:82
VertexContainer.h
InDet::InDetBeamSpotFinder::m_maxAbsCorrelXY
double m_maxAbsCorrelXY
Definition: InDetBeamSpotFinder.h:118
BeamSpot::Event
Definition: IInDetBeamSpotTool.h:33
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
InDet::InDetBeamSpotFinder::vertexNtuple_struct::x
double x
Definition: InDetBeamSpotFinder.h:80
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct
Definition: InDetBeamSpotFinder.h:71
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::status
int status
Definition: InDetBeamSpotFinder.h:74
InDet::InDetBeamSpotFinder::m_beamSpotToolList
ToolHandleArray< IInDetBeamSpotTool > m_beamSpotToolList
Definition: InDetBeamSpotFinder.h:48
InDet::IInDetBeamSpotTool
Definition: IInDetBeamSpotTool.h:45
InDet::InDetBeamSpotFinder::m_minVertexNum
unsigned int m_minVertexNum
Definition: InDetBeamSpotFinder.h:120
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::timeStart
int timeStart
Definition: InDetBeamSpotFinder.h:74
InDet::InDetBeamSpotFinder::execute
virtual StatusCode execute() override
Definition: InDetBeamSpotFinder.cxx:76
InDet::InDetBeamSpotFinder::max_run
int max_run(std::vector< BeamSpot::Event > &)
Definition: InDetBeamSpotFinder.cxx:467
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::bcid
int bcid
Definition: InDetBeamSpotFinder.h:72
InDet::InDetBeamSpotFinder::vertexNtuple_struct::eventTime
unsigned long long eventTime
Definition: InDetBeamSpotFinder.h:83
InDet::InDetBeamSpotFinder::setupVertexTree
StatusCode setupVertexTree()
Definition: InDetBeamSpotFinder.cxx:252
BeamSpot::VrtHolder
Definition: IInDetBeamSpotTool.h:22
BunchCrossingCondData.h
Replaces the BunchCrossing AlgTool used in run1/2.
InDet::InDetBeamSpotFinder::vertexNtuple_struct::eventTime_NS
unsigned long long eventTime_NS
Definition: InDetBeamSpotFinder.h:83
InDet::InDetBeamSpotFinder::vertexNtuple_struct::vyy
double vyy
Definition: InDetBeamSpotFinder.h:80
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::separation
int separation
Definition: InDetBeamSpotFinder.h:74
InDet::InDetBeamSpotFinder::m_toolSvc
ServiceHandle< IToolSvc > m_toolSvc
Definition: InDetBeamSpotFinder.h:46
InDet::InDetBeamSpotFinder::vertexNtuple_struct::vType
xAOD::VxType::VertexType vType
Definition: InDetBeamSpotFinder.h:81
InDet::InDetBeamSpotFinder::vertexNtuple_struct::valid
bool valid
Definition: InDetBeamSpotFinder.h:84
InDet::InDetBeamSpotFinder::m_minTrackNum
int m_minTrackNum
Definition: InDetBeamSpotFinder.h:114
InDet::InDetBeamSpotFinder::m_minVtxProb
double m_minVtxProb
Definition: InDetBeamSpotFinder.h:119
InDet::InDetBeamSpotFinder::vertexNtuple_struct
Definition: InDetBeamSpotFinder.h:79
TrackingPrimitives.h
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::pileup
int pileup
Definition: InDetBeamSpotFinder.h:72
InDet::InDetBeamSpotFinder::m_BeamStatusCode
BeamSpotStatusCode m_BeamStatusCode
Definition: InDetBeamSpotFinder.h:89
InDet::InDetBeamSpotFinder::m_secondsPerFit
unsigned long m_secondsPerFit
Definition: InDetBeamSpotFinder.h:137
InDet::InDetBeamSpotFinder::m_vertexTypeNames
std::vector< std::string > m_vertexTypeNames
Definition: InDetBeamSpotFinder.h:122
InDet::InDetBeamSpotFinder::m_maxTransverseError
double m_maxTransverseError
Definition: InDetBeamSpotFinder.h:117
ServiceHandle< IToolSvc >
InDet::InDetBeamSpotFinder::m_beamSpotNtupleName
std::string m_beamSpotNtupleName
Definition: InDetBeamSpotFinder.h:66
InDet::InDetBeamSpotFinder::iequals
bool iequals(const std::string &, const std::string &)
Definition: InDetBeamSpotFinder.cxx:381