ATLAS Offline Software
ALFA_LocRec.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef ALFA_LOCREC_h
6 #define ALFA_LOCREC_h
7 
8 #include <iostream>
9 #include <string>
10 #include <list>
11 #include <map>
12 #include <vector>
13 #include <fstream>
14 
16 
17 #include "GaudiKernel/ObjectVector.h"
18 #include "GaudiKernel/ServiceHandle.h"
19 #include "GaudiKernel/IToolSvc.h"
20 
23 
24 #include "StoreGate/StoreGateSvc.h"
25 #include "StoreGate/DataHandle.h"
26 
29 
32 
42 
48 #include "ALFA_LocRec/ALFA_MDGap.h"
52 
53 #include "TROOT.h"
54 
55 //for truth particles
57 #include "AtlasHepMC/GenEvent.h"
58 #include "AtlasHepMC/GenVertex.h"
59 #include "AtlasHepMC/GenParticle.h"
60 
61 typedef struct _USERTRANSFORM
62 {
63  Int_t iRPot;
64  Float_t fAngle;
65  CLHEP::Hep3Vector vecRotation;
66  CLHEP::Hep3Vector vecTranslation;
67 
69 
70 
71 #define NSIDE 3
72 #define NTRACK 10
73 #define NTRIG 4
74 #define NBPM 4
75 //#define MAXNUMTRACKS 100
76 
77 class StoreGateSvc;
78 
79 class ALFA_LocRec : public AthAlgorithm
80 {
81  public:
82  ALFA_LocRec(const std::string& name, ISvcLocator* pSvcLocator);
83  ~ALFA_LocRec();
84 
85  private:
88  // a handle on Store Gate
89  //StoreGateSvc* m_storeGate;
90  //StoreGateSvc* m_pDetStore;
91 
94 
97 
98  SG::ReadHandleKey<xAOD::EventInfo> m_eventInfoKey{this, "EvtInfo", "EventInfo", "EventInfo name"};
99 
100  private:
101  std::list<eRPotName> m_ListExistingRPots;
102 
103  UInt_t m_eventNum; // real event number
104  Int_t m_iDataType; // data type (simulation or real data) using in the local reconstruction
105  Int_t m_iEvent; // event number from zero value
106  Int_t m_iMultiplicityCutMD; // for Main Detector
107  Int_t m_iNumLayerCutMD; // for Main Detector
108  Int_t m_iUVCutMD; // for Main Detector
109  Int_t m_iUVCutMDHalfReco; // for Main Detector HalfReco algorithm
110  Int_t m_iMultiplicityCutOD; // for Overlap Detector
111  Float_t m_fOverlapCutMD; // for Main Detector
112  Float_t m_fDistanceCutOD; // for Overlap Detector
113  Float_t m_iLayerCutOD; // for Overlap Detector
114  Bool_t m_bEdgeMethod_Opt_Sisters; // for EdgeMethod
115  Bool_t m_bEdgeMethod_Opt_UseGaps; // for EdgeMethod
116 
117  //slope, offset and Z-pos for MD fibers [8][2*10][64]
121 
122  //slope, offset and Z-pos for OD fibers [8][3][2][2*15], side 0 = right; side 1 = left (in +z direction)
126 
128  std::vector<std::string> m_vecListAlgoMD;
129  std::vector<std::string> m_vecListAlgoOD;
130  std::string m_strAlgoOD;
131  std::string m_strAlgoMD;
134  std::string m_strCollectionName;
136 
137  public:
141 
142  private:
143  bool ReadGeometryDetCS();
144  bool StoreReconstructionGeometry(const eRPotName eRPName, const eFiberType eFType, const char* szDataDestination);
145  void SaveGeometry();
146  void ClearGeometry();
147 
148  StatusCode ALFACollectionReading(std::list<MDHIT> &ListMDHits, std::list<ODHIT> &ListODHits);
149 
152  StatusCode ExecuteRecoMethod(const std::string& strAlgo, const eRPotName eRPName, const std::list<MDHIT> &ListMDHits, const std::list<ODHIT> &ListODHits);
153 };
154 
155 #endif //ALFA_LOCREC_h
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
ALFA_LocRec::m_fzMD
Float_t m_fzMD[RPOTSCNT][ALFALAYERSCNT *ALFAPLATESCNT][ALFAFIBERSCNT]
Definition: ALFA_LocRec.h:120
eFiberType
eFiberType
Definition: ALFA_GeometryReader.h:26
ALFA_LocRec::StoreReconstructionGeometry
bool StoreReconstructionGeometry(const eRPotName eRPName, const eFiberType eFType, const char *szDataDestination)
Definition: ALFA_LocRec.cxx:550
ALFA_ODDigitCollection.h
ALFA_LocRec::m_fbOD
Float_t m_fbOD[RPOTSCNT][ODPLATESCNT][ODSIDESCNT][ODLAYERSCNT *ODFIBERSCNT]
Definition: ALFA_LocRec.h:124
GenEvent.h
ALFA_LocRec::m_strODCollectionName
std::string m_strODCollectionName
Definition: ALFA_LocRec.h:135
ALFA_LocRec::m_bEdgeMethod_Opt_UseGaps
Bool_t m_bEdgeMethod_Opt_UseGaps
Definition: ALFA_LocRec.h:115
ALFA_LocRec::m_strAlgoOD
std::string m_strAlgoOD
Definition: ALFA_LocRec.h:130
ALFA_LocRec::m_ListExistingRPots
std::list< eRPotName > m_ListExistingRPots
Definition: ALFA_LocRec.h:101
CondAttrListCollection.h
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
getMessageSvc.h
singleton-like access to IMessageSvc via open function and helper
_USERTRANSFORM::vecRotation
CLHEP::Hep3Vector vecRotation
Definition: ALFA_DetectorTool.h:21
ALFA_LocRec::m_Config
GEOMETRYCONFIGURATION m_Config
Definition: ALFA_LocRec.h:86
ALFA_LocRec::m_iMultiplicityCutOD
Int_t m_iMultiplicityCutOD
Definition: ALFA_LocRec.h:110
ALFA_MDGap.h
ODLAYERSCNT
#define ODLAYERSCNT
Definition: ALFA_CLinkAlg.h:30
ALFA_LocRec::m_strKeyGeometryForReco
std::string m_strKeyGeometryForReco
Definition: ALFA_LocRec.h:127
ALFA_LocRec::RecordODCollection
StatusCode RecordODCollection()
Definition: ALFA_LocRec.cxx:1029
ALFA_LocRec::SaveGeometry
void SaveGeometry()
Definition: ALFA_LocRec.cxx:601
ALFA_RawDataContainer.h
ALFA_LocRec::initialize
StatusCode initialize()
Definition: ALFA_LocRec.cxx:143
GenVertex.h
ALFAFIBERSCNT
#define ALFAFIBERSCNT
Definition: ALFA_constants.h:10
eRPotName
eRPotName
Definition: ALFA_GeometryReader.h:28
ALFA_LocRec::m_eventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Definition: ALFA_LocRec.h:98
ALFA_GeometryReader.h
_USERTRANSFORM::fAngle
Float_t fAngle
Definition: ALFA_LocRec.h:64
ALFA_LocRec::m_pLocRecODEvent
ALFA_LocRecODEvent * m_pLocRecODEvent
Definition: ALFA_LocRec.h:96
RPOTSCNT
#define RPOTSCNT
Definition: ALFA_CLinkAlg.h:26
ALFA_LocRec::m_strKeyLocRecEvCollection
std::string m_strKeyLocRecEvCollection
Definition: ALFA_LocRec.h:132
USERTRANSFORM
struct _USERTRANSFORM USERTRANSFORM
ALFA_LocRec::m_pLocRecODEvCollection
ALFA_LocRecODEvCollection * m_pLocRecODEvCollection
Definition: ALFA_LocRec.h:95
SG::ReadHandleKey< xAOD::EventInfo >
ALFA_LocRec::m_bEdgeMethod_Opt_Sisters
Bool_t m_bEdgeMethod_Opt_Sisters
Definition: ALFA_LocRec.h:114
ALFA_LocRec::m_iLayerCutOD
Float_t m_iLayerCutOD
Definition: ALFA_LocRec.h:113
AthenaAttributeList.h
ALFA_LocRec::~ALFA_LocRec
~ALFA_LocRec()
Definition: ALFA_LocRec.cxx:130
DataHandle.h
ALFA_LocRec::finalize
StatusCode finalize()
Definition: ALFA_LocRec.cxx:324
ALFA_LocRecEvent
Definition: ALFA_LocRecEvent.h:10
GenParticle.h
ALFA_LocRec::m_strKeyLocRecODEvCollection
std::string m_strKeyLocRecODEvCollection
Definition: ALFA_LocRec.h:133
GEOMETRYCONFIGURATION
Definition: ALFA_GeometryReader.h:197
ALFA_LocRecODEvCollection
Definition: ALFA_LocRecODEvCollection.h:13
ALFA_LocRec::m_fDistanceCutOD
Float_t m_fDistanceCutOD
Definition: ALFA_LocRec.h:112
AthAlgorithm.h
ALFA_constants.h
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
_USERTRANSFORM::vecTranslation
CLHEP::Hep3Vector vecTranslation
Definition: ALFA_DetectorTool.h:22
ALFA_LocRec::m_vecListAlgoMD
std::vector< std::string > m_vecListAlgoMD
Definition: ALFA_LocRec.h:128
ALFA_MDOverlap.h
ALFA_LocRec::m_strCollectionName
std::string m_strCollectionName
Definition: ALFA_LocRec.h:134
ALFA_LocRec::ReadGeometryDetCS
bool ReadGeometryDetCS()
Definition: ALFA_LocRec.cxx:408
ALFA_RawData.h
McEventCollection.h
ALFA_LocRec::m_pLocRecEvent
ALFA_LocRecEvent * m_pLocRecEvent
Definition: ALFA_LocRec.h:93
ALFA_LocRec::ExecuteRecoMethod
StatusCode ExecuteRecoMethod(const std::string &strAlgo, const eRPotName eRPName, const std::list< MDHIT > &ListMDHits, const std::list< ODHIT > &ListODHits)
Definition: ALFA_LocRec.cxx:664
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ALFA_CenterGravity.h
ALFA_EdgeMethod.h
ALFA_LocRec::m_iUVCutMD
Int_t m_iUVCutMD
Definition: ALFA_LocRec.h:108
ALFA_LocRec::ALFACollectionReading
StatusCode ALFACollectionReading(std::list< MDHIT > &ListMDHits, std::list< ODHIT > &ListODHits)
Definition: ALFA_LocRec.cxx:348
ALFA_HalfReco.h
ALFA_LocRec::m_pGeometryReader
ALFA_GeometryReader * m_pGeometryReader
Definition: ALFA_LocRec.h:87
ALFA_LocRec::m_iEvent
Int_t m_iEvent
Definition: ALFA_LocRec.h:105
ALFA_MDTracking.h
ODSIDESCNT
#define ODSIDESCNT
Definition: ALFA_constants.h:16
ALFA_LocRecODEvent
Definition: ALFA_LocRecODEvent.h:10
ALFA_DigitCollection.h
ALFALAYERSCNT
#define ALFALAYERSCNT
Definition: ALFA_constants.h:8
AthAlgorithm
Definition: AthAlgorithm.h:47
_USERTRANSFORM::iRPot
Int_t iRPot
Definition: ALFA_LocRec.h:63
IAtRndmGenSvc.h
ALFA_LocRec::m_eventNum
UInt_t m_eventNum
Definition: ALFA_LocRec.h:103
ALFA_LocRecEvCollection
Definition: ALFA_LocRecEvCollection.h:13
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
ALFA_LocRec::m_vecListAlgoOD
std::vector< std::string > m_vecListAlgoOD
Definition: ALFA_LocRec.h:129
ALFA_LocRec::m_iNumLayerCutMD
Int_t m_iNumLayerCutMD
Definition: ALFA_LocRec.h:107
ALFA_LocRec::m_faOD
Float_t m_faOD[RPOTSCNT][ODPLATESCNT][ODSIDESCNT][ODLAYERSCNT *ODFIBERSCNT]
Definition: ALFA_LocRec.h:123
ALFA_LocRecEvCollection.h
ALFA_LocRec::ALFA_LocRec
ALFA_LocRec(const std::string &name, ISvcLocator *pSvcLocator)
Definition: ALFA_LocRec.cxx:11
EventInfo.h
ALFA_LocRec::m_strAlgoMD
std::string m_strAlgoMD
Definition: ALFA_LocRec.h:131
ALFA_LocRec::m_pLocRecEvCollection
ALFA_LocRecEvCollection * m_pLocRecEvCollection
Definition: ALFA_LocRec.h:92
ALFA_LocRec
Definition: ALFA_LocRec.h:80
ALFA_GeometryReader
Definition: ALFA_GeometryReader.h:216
ALFA_LocRec::m_fbMD
Float_t m_fbMD[RPOTSCNT][ALFALAYERSCNT *ALFAPLATESCNT][ALFAFIBERSCNT]
Definition: ALFA_LocRec.h:119
ODPLATESCNT
#define ODPLATESCNT
Definition: ALFA_CLinkAlg.h:31
ALFA_MDMultiple.h
ALFA_UserObjects.h
ODFIBERSCNT
#define ODFIBERSCNT
Definition: ALFA_CLinkAlg.h:32
_USERTRANSFORM
Definition: ALFA_DetectorTool.h:18
ALFA_LocRec::m_iUVCutMDHalfReco
Int_t m_iUVCutMDHalfReco
Definition: ALFA_LocRec.h:109
ALFA_LocRec::execute
StatusCode execute()
Definition: ALFA_LocRec.cxx:198
ALFA_LocRecODEvCollection.h
ALFA_RawDataCollection.h
ALFA_LocRec::ClearGeometry
void ClearGeometry()
Definition: ALFA_LocRec.cxx:334
ALFA_LocRec::m_faMD
Float_t m_faMD[RPOTSCNT][ALFALAYERSCNT *ALFAPLATESCNT][ALFAFIBERSCNT]
Definition: ALFA_LocRec.h:118
StoreGateSvc.h
PUSERTRANSFORM
struct _USERTRANSFORM * PUSERTRANSFORM
ALFA_LocRec::m_fOverlapCutMD
Float_t m_fOverlapCutMD
Definition: ALFA_LocRec.h:111
ALFAPLATESCNT
#define ALFAPLATESCNT
Definition: ALFA_constants.h:9
ALFA_LocRec::RecordCollection
StatusCode RecordCollection()
Definition: ALFA_LocRec.cxx:1005
ALFA_LocRec::m_iMultiplicityCutMD
Int_t m_iMultiplicityCutMD
Definition: ALFA_LocRec.h:106
ALFA_LocRec::m_fzOD
Float_t m_fzOD[RPOTSCNT][ODPLATESCNT][ODSIDESCNT][ODLAYERSCNT *ODFIBERSCNT]
Definition: ALFA_LocRec.h:125
ALFA_ODTracking.h
ALFA_LocRec::m_iDataType
Int_t m_iDataType
Definition: ALFA_LocRec.h:104