ATLAS Offline Software
Loading...
Searching...
No Matches
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
22namespace NSWCalib {
23
25 double charge{0};
26 double time{0};
27 double resTime{0};
28 double distDrift{0};
31 double dx{0};
32 Amg::Vector2D locPos{Amg::Vector2D::Zero()};
34 };
35
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
57namespace 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 ActsTrk::GeometryContext& 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
Scalar theta() const
theta method
double charge(const T &p)
Definition AtlasPID.h:997
DeclareInterfaceID(INSWCalibTool, 0, 1)
virtual bool pdoToCharge(const EventContext &ctx, const bool inCounts, const int pdo, const Identifier &chnlId, float &charge) const =0
virtual StatusCode calibrateClus(const EventContext &ctx, const Muon::MMPrepData *prepRawData, const Amg::Vector3D &globalPos, std::vector< NSWCalib::CalibratedStrip > &calibClus) const =0
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
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
virtual StatusCode calibrateClus(const EventContext &ctx, const ActsTrk::GeometryContext &gctx, const xAOD::MMCluster &prepRawData, const Amg::Vector3D &globalPos, std::vector< NSWCalib::CalibratedStrip > &calibClus) const =0
virtual NSWCalib::MicroMegaGas mmGasProperties() const =0
virtual StatusCode calibrateStrip(const EventContext &ctx, const Muon::STGC_RawData *sTGCRawData, NSWCalib::CalibratedStrip &calibStrip) const =0
virtual bool timeToTdo(const EventContext &ctx, const float time, const Identifier &chnlId, int &tdo, int &relBCID) const =0
virtual bool chargeToPdo(const EventContext &ctx, const float charge, const Identifier &chnlId, int &pdo) const =0
virtual float mmPeakTime() const =0
virtual float stgcPeakTime() const =0
virtual StatusCode calibrateStrip(const EventContext &ctx, const Muon::MM_RawData *mmRawData, NSWCalib::CalibratedStrip &calibStrip) const =0
virtual bool tdoToTime(const EventContext &ctx, const bool inCounts, const int tdo, const Identifier &chnlId, float &time, const int relBCID) const =0
Class to represent MM measurements.
Definition MMPrepData.h:22
Temporary class to hold the MM RDO.
Definition MM_RawData.h:20
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
MMCluster_v1 MMCluster
float driftVelocity
//0.050 drift velocity in [mm/ns], driftGap=5 mm +0.128 mm (the amplification gap)
angleFunction lorentzAngleFunction
float longitudinalDiffusionSigma
// 0.350/10 diffusSigma=transverse diffusion (350 microm per 1cm ) for 93:7 @ 600 V/cm,...
std::function< double(double)> angleFunction
static angleFunction dummy_func()
Dummy function to be used for the initialization.