File indexing completed on 2024-04-06 11:59:57
0001 #ifndef CalibTracker_SiStripLorentzAngle_SiStripLAProfileBooker_h
0002 #define CalibTracker_SiStripLorentzAngle_SiStripLAProfileBooker_h
0003
0004 #include <map>
0005
0006 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0007 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0008
0009 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0010 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
0011
0012 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
0013 #include "MagneticField/Engine/interface/MagneticField.h"
0014
0015 #include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
0016 #include "Geometry/Records/interface/TrackerTopologyRcd.h"
0017
0018 #include "CalibTracker/Records/interface/SiStripDetCablingRcd.h"
0019 #include "CalibFormats/SiStripObjects/interface/SiStripDetCabling.h"
0020
0021 #include "DQMServices/Core/interface/DQMStore.h"
0022
0023 #include "DataFormats/DetId/interface/DetId.h"
0024 #include "DataFormats/GeometryVector/interface/LocalVector.h"
0025
0026 #include <TTree.h>
0027 #include <TFile.h>
0028 #include <TH1D.h>
0029 #include <TDirectory.h>
0030
0031 class TrackerTopology;
0032
0033 class SiStripLAProfileBooker : public edm::one::EDAnalyzer<edm::one::WatchRuns> {
0034 public:
0035 typedef dqm::legacy::MonitorElement MonitorElement;
0036 typedef dqm::legacy::DQMStore DQMStore;
0037 explicit SiStripLAProfileBooker(const edm::ParameterSet& conf);
0038
0039 ~SiStripLAProfileBooker() override;
0040
0041 void beginRun(edm::Run const&, const edm::EventSetup& c) override;
0042
0043 void endRun(edm::Run const&, const edm::EventSetup& c) override;
0044
0045 void endJob() override;
0046
0047 void analyze(const edm::Event& e, const edm::EventSetup& c) override;
0048
0049 void getlayer(const DetId& detid, const TrackerTopology* tTopo, std::string& name, unsigned int& layerid);
0050
0051 private:
0052 typedef struct {
0053 float thickness;
0054 float pitch;
0055 LocalVector magfield;
0056 } detparameters;
0057 typedef std::map<unsigned int, detparameters*> detparmap;
0058 typedef std::map<unsigned int, MonitorElement*> histomap;
0059
0060 int trackcollsize, trajsize, RunNumber, EventNumber, ClSize, HitCharge, Type, Layer, Wheel, bw_fw, Ext_Int,
0061 MonoStereo, ParticleCharge;
0062 float sumx, hit_std_dev, barycenter, TanTrackAngle, TanTrackAngleParallel, SignCorrection, MagField, XGlobal, YGlobal,
0063 ZGlobal, Momentum, pt, chi2norm, EtaTrack, PhiTrack;
0064 int nstrip, eventcounter, size, HitNr, hitcounter, hitcounter_2ndloop, worse_double_hit, better_double_hit,
0065 HitPerTrack;
0066 int id_detector, TrackCounter, EventCounter;
0067 float thick_detector, pitch_detector;
0068 uint8_t Amplitudes[100];
0069
0070 TTree *HitsTree, *TrackTree, *EventTree;
0071 TFile* hFile;
0072
0073 TDirectory *Hit_Tree, *Track_Tree, *Event_Tree;
0074
0075 histomap histos;
0076 histomap summaryhisto;
0077
0078 DQMStore* dbe_;
0079
0080 detparmap detmap;
0081 detparmap summarydetmap;
0082 edm::ParameterSet conf_;
0083 std::string treename_;
0084
0085 const TrackerGeometry* tkGeom_ = nullptr;
0086 edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> tTopoToken_;
0087 edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> tkGeomToken_;
0088 edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> magFieldToken_;
0089 edm::ESGetToken<SiStripDetCabling, SiStripDetCablingRcd> detCablingToken_;
0090 };
0091
0092 #endif