File indexing completed on 2024-04-06 12:11:12
0001 #ifndef PreshowerHitMaker_h
0002 #define PreshowerHitMaker_h
0003
0004 #include "FastSimulation/CaloHitMakers/interface/CaloHitMaker.h"
0005 #include "FastSimulation/CaloGeometryTools/interface/Transform3DPJ.h"
0006
0007 class CaloGeometryHelper;
0008 class LandauFluctuationGenerator;
0009 class RandomEngineAndDistribution;
0010
0011 class PreshowerHitMaker : public CaloHitMaker {
0012 public:
0013 typedef math::XYZVector XYZVector;
0014 typedef math::XYZVector XYZPoint;
0015 typedef ROOT::Math::Transform3DPJ Transform3D;
0016
0017 PreshowerHitMaker(CaloGeometryHelper* calo,
0018 const XYZPoint&,
0019 const XYZVector&,
0020 const XYZPoint&,
0021 const XYZVector&,
0022 const LandauFluctuationGenerator* aGenerator,
0023 const RandomEngineAndDistribution* engine);
0024
0025 ~PreshowerHitMaker() override { ; }
0026
0027 inline void setSpotEnergy(double e) override { spotEnergy = e; }
0028 bool addHit(double r, double phi, unsigned layer = 0) override;
0029
0030 const std::map<CaloHitID, float>& getHits() override { return hitMap_; };
0031
0032 inline void setMipEnergy(double e1, double e2) {
0033 mip1_ = e1;
0034 mip2_ = e2;
0035 }
0036
0037 float totalLayer1() const { return totalLayer1_; }
0038 float totalLayer2() const { return totalLayer2_; }
0039 float layer1Calibrated() const { return 0.024 / 81.1E-6 * totalLayer1_; }
0040 float layer2Calibrated() const { return 0.024 * 0.7 / 81.1E-6 * totalLayer2_; }
0041 float totalCalibrated() const { return 0.024 / 81.1E-6 * (totalLayer1_ + 0.7 * totalLayer2_); }
0042
0043 private:
0044 XYZPoint psLayer1Entrance_;
0045 XYZVector psLayer1Dir_;
0046 XYZPoint psLayer2Entrance_;
0047 XYZVector psLayer2Dir_;
0048 bool layer1valid_;
0049 bool layer2valid_;
0050 Transform3D locToGlobal1_;
0051 Transform3D locToGlobal2_;
0052 float anglecorrection1_;
0053 float anglecorrection2_;
0054 double mip1_, mip2_;
0055 float totalLayer1_;
0056 float totalLayer2_;
0057
0058 const LandauFluctuationGenerator* theGenerator;
0059 const RandomEngineAndDistribution* random;
0060 };
0061
0062 #endif