File indexing completed on 2024-04-06 11:59:57
0001 #ifndef CalibTracker_SiStripLorentzAngle_SiStripCalibLorentzAngle_h
0002 #define CalibTracker_SiStripLorentzAngle_SiStripCalibLorentzAngle_h
0003
0004
0005 #include "CommonTools/ConditionDBWriter/interface/ConditionDBWriter.h"
0006 #include "CondFormats/DataRecord/interface/SiStripLorentzAngleRcd.h"
0007 #include "CondFormats/SiStripObjects/interface/SiStripLorentzAngle.h"
0008 #include "DataFormats/Common/interface/Handle.h"
0009 #include "DataFormats/DetId/interface/DetId.h"
0010 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0011 #include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
0012 #include "DQMServices/Core/interface/DQMStore.h"
0013 #include "FWCore/Framework/interface/Event.h"
0014 #include "FWCore/Framework/interface/EventSetup.h"
0015 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0016 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0017 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
0018 #include "Geometry/Records/interface/TrackerTopologyRcd.h"
0019 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0020 #include "MagneticField/Engine/interface/MagneticField.h"
0021 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
0022
0023
0024 #include <memory>
0025 #include <cstring>
0026 #include <iostream>
0027 #include <map>
0028
0029
0030 #include <TGraph.h>
0031 #include <TProfile.h>
0032 #include <TStyle.h>
0033 #include <TH1D.h>
0034 #include <TH2D.h>
0035 #include <TF1.h>
0036 #include <TFile.h>
0037 #include <TTree.h>
0038 #include <TGraphErrors.h>
0039 #include <TDirectory.h>
0040 #include "TROOT.h"
0041
0042 class TrackerTopology;
0043
0044 class SiStripCalibLorentzAngle : public ConditionDBWriter<SiStripLorentzAngle> {
0045 public:
0046 typedef dqm::legacy::MonitorElement MonitorElement;
0047 typedef dqm::legacy::DQMStore DQMStore;
0048 explicit SiStripCalibLorentzAngle(const edm::ParameterSet &conf);
0049
0050 ~SiStripCalibLorentzAngle() override;
0051
0052 std::unique_ptr<SiStripLorentzAngle> getNewObject() override;
0053
0054 void algoBeginJob(const edm::EventSetup &) override;
0055
0056 private:
0057 edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> tTopoToken_;
0058 edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> tkGeomToken_;
0059 edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> magFieldToken_;
0060 edm::ESGetToken<SiStripLorentzAngle, SiStripLorentzAngleRcd> lorentzAngleToken_;
0061
0062 const TrackerGeometry *tkGeom_ = nullptr;
0063 const TrackerTopology *tTopo_ = nullptr;
0064
0065 typedef std::map<std::string, TProfile *> ProfileMap;
0066 ProfileMap Profiles;
0067 typedef std::map<std::string, TH1D *> TH1Dmap;
0068 TH1Dmap TH1Ds;
0069 typedef std::map<std::string, TH2D *> TH2Dmap;
0070 TH2Dmap TH2Ds;
0071 std::vector<MonitorElement *> histolist;
0072
0073 TF1 *fitfunc, *fitfunc2IT, *FitFunction2IT, *FitFunction;
0074
0075 float histoEntries, gR, gphi, geta, gz, globalX, globalY, globalZ, muH, theBfield, AsymmParam;
0076 int goodFit, goodFit1IT, badFit, TIB, TOB, Layer, MonoStereo;
0077 const GlobalPoint gposition;
0078
0079 float mean_TIB1, mean_TIB2, mean_TIB3, mean_TIB4, mean_TOB1, mean_TOB2, mean_TOB3, mean_TOB4, mean_TOB5, mean_TOB6;
0080
0081 float hallMobility, meanMobility_TIB, meanMobility_TOB;
0082
0083 bool LayerDB, CalibByMC;
0084
0085 TGraphErrors *TIB_graph, *TOB_graph;
0086
0087 TTree *ModuleTree;
0088 TFile *hFile;
0089
0090 TDirectory *LorentzAngle_Plots, *Rootple, *MuH, *TIB_MuH, *TOB_MuH, *MuH_vs_Phi, *TIB_Phi, *TOB_Phi, *MuH_vs_Eta,
0091 *TIB_Eta, *TOB_Eta;
0092 TDirectory *FirstIT_GoodFit_Histos, *TIB_1IT_GoodFit, *TOB_1IT_GoodFit, *SecondIT_GoodFit_Histos, *TIB_2IT_GoodFit,
0093 *TOB_2IT_GoodFit, *SecondIT_BadFit_Histos, *TIB_2IT_BadFit, *TOB_2IT_BadFit;
0094
0095 std::map<uint32_t, float> detid_la;
0096 edm::ParameterSet conf_;
0097 };
0098
0099 #endif