ATLAS Offline Software
INSWCalibTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 #ifndef NSWCalibTools_INSWCalibTool_h
5 #define NSWCalibTools_INSWCalibTool_h
6 
7 #include "GaudiKernel/IAlgTool.h"
8 #include "GaudiKernel/EventContext.h"
9 #include "GaudiKernel/IInterface.h"
10 
11 
13 #include "Identifier/Identifier.h"
16 
17 
18 
19 #include <cmath>
20 #include <vector>
21 
22 namespace NSWCalib {
23 
24  struct CalibratedStrip {
25  double charge{0};
26  double time{0};
27  double resTime{0};
28  double distDrift{0};
29  double resTransDistDrift{0};
30  double resLongDistDrift{0};
31  double dx{0};
34  };
35 
36  struct MicroMegaGas{
38  float driftVelocity{0.};
44  using angleFunction = std::function<double(double)>;
47  return [](float){
48  throw std::runtime_error("Please do not use the dummy lorentz function");
49  return 0.;
50  };
51  }
53  };
54 
55 }
56 
57 namespace Muon {
58 
59  class MM_RawData;
60  class MMPrepData;
61  class STGC_RawData;
62 
63  class INSWCalibTool : virtual public IAlgTool {
64 
65  public: // interface methods
66 
68 
69  virtual StatusCode calibrateClus(const EventContext& ctx, const Muon::MMPrepData* prepRawData, const Amg::Vector3D& globalPos, std::vector<NSWCalib::CalibratedStrip>& calibClus) const = 0;
70 
71  virtual StatusCode calibrateClus(const EventContext& ctx, const ActsGeometryContext& gctx, const xAOD::MMCluster* prepRawData, const Amg::Vector3D& globalPos, std::vector<NSWCalib::CalibratedStrip>& calibClus) const = 0;
72 
73  virtual StatusCode calibrateStrip(const EventContext& ctx ,const Identifier& id, const double time, const double charge, const double theta, const double lorentzAngle, NSWCalib::CalibratedStrip&calibStrip) const = 0;
74 
75 
76 
77 
78  virtual StatusCode calibrateStrip(const EventContext& ctx, const Muon::MM_RawData* mmRawData, NSWCalib::CalibratedStrip& calibStrip) const = 0;
79  virtual StatusCode calibrateStrip(const EventContext& ctx, const Muon::STGC_RawData* sTGCRawData, NSWCalib::CalibratedStrip& calibStrip) const = 0;
80 
81  virtual bool tdoToTime (const EventContext& ctx, const bool inCounts, const int tdo, const Identifier& chnlId, float& time, const int relBCID) const = 0;
82  virtual bool timeToTdo (const EventContext& ctx, const float time, const Identifier& chnlId, int& tdo, int& relBCID) const = 0;
83  virtual bool chargeToPdo(const EventContext& ctx, const float charge, const Identifier& chnlId, int& pdo) const = 0;
84  virtual bool pdoToCharge(const EventContext& ctx, const bool inCounts, const int pdo, const Identifier& chnlId, float& charge) const = 0;
85 
86  virtual StatusCode distToTime(const EventContext& ctx, const Muon::MMPrepData* prepData, const Amg::Vector3D& globalPos,const std::vector<double>& driftDistances, std::vector<double>& driftTimes) const = 0;
87 
89  virtual float mmPeakTime() const = 0;
90  virtual float stgcPeakTime() const = 0;
91  };
92 
93 }
94 
95 
96 #endif
NSWCalib::MicroMegaGas::lorentzAngleFunction
angleFunction lorentzAngleFunction
Definition: INSWCalibTool.h:52
NSWCalib::MicroMegaGas::longitudinalDiffusionSigma
float longitudinalDiffusionSigma
// 0.350/10 diffusSigma=transverse diffusion (350 microm per 1cm ) for 93:7 @ 600 V/cm,...
Definition: INSWCalibTool.h:40
NSWCalib::CalibratedStrip::time
double time
Definition: INSWCalibTool.h:26
Muon::MMPrepData
Class to represent MM measurements.
Definition: MMPrepData.h:22
NSWCalib::CalibratedStrip::charge
double charge
Definition: INSWCalibTool.h:25
Muon::INSWCalibTool::calibrateClus
virtual StatusCode calibrateClus(const EventContext &ctx, const Muon::MMPrepData *prepRawData, const Amg::Vector3D &globalPos, std::vector< NSWCalib::CalibratedStrip > &calibClus) const =0
Muon::INSWCalibTool::tdoToTime
virtual bool tdoToTime(const EventContext &ctx, const bool inCounts, const int tdo, const Identifier &chnlId, float &time, const int relBCID) const =0
Trk::PrepRawDataType::MMPrepData
@ MMPrepData
Muon::INSWCalibTool::calibrateStrip
virtual StatusCode calibrateStrip(const EventContext &ctx, const Muon::MM_RawData *mmRawData, NSWCalib::CalibratedStrip &calibStrip) const =0
xAOD::MMCluster_v1
Definition: MMCluster_v1.h:20
Muon::INSWCalibTool::calibrateStrip
virtual StatusCode calibrateStrip(const EventContext &ctx, const Muon::STGC_RawData *sTGCRawData, NSWCalib::CalibratedStrip &calibStrip) const =0
NSWCalib::MicroMegaGas::interactionDensityMean
float interactionDensityMean
Definition: INSWCalibTool.h:42
NSWCalib::CalibratedStrip::distDrift
double distDrift
Definition: INSWCalibTool.h:28
ActsGeometryContext.h
NSWCalib::CalibratedStrip::dx
double dx
Definition: INSWCalibTool.h:31
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
Muon::INSWCalibTool::DeclareInterfaceID
DeclareInterfaceID(INSWCalibTool, 0, 1)
NSWCalib::CalibratedStrip::resTransDistDrift
double resTransDistDrift
Definition: INSWCalibTool.h:29
NSWCalib::MicroMegaGas::driftVelocity
float driftVelocity
//0.050 drift velocity in [mm/ns], driftGap=5 mm +0.128 mm (the amplification gap)
Definition: INSWCalibTool.h:38
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition: TrackSystemController.h:45
NSWCalib::CalibratedStrip::resTime
double resTime
Definition: INSWCalibTool.h:27
NSWCalib::CalibratedStrip::resLongDistDrift
double resLongDistDrift
Definition: INSWCalibTool.h:30
Muon::INSWCalibTool::timeToTdo
virtual bool timeToTdo(const EventContext &ctx, const float time, const Identifier &chnlId, int &tdo, int &relBCID) const =0
Muon::INSWCalibTool::calibrateStrip
virtual StatusCode calibrateStrip(const EventContext &ctx, const Identifier &id, const double time, const double charge, const double theta, const double lorentzAngle, NSWCalib::CalibratedStrip &calibStrip) const =0
GeoPrimitives.h
NSWCalib::MicroMegaGas::interactionDensitySigma
float interactionDensitySigma
Definition: INSWCalibTool.h:43
NSWCalib::MicroMegaGas::angleFunction
std::function< double(double)> angleFunction
Definition: INSWCalibTool.h:44
Muon::STGC_RawData
Definition: STGC_RawData.h:14
Muon::MM_RawData
Temporary class to hold the MM RDO.
Definition: MM_RawData.h:20
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
NSWCalib::CalibratedStrip::locPos
Amg::Vector2D locPos
Definition: INSWCalibTool.h:32
Muon::INSWCalibTool::mmPeakTime
virtual float mmPeakTime() const =0
NSWCalib
Definition: INSWCalibTool.h:22
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
NSWCalib::CalibratedStrip
Definition: INSWCalibTool.h:24
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:27
Muon::INSWCalibTool::distToTime
virtual StatusCode distToTime(const EventContext &ctx, const Muon::MMPrepData *prepData, const Amg::Vector3D &globalPos, const std::vector< double > &driftDistances, std::vector< double > &driftTimes) const =0
charge
double charge(const T &p)
Definition: AtlasPID.h:986
NSWCalib::MicroMegaGas::dummy_func
static angleFunction dummy_func()
Dummy function to be used for the initialization.
Definition: INSWCalibTool.h:46
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
NSWCalib::MicroMegaGas::transverseDiffusionSigma
float transverseDiffusionSigma
Definition: INSWCalibTool.h:41
Muon::INSWCalibTool::pdoToCharge
virtual bool pdoToCharge(const EventContext &ctx, const bool inCounts, const int pdo, const Identifier &chnlId, float &charge) const =0
Muon::INSWCalibTool::mmGasProperties
virtual NSWCalib::MicroMegaGas mmGasProperties() const =0
MMClusterFwd.h
Muon::INSWCalibTool::stgcPeakTime
virtual float stgcPeakTime() const =0
Muon::INSWCalibTool
Definition: INSWCalibTool.h:63
Muon::INSWCalibTool::chargeToPdo
virtual bool chargeToPdo(const EventContext &ctx, const float charge, const Identifier &chnlId, int &pdo) const =0
Muon::INSWCalibTool::calibrateClus
virtual StatusCode calibrateClus(const EventContext &ctx, const ActsGeometryContext &gctx, const xAOD::MMCluster *prepRawData, const Amg::Vector3D &globalPos, std::vector< NSWCalib::CalibratedStrip > &calibClus) const =0
NSWCalib::MicroMegaGas
Definition: INSWCalibTool.h:36
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
NSWCalib::CalibratedStrip::identifier
Identifier identifier
Definition: INSWCalibTool.h:33
python.LArMinBiasAlgConfig.float
float
Definition: LArMinBiasAlgConfig.py:65
Identifier
Definition: IdentifierFieldParser.cxx:14