ATLAS Offline Software
InDetBeamSpotFinder.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 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 "InDetBeamSpotFinder/IInDetBeamSpotTool.h" //for BeamSpot::Event
17 // #include "InDetBeamSpotVertex.h"
18 // #include "InDetBeamSpotRooFit.h"
20 #include "xAODEventInfo/EventInfo.h" //typedef, can't fwd declare
21 #include "xAODTracking/VertexContainer.h" //typedef, can't fwd declare
22 #include "xAODTracking/TrackingPrimitives.h" //for xAOD::VxType
23 // #include "xAODTracking/Vertex.h"
27 #include "BeamSpotID.h"
28 #include <string>
29 #include <vector>
30 #include <map>
31 
32 class ITHistSvc;
33 class IToolSvc;
34 class IInDetBeamSpotTool;
35 class TTree;
36 
37 namespace InDet {
39 
40  public:
41  //Standard constructor and methods
42  InDetBeamSpotFinder (const std::string& name, ISvcLocator* pSvcLocator);
43  virtual StatusCode initialize() override;
44  virtual StatusCode execute() override;
45  virtual StatusCode finalize() override;
46 
47  private:
48  //Reorganize and clean up this section
50  ToolHandleArray<IInDetBeamSpotTool> m_beamSpotToolList;
51 
53  {this, "BunchCrossingCondDataKey", "BunchCrossingData" ,"SG Key of BunchCrossing CDO"};
54 
56  {this, "EvtInfo", "EventInfo", "EventInfo name"};
58  {this, "VertexContainer", "PrimaryVertices", "Vertex container name"};
59 
60  //Beamspot sorting options
61  unsigned int m_maxRunsPerFit;
62  unsigned int m_maxEventsPerFit;
63  unsigned int m_maxLBsPerFit;
64  //Event Selection
65  std::vector<unsigned int> m_BCIDsToAccept;
66  //Job Options
68  std::string m_beamSpotNtupleName;
69  //Initialize some pointers
70  ITHistSvc * m_thistSvc=0;
71  TTree * m_root_bs=0;
72  TTree * m_root_vrt=0;
73 
75  int pileup{}, bcid{}, defectWord{}, fill{}, lbEnd{}, lbStart{};
76  int nEvents{}, nValid{}, nVtxAll{}, nVtxPrim{};
77  int run{}, separation{}, status{}, timeEnd{}, timeStart{}, runEnd{};
78  std::map<std::string,double>paramMap{};
79  std::map<std::string,double>covMap{};
80  };
81 
83  double x{},y{},z{},vxx{},vxy{},vyy{},vzz{};
85  unsigned int run{}, lb{}, bcid{}, pileup{}, nTracks{};
86  unsigned long long eventNumber{}, eventTime{}, eventTime_NS{};
87  bool passed{}, valid{};
88  };
89 
93 
94  std::string m_vertexTreeName;
95  std::vector<BeamSpot::Event> m_eventList;
96  std::map< BeamSpot::ID, std::vector<BeamSpot::Event> > m_eventMap;
97  std::vector<std::vector<BeamSpot::Event>> m_sortedEventList;
98  std::vector<std::vector<BeamSpot::VrtHolder>> m_sortedVertices;
99 
100  bool passEventSelection(const xAOD::EventInfo &);
103  void writeToBeamSpotTree(const IInDetBeamSpotTool *bs, std::vector<BeamSpot::Event> &, std::vector<BeamSpot::VrtHolder> &);
104  void sortEvents();
108  bool iequals(const std::string &, const std::string &);
109  int min_lb( std::vector<BeamSpot::Event> & );
110  int max_lb( std::vector<BeamSpot::Event> & );
111  int min_run( std::vector<BeamSpot::Event> & );
112  int max_run( std::vector<BeamSpot::Event> & );
113 
114  void convertVtxTypeNames();
115 
116  // Parameters for vertex selection criteria
117  int m_minTrackNum{}; //min Tracks in a vertex to be added
118  int m_maxTrackNum{}; //max Tracks in a vertex to be added
119  double m_maxChi2Vertex{}; //maxChi2 of vertex
120  double m_maxTransverseError{}; // max transverse vertex resolution
121  double m_maxAbsCorrelXY{}; //max absolute XY correlation of a vertex to be added
122  double m_minVtxProb{}; // probability cut on chi2/ndf
123  unsigned int m_minVertexNum{}; //min vertex count for solution
124 
125  std::vector<std::string> m_vertexTypeNames{}; //names of vertexTypes
126  std::vector<xAOD::VxType::VertexType> m_vertexTypes{};
127 
128  IInDetBeamSpotTool * cloneTool( int );
129  bool passVertexSelection(const xAOD::Vertex * );
130  //For forcing a specific run number
131 
132  // bool m_groupFitsByBCID; // each bcid is fitted separately
133  bool m_useFilledBCIDsOnly{}; // Only use filled BCIDs not empty ones (data)
134  std::string m_fitSortingKey{};
135 
137  //std::map<unsigned int,long> m_nEvents;
138  //std::map<BeamSpot::ID, long> m_nEvents;
139 
140  unsigned long m_secondsPerFit{};
141  };
142 }//end namespace
143 
144 #endif
145 
InDet::InDetBeamSpotFinder::m_writeVertexNtuple
bool m_writeVertexNtuple
Definition: InDetBeamSpotFinder.h:67
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:75
InDet::InDetBeamSpotFinder::m_vertexTypes
std::vector< xAOD::VxType::VertexType > m_vertexTypes
Definition: InDetBeamSpotFinder.h:126
InDet::InDetBeamSpotFinder::convertVtxTypeNames
void convertVtxTypeNames()
Definition: InDetBeamSpotFinder.cxx:208
InDet::InDetBeamSpotFinder::cloneTool
IInDetBeamSpotTool * cloneTool(int)
Definition: InDetBeamSpotFinder.cxx:443
InDet::InDetBeamSpotFinder::vertexNtuple_struct::eventNumber
unsigned long long eventNumber
Definition: InDetBeamSpotFinder.h:86
InDet::InDetBeamSpotFinder
Definition: InDetBeamSpotFinder.h:38
InDet::InDetBeamSpotFinder::m_BCIDsToAccept
std::vector< unsigned int > m_BCIDsToAccept
Definition: InDetBeamSpotFinder.h:65
InDet::InDetBeamSpotFinder::initialize
virtual StatusCode initialize() override
Definition: InDetBeamSpotFinder.cxx:57
InDet::InDetBeamSpotFinder::min_run
int min_run(std::vector< BeamSpot::Event > &)
Definition: InDetBeamSpotFinder.cxx:459
InDet::InDetBeamSpotFinder::vertexNtuple_struct::vxx
double vxx
Definition: InDetBeamSpotFinder.h:83
InDet::InDetBeamSpotFinder::max_lb
int max_lb(std::vector< BeamSpot::Event > &)
Definition: InDetBeamSpotFinder.cxx:454
InDet::InDetBeamSpotFinder::m_useFilledBCIDsOnly
bool m_useFilledBCIDsOnly
Definition: InDetBeamSpotFinder.h:133
InDet::InDetBeamSpotFinder::m_vertexContainer
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexContainer
Definition: InDetBeamSpotFinder.h:58
InDet
DUMMY Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
InDet::InDetBeamSpotFinder::m_maxLBsPerFit
unsigned int m_maxLBsPerFit
Definition: InDetBeamSpotFinder.h:63
InDet::InDetBeamSpotFinder::passEventSelection
bool passEventSelection(const xAOD::EventInfo &)
Definition: InDetBeamSpotFinder.cxx:228
BeamSpotID.h
IInDetBeamSpotTool.h
InDet::InDetBeamSpotFinder::m_thistSvc
ITHistSvc * m_thistSvc
Definition: InDetBeamSpotFinder.h:70
InDet::InDetBeamSpotFinder::vertexNtuple_struct::pileup
unsigned int pileup
Definition: InDetBeamSpotFinder.h:85
InDet::InDetBeamSpotFinder::m_bcDataKey
SG::ReadCondHandleKey< BunchCrossingCondData > m_bcDataKey
Definition: InDetBeamSpotFinder.h:53
InDet::InDetBeamSpotFinder::vertexNtuple_struct::vzz
double vzz
Definition: InDetBeamSpotFinder.h:83
SG::ReadHandleKey< xAOD::EventInfo >
InDet::InDetBeamSpotFinder::m_maxEventsPerFit
unsigned int m_maxEventsPerFit
Definition: InDetBeamSpotFinder.h:62
InDet::InDetBeamSpotFinder::vertexNtuple_struct::z
double z
Definition: InDetBeamSpotFinder.h:83
InDet::InDetBeamSpotFinder::m_eventInfo
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfo
Definition: InDetBeamSpotFinder.h:56
xAOD::VxType::VertexType
VertexType
Vertex types.
Definition: TrackingPrimitives.h:569
AthAlgorithm.h
InDet::InDetBeamSpotFinder::m_writeAllVertices
bool m_writeAllVertices
Definition: InDetBeamSpotFinder.h:136
InDet::InDetBeamSpotFinder::finalize
virtual StatusCode finalize() override
Definition: InDetBeamSpotFinder.cxx:96
InDet::InDetBeamSpotFinder::sortEvents
void sortEvents()
Definition: InDetBeamSpotFinder.cxx:157
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::timeEnd
int timeEnd
Definition: InDetBeamSpotFinder.h:77
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::runEnd
int runEnd
Definition: InDetBeamSpotFinder.h:77
InDet::InDetBeamSpotFinder::m_sortedVertices
std::vector< std::vector< BeamSpot::VrtHolder > > m_sortedVertices
Definition: InDetBeamSpotFinder.h:98
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::nVtxAll
int nVtxAll
Definition: InDetBeamSpotFinder.h:76
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::nEvents
int nEvents
Definition: InDetBeamSpotFinder.h:76
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::covMap
std::map< std::string, double > covMap
Definition: InDetBeamSpotFinder.h:79
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:85
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::paramMap
std::map< std::string, double > paramMap
Definition: InDetBeamSpotFinder.h:78
InDet::InDetBeamSpotFinder::vertexNtuple_struct::passed
bool passed
Definition: InDetBeamSpotFinder.h:87
InDet::InDetBeamSpotFinder::min_lb
int min_lb(std::vector< BeamSpot::Event > &)
Definition: InDetBeamSpotFinder.cxx:449
InDet::InDetBeamSpotFinder::m_root_bs
TTree * m_root_bs
Definition: InDetBeamSpotFinder.h:71
InDet::InDetBeamSpotFinder::setupBeamSpotTree
StatusCode setupBeamSpotTree()
Definition: InDetBeamSpotFinder.cxx:304
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::fill
int fill
Definition: InDetBeamSpotFinder.h:75
InDet::InDetBeamSpotFinder::m_maxChi2Vertex
double m_maxChi2Vertex
Definition: InDetBeamSpotFinder.h:119
InDet::InDetBeamSpotFinder::m_eventList
std::vector< BeamSpot::Event > m_eventList
Definition: InDetBeamSpotFinder.h:95
InDet::InDetBeamSpotFinder::m_root_vtx
vertexNtuple_struct m_root_vtx
Definition: InDetBeamSpotFinder.h:91
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:94
InDet::InDetBeamSpotFinder::passVertexSelection
bool passVertexSelection(const xAOD::Vertex *)
Definition: InDetBeamSpotFinder.cxx:240
InDet::InDetBeamSpotFinder::vertexNtuple_struct::bcid
unsigned int bcid
Definition: InDetBeamSpotFinder.h:85
InDet::InDetBeamSpotFinder::performFits
StatusCode performFits()
Definition: InDetBeamSpotFinder.cxx:261
InDet::InDetBeamSpotFinder::writeToVertexTree
void writeToVertexTree(BeamSpot::Event &, BeamSpot::VrtHolder &)
Definition: InDetBeamSpotFinder.cxx:356
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
InDet::InDetBeamSpotFinder::m_sortedEventList
std::vector< std::vector< BeamSpot::Event > > m_sortedEventList
Definition: InDetBeamSpotFinder.h:97
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::defectWord
int defectWord
Definition: InDetBeamSpotFinder.h:75
InDet::InDetBeamSpotFinder::vertexNtuple_struct::y
double y
Definition: InDetBeamSpotFinder.h:83
AthAlgorithm
Definition: AthAlgorithm.h:47
InDet::InDetBeamSpotFinder::m_beamSpotNtuple
beamSpotNtuple_struct m_beamSpotNtuple
Definition: InDetBeamSpotFinder.h:90
InDet::InDetBeamSpotFinder::m_maxRunsPerFit
unsigned int m_maxRunsPerFit
Definition: InDetBeamSpotFinder.h:61
InDet::InDetBeamSpotFinder::readEvent
BeamSpot::Event readEvent(const xAOD::EventInfo &, const xAOD::VertexContainer &)
Definition: InDetBeamSpotFinder.cxx:103
ReadCondHandleKey.h
InDet::InDetBeamSpotFinder::writeToBeamSpotTree
void writeToBeamSpotTree(const IInDetBeamSpotTool *bs, std::vector< BeamSpot::Event > &, std::vector< BeamSpot::VrtHolder > &)
Definition: InDetBeamSpotFinder.cxx:389
InDet::InDetBeamSpotFinder::vertexNtuple_struct::vxy
double vxy
Definition: InDetBeamSpotFinder.h:83
InDet::InDetBeamSpotFinder::m_fitSortingKey
std::string m_fitSortingKey
Definition: InDetBeamSpotFinder.h:134
InDet::InDetBeamSpotFinder::m_eventMap
std::map< BeamSpot::ID, std::vector< BeamSpot::Event > > m_eventMap
Definition: InDetBeamSpotFinder.h:96
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::lbEnd
int lbEnd
Definition: InDetBeamSpotFinder.h:75
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
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:76
InDet::InDetBeamSpotFinder::InDetBeamSpotFinder
InDetBeamSpotFinder(const std::string &name, ISvcLocator *pSvcLocator)
Definition: InDetBeamSpotFinder.cxx:31
BeamSpotStatusCode.h
SG::ReadCondHandleKey< BunchCrossingCondData >
InDet::InDetBeamSpotFinder::m_root_vrt
TTree * m_root_vrt
Definition: InDetBeamSpotFinder.h:72
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::nValid
int nValid
Definition: InDetBeamSpotFinder.h:76
InDet::InDetBeamSpotFinder::m_maxTrackNum
int m_maxTrackNum
Definition: InDetBeamSpotFinder.h:118
InDet::InDetBeamSpotFinder::vertexNtuple_struct::nTracks
unsigned int nTracks
Definition: InDetBeamSpotFinder.h:85
VertexContainer.h
InDet::InDetBeamSpotFinder::m_maxAbsCorrelXY
double m_maxAbsCorrelXY
Definition: InDetBeamSpotFinder.h:121
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:83
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct
Definition: InDetBeamSpotFinder.h:74
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::status
int status
Definition: InDetBeamSpotFinder.h:77
InDet::InDetBeamSpotFinder::m_beamSpotToolList
ToolHandleArray< IInDetBeamSpotTool > m_beamSpotToolList
Definition: InDetBeamSpotFinder.h:50
InDet::IInDetBeamSpotTool
Definition: IInDetBeamSpotTool.h:45
InDet::InDetBeamSpotFinder::m_minVertexNum
unsigned int m_minVertexNum
Definition: InDetBeamSpotFinder.h:123
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::timeStart
int timeStart
Definition: InDetBeamSpotFinder.h:77
InDet::InDetBeamSpotFinder::execute
virtual StatusCode execute() override
Definition: InDetBeamSpotFinder.cxx:79
InDet::InDetBeamSpotFinder::max_run
int max_run(std::vector< BeamSpot::Event > &)
Definition: InDetBeamSpotFinder.cxx:464
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::bcid
int bcid
Definition: InDetBeamSpotFinder.h:75
InDet::InDetBeamSpotFinder::vertexNtuple_struct::eventTime
unsigned long long eventTime
Definition: InDetBeamSpotFinder.h:86
InDet::InDetBeamSpotFinder::setupVertexTree
StatusCode setupVertexTree()
Definition: InDetBeamSpotFinder.cxx:253
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:86
InDet::InDetBeamSpotFinder::vertexNtuple_struct::vyy
double vyy
Definition: InDetBeamSpotFinder.h:83
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::separation
int separation
Definition: InDetBeamSpotFinder.h:77
InDet::InDetBeamSpotFinder::m_toolSvc
ServiceHandle< IToolSvc > m_toolSvc
Definition: InDetBeamSpotFinder.h:49
InDet::InDetBeamSpotFinder::vertexNtuple_struct::vType
xAOD::VxType::VertexType vType
Definition: InDetBeamSpotFinder.h:84
InDet::InDetBeamSpotFinder::vertexNtuple_struct::valid
bool valid
Definition: InDetBeamSpotFinder.h:87
InDet::InDetBeamSpotFinder::m_minTrackNum
int m_minTrackNum
Definition: InDetBeamSpotFinder.h:117
InDet::InDetBeamSpotFinder::m_minVtxProb
double m_minVtxProb
Definition: InDetBeamSpotFinder.h:122
InDet::InDetBeamSpotFinder::vertexNtuple_struct
Definition: InDetBeamSpotFinder.h:82
TrackingPrimitives.h
InDet::InDetBeamSpotFinder::beamSpotNtuple_struct::pileup
int pileup
Definition: InDetBeamSpotFinder.h:75
InDet::InDetBeamSpotFinder::m_BeamStatusCode
BeamSpotStatusCode m_BeamStatusCode
Definition: InDetBeamSpotFinder.h:92
InDet::InDetBeamSpotFinder::m_secondsPerFit
unsigned long m_secondsPerFit
Definition: InDetBeamSpotFinder.h:140
InDet::InDetBeamSpotFinder::m_vertexTypeNames
std::vector< std::string > m_vertexTypeNames
Definition: InDetBeamSpotFinder.h:125
InDet::InDetBeamSpotFinder::m_maxTransverseError
double m_maxTransverseError
Definition: InDetBeamSpotFinder.h:120
ServiceHandle< IToolSvc >
InDet::InDetBeamSpotFinder::m_beamSpotNtupleName
std::string m_beamSpotNtupleName
Definition: InDetBeamSpotFinder.h:68
InDet::InDetBeamSpotFinder::iequals
bool iequals(const std::string &, const std::string &)
Definition: InDetBeamSpotFinder.cxx:378