File indexing completed on 2024-04-06 12:30:53
0001 #ifndef SimPPS_RPDigiProducer_RP_DISPLACEMENT_GENERATOR_H
0002 #define SimPPS_RPDigiProducer_RP_DISPLACEMENT_GENERATOR_H
0003
0004 #include "SimPPS/RPDigiProducer/interface/RPSimTypes.h"
0005 #include "DataFormats/CTPPSDetId/interface/TotemRPDetId.h"
0006 #include <Math/Rotation3D.h>
0007 #include <map>
0008
0009 class PSimHit;
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 class CTPPSRPAlignmentCorrectionsData;
0021 class CTPPSGeometry;
0022
0023 class RPDisplacementGenerator {
0024 public:
0025 using RotationMatrix = ROOT::Math::Rotation3D;
0026 using Translation = ROOT::Math::DisplacementVector3D<ROOT::Math::Cartesian3D<double>>;
0027
0028 RPDisplacementGenerator(bool iIsOn,
0029 RPDetId,
0030 const CTPPSRPAlignmentCorrectionsData* alignments,
0031 const CTPPSGeometry& geom);
0032
0033
0034 PSimHit displace(const PSimHit&);
0035
0036 static uint32_t rawToDecId(uint32_t raw);
0037
0038 private:
0039
0040 RPDetId detId_;
0041
0042
0043 Translation shift_;
0044 RotationMatrix rotation_;
0045
0046
0047 bool isOn_;
0048
0049
0050 Local3DPoint displacePoint(const Local3DPoint&);
0051 };
0052
0053 #endif