CMS 3D CMS Logo

MeasureLA.cc
Go to the documentation of this file.
5 
6 #include <boost/lexical_cast.hpp>
7 #include <TChain.h>
8 #include <TFile.h>
9 #include <regex>
10 #include <fstream>
11 
12 namespace sistrip {
13 
15  for (auto const& p : vpset) {
16  methods |= p.getParameter<int32_t>("Method");
17  byModule = byModule || p.getParameter<int32_t>("Granularity");
18  byLayer = byLayer || !p.getParameter<int32_t>("Granularity");
19  }
20  }
21 
23  : inputFiles(conf.getParameter<std::vector<std::string> >("InputFiles")),
24  inFileLocation(conf.getParameter<std::string>("InFileLocation")),
25  fp_(conf.getParameter<edm::FileInPath>("SiStripDetInfo")),
26  reports(conf.getParameter<edm::VParameterSet>("Reports")),
27  measurementPreferences(conf.getParameter<edm::VParameterSet>("MeasurementPreferences")),
28  calibrations(conf.getParameter<edm::VParameterSet>("Calibrations")),
29  methods(0),
30  byModule(false),
31  byLayer(false),
32  localybin(conf.getUntrackedParameter<double>("LocalYBin", 0.0)),
33  stripsperbin(conf.getUntrackedParameter<unsigned>("StripsPerBin", 0)),
34  maxEvents(conf.getUntrackedParameter<unsigned>("MaxEvents", 0)),
36  conf.getParameter<edm::FileInPath>("TrackerParameters").fullPath())) {
40 
41  TChain* const chain = new TChain("la_data");
42  for (auto const& file : inputFiles)
43  chain->Add((file + inFileLocation).c_str());
44 
46  laff.fill(chain, book);
47  laff.fit(book);
50 
52  }
53 
54  std::unique_ptr<SiStripLorentzAngle> MeasureLA::produce(const SiStripLorentzAngleRcd&) {
55  auto lorentzAngle = std::make_unique<SiStripLorentzAngle>();
56  /*
57  std::map<uint32_t,LA_Filler_Fitter::Result>
58  module_results = LA_Filler_Fitter::module_results(book, LA_Filler_Fitter::SQRTVAR);
59 
60  BOOST_FOREACH(const uint32_t& detid, SiStripDetInfoFileReader::read(fp_.fullPath()).getAllDetIds()) {
61  float la = module_results[detid].measure / module_results[detid].field ;
62  lorentzAngle->putLorentzAngle( detid, la );
63  }
64  */
65  return lorentzAngle;
66  }
67 
72  calibrate(calibration_key(result.first, method), result.second);
75  label = std::regex_replace(label, std::regex("layer"), "");
76 
77  const double mu_H = -result.second.calMeasured.first / result.second.field;
78  const double sigma_mu_H = result.second.calMeasured.second / result.second.field;
79  const double weight = pow(1. / sigma_mu_H, 2);
80 
81  book.fill(mu_H, label, 150, -0.05, 0.1, weight);
82  }
83  for (Book::iterator it = book.begin(".*" + granularity(MODULESUMMARY) + ".*"); it != book.end(); ++it) {
84  if (it->second->GetEntries())
85  it->second->Fit("gaus", "LLQ");
86  }
87  }
88  }
89 
91  for (auto const& p : reports) {
92  const GRANULARITY gran = (GRANULARITY)p.getParameter<int32_t>("Granularity");
93  const std::string name = p.getParameter<std::string>("ReportName");
94  const LA_Filler_Fitter::Method method = (LA_Filler_Fitter::Method)p.getParameter<int32_t>("Method");
95 
97  switch (gran) {
98  case LAYER:
100  break;
101  case MODULE:
103  break;
104  case MODULESUMMARY:
106  break;
107  }
108  }
109 
110  {
111  TFile widthsFile("widths.root", "RECREATE");
112  for (Book::const_iterator it = book.begin(".*_width"); it != book.end(); it++)
113  if (it->second)
114  it->second->Write();
115  widthsFile.Close();
116  }
117  }
118 
120  TFile file((name + ".root").c_str(), "RECREATE");
121  const std::string key = ".*" + granularity(gran) + ".*(" + LA_Filler_Fitter::method(method) + "|" +
122  LA_Filler_Fitter::method(method, false) + ".*)";
124  if (hist->second)
125  hist->second->Write();
126  file.Close();
127  }
128 
129  template <class T>
131  const LA_Filler_Fitter::Method& _method,
132  const std::map<T, LA_Filler_Fitter::Result>& _results) const {
134  std::map<T, LA_Filler_Fitter::Result> results = _results;
135  std::fstream file((name + ".dat").c_str(), std::ios::out);
136  for (auto& result : results) {
137  calibrate(calibration_key(result.first, method), result.second);
138  file << result.first << "\t" << result.second << std::endl;
139  }
140  file.close();
141  }
142 
144  std::fstream file((name + ".dat").c_str(), std::ios::out);
146  for (Book::const_iterator it = book.begin(key); it != book.end(); ++it) {
147  const TF1* const f = it->second->GetFunction("gaus");
148  if (f) {
149  file << it->first << "\t" << f->GetParameter(1) << "\t" << f->GetParError(1) << "\t" << f->GetParameter(2)
150  << "\t" << f->GetParError(2) << std::endl;
151  }
152  }
153  file.close();
154  }
155 
157  for (auto const& p : calibrations) {
158  LA_Filler_Fitter::Method method = (LA_Filler_Fitter::Method)p.getParameter<int32_t>("Method");
159  std::vector<double> slopes(p.getParameter<std::vector<double> >("Slopes"));
160  assert(slopes.size() == 14);
161  std::vector<double> offsets(p.getParameter<std::vector<double> >("Offsets"));
162  assert(offsets.size() == 14);
163  std::vector<double> pulls(p.getParameter<std::vector<double> >("Pulls"));
164  assert(pulls.size() == 14);
165 
166  for (unsigned i = 0; i < 14; i++) {
167  const std::pair<unsigned, LA_Filler_Fitter::Method> key(i, method);
168  offset[key] = offsets[i];
169  slope[key] = slopes[i];
170  error_scaling[key] = pulls[i];
171  }
172  }
173  }
174 
175  inline void MeasureLA::calibrate(const std::pair<unsigned, LA_Filler_Fitter::Method> key,
177  result.calMeasured = std::make_pair<float, float>(
178  (result.measured.first - offset.find(key)->second) / slope.find(key)->second,
179  result.measured.second * error_scaling.find(key)->second / slope.find(key)->second);
180  }
181 
182  std::pair<uint32_t, LA_Filler_Fitter::Method> MeasureLA::calibration_key(
183  const std::string layer, const LA_Filler_Fitter::Method method) const {
184  std::regex format(".*(T[IO]B)_layer(\\d)([as]).*");
185  const bool isTIB = "TIB" == std::regex_replace(layer, format, "\\1");
186  const bool stereo = "s" == std::regex_replace(layer, format, "\\3");
187  const unsigned layerNum = boost::lexical_cast<unsigned>(std::regex_replace(layer, format, "\\2"));
188  return std::make_pair(LA_Filler_Fitter::layer_index(isTIB, stereo, layerNum), method);
189  }
190 
191  std::pair<uint32_t, LA_Filler_Fitter::Method> MeasureLA::calibration_key(
192  const uint32_t detid, const LA_Filler_Fitter::Method method) const {
193  const bool isTIB = SiStripDetId(detid).subDetector() == SiStripDetId::TIB;
194  const bool stereo = isTIB ? tTopo_.tibStereo(detid) : tTopo_.tobStereo(detid);
195  const unsigned layer = isTIB ? tTopo_.tibLayer(detid) : tTopo_.tobStereo(detid);
196 
197  return std::make_pair(LA_Filler_Fitter::layer_index(isTIB, stereo, layer), method);
198  }
199 
200 } // namespace sistrip
LA_Filler_Fitter::Method
Method
Definition: LA_Filler_Fitter.h:50
sistrip::MeasureLA::GRANULARITY
GRANULARITY
Definition: MeasureLA.h:23
sistrip::MeasureLA::byLayer
bool byLayer
Definition: MeasureLA.h:60
mps_fire.i
i
Definition: mps_fire.py:428
sistrip::MeasureLA::MODULESUMMARY
Definition: MeasureLA.h:23
sistrip::MeasureLA::inputFiles
const std::vector< std::string > inputFiles
Definition: MeasureLA.h:54
sistrip::MeasureLA::MODULE
Definition: MeasureLA.h:23
funct::false
false
Definition: Factorize.h:29
f
double f[11][100]
Definition: MuScleFitUtils.cc:78
LA_Filler_Fitter::Result
Definition: LA_Filler_Fitter.h:80
sistrip::MeasureLA::methods
int32_t methods
Definition: MeasureLA.h:59
LA_Filler_Fitter.h
sistrip::MeasureLA::summarize_module_muH_byLayer
void summarize_module_muH_byLayer(const LA_Filler_Fitter &)
Definition: MeasureLA.cc:68
contentValuesFiles.fullPath
fullPath
Definition: contentValuesFiles.py:64
edm
HLT enums.
Definition: AlignableModifier.h:19
AlcaSiPixelAliHarvester0T_cff.method
method
Definition: AlcaSiPixelAliHarvester0T_cff.py:41
sistrip::MeasureLA::store_calibrations
void store_calibrations()
Definition: MeasureLA.cc:156
edm::ESProducer::setWhatProduced
auto setWhatProduced(T *iThis, const es::Label &iLabel={})
Definition: ESProducer.h:163
Book::const_iterator
boost::filter_iterator< match_name, book_t::const_iterator > const_iterator
Definition: Book.h:56
sistrip::MeasureLA::byModule
bool byModule
Definition: MeasureLA.h:60
cms::cuda::assert
assert(be >=bs)
edm::VParameterSet
std::vector< ParameterSet > VParameterSet
Definition: ParameterSet.h:34
bookConverter.results
results
Definition: bookConverter.py:144
AlignmentProducer_cff.calibrations
calibrations
Definition: AlignmentProducer_cff.py:59
StandaloneTrackerTopology
Definition: StandaloneTrackerTopology.h:6
sistrip::MeasureLA::process_reports
void process_reports() const
Definition: MeasureLA.cc:90
TrackerTopology::tobStereo
uint32_t tobStereo(const DetId &id) const
Definition: TrackerTopology.h:275
sistrip::MeasureLA::calibrate
void calibrate(const std::pair< unsigned, LA_Filler_Fitter::Method >, LA_Filler_Fitter::Result &) const
Definition: MeasureLA.cc:175
sistrip::MeasureLA::MeasureLA
MeasureLA(const edm::ParameterSet &)
Definition: MeasureLA.cc:22
sistrip::MeasureLA::book
Book book
Definition: MeasureLA.h:63
sistrip::MeasureLA::offset
std::map< std::pair< uint32_t, LA_Filler_Fitter::Method >, float > offset
Definition: MeasureLA.h:58
LA_Filler_Fitter::layerLabel
std::string layerLabel(const SiStripDetId) const
Definition: LA_Filler.cc:127
sistrip::MeasureLA::stripsperbin
const unsigned stripsperbin
Definition: MeasureLA.h:62
StandaloneTrackerTopology.h
dqm-mbProfile.format
format
Definition: dqm-mbProfile.py:16
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:78
sistrip::MeasureLA::localybin
const float localybin
Definition: MeasureLA.h:61
LA_Filler_Fitter::method
static std::string method(Method m, bool fit=true)
Definition: LA_Filler_Fitter.h:61
Book::end
iterator end(string_t re=".*")
Definition: Book.h:65
sistrip::MeasureLA::reports
const edm::VParameterSet reports
Definition: MeasureLA.h:57
SiStripDetInfoFileReader.h
sistrip::MeasureLA::maxEvents
const unsigned maxEvents
Definition: MeasureLA.h:62
phase1PixelTopology::layer
constexpr std::array< uint8_t, layerIndexSize > layer
Definition: phase1PixelTopology.h:99
LA_Filler_Fitter::LAST_METHOD
Definition: LA_Filler_Fitter.h:58
TrackerTopology::tibStereo
uint32_t tibStereo(const DetId &id) const
Definition: TrackerTopology.h:279
geometryDiff.file
file
Definition: geometryDiff.py:13
Book::fill
void fill(double_t X, const char *name, uint_t NbinsX, double_t Xlow, double_t Xup, double_t W=1)
Definition: Book.h:96
sistrip::MeasureLA::slope
std::map< std::pair< uint32_t, LA_Filler_Fitter::Method >, float > slope
Definition: MeasureLA.h:58
sistrip::MeasureLA::produce
std::unique_ptr< SiStripLorentzAngle > produce(const SiStripLorentzAngleRcd &)
Definition: MeasureLA.cc:54
edm::ParameterSet
Definition: ParameterSet.h:47
sistrip::MeasureLA::inFileLocation
const std::string inFileLocation
Definition: MeasureLA.h:55
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
sistrip::MeasureLA::measurementPreferences
const edm::VParameterSet measurementPreferences
Definition: MeasureLA.h:57
LA_Filler_Fitter::layer_index
static unsigned layer_index(bool TIB, bool stereo, unsigned layer)
Definition: LA_Filler_Fitter.h:105
LA_Filler_Fitter::layer_results
static std::map< std::string, Result > layer_results(const Book &, const Method)
Definition: LA_Results.cc:70
sistrip::MeasureLA::LAYER
Definition: MeasureLA.h:23
gpuVertexFinder::hist
__shared__ Hist hist
Definition: gpuClusterTracksDBSCAN.h:48
sistrip::MeasureLA::write_report_text
void write_report_text(const std::string, const LA_Filler_Fitter::Method &, const std::map< T, LA_Filler_Fitter::Result > &) const
Definition: MeasureLA.cc:130
SiStripLorentzAngleRcd
Definition: SiStripCondDataRecords.h:25
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
LA_Filler_Fitter::fit
static void fit(Book &book)
Definition: LA_Filler_Fitter.h:110
sistrip::MeasureLA::write_report_plots
void write_report_plots(const std::string, const LA_Filler_Fitter::Method, const GRANULARITY) const
Definition: MeasureLA.cc:119
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
Book::iterator
boost::filter_iterator< match_name, book_t::iterator > iterator
Definition: Book.h:55
sistrip::MeasureLA::calibrations
const edm::VParameterSet calibrations
Definition: MeasureLA.h:57
Book::begin
iterator begin(string_t re=".*")
Definition: Book.h:57
std
Definition: JetResolutionObject.h:76
SiStripDetId::subDetector
SubDetector subDetector() const
Definition: SiStripDetId.h:105
sistrip::MeasureLA::write_report_text_ms
void write_report_text_ms(const std::string, const LA_Filler_Fitter::Method) const
Definition: MeasureLA.cc:143
Data_TkAlMinBias_Run2018C_PromptReco_v3_cff.maxEvents
maxEvents
Definition: Data_TkAlMinBias_Run2018C_PromptReco_v3_cff.py:3
format
SiStripDetId::TIB
static constexpr auto TIB
Definition: SiStripDetId.h:37
LA_Filler_Fitter
Definition: LA_Filler_Fitter.h:14
MeasureLA.h
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
sistrip::MeasureLA::tTopo_
TrackerTopology tTopo_
Definition: MeasureLA.h:65
submitPVValidationJobs.inputFiles
list inputFiles
Definition: submitPVValidationJobs.py:929
unpackBuffers-CaloStage1.offsets
offsets
Definition: unpackBuffers-CaloStage1.py:127
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
mps_fire.result
result
Definition: mps_fire.py:311
sistrip::MeasureLA::error_scaling
std::map< std::pair< uint32_t, LA_Filler_Fitter::Method >, float > error_scaling
Definition: MeasureLA.h:58
SiStripDetId
Detector identifier class for the strip tracker.
Definition: SiStripDetId.h:18
sistrip
sistrip classes
Definition: EnsembleCalibrationLA.cc:10
sistrip::MeasureLA::store_methods_and_granularity
void store_methods_and_granularity(const edm::VParameterSet &)
Definition: MeasureLA.cc:14
LA_Filler_Fitter::module_results
static std::map< uint32_t, Result > module_results(const Book &, const Method)
Definition: LA_Results.cc:60
LA_Filler_Fitter::FIRST_METHOD
Definition: LA_Filler_Fitter.h:52
LA_Filler_Fitter::fill
void fill(TTree *, Book &) const
Definition: LA_Filler.cc:7
sistrip::MeasureLA::granularity
static std::string granularity(int32_t g)
Definition: MeasureLA.h:24
sistrip::MeasureLA::calibration_key
std::pair< unsigned, LA_Filler_Fitter::Method > calibration_key(const std::string layer, const LA_Filler_Fitter::Method) const
Definition: MeasureLA.cc:182
crabWrapper.key
key
Definition: crabWrapper.py:19
StandaloneTrackerTopology::fromTrackerParametersXMLFile
TrackerTopology fromTrackerParametersXMLFile(const std::string &xmlFileName)
Definition: StandaloneTrackerTopology.cc:168
label
const char * label
Definition: PFTauDecayModeTools.cc:11
weight
Definition: weight.py:1
TrackerTopology::tibLayer
unsigned int tibLayer(const DetId &id) const
Definition: TrackerTopology.h:150