SiStripGainCosmicCalculator

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
#ifndef CalibTracker_SiStripChannelGain_SiStripGainCosmicCalculator_h
#define CalibTracker_SiStripChannelGain_SiStripGainCosmicCalculator_h
// -*- C++ -*-
// Package:    SiStripApvGainCalculator
// Class:      SiStripApvGainCalculator
/**\class SiStripApvGainCalculator SiStripApvGainCalculator.cc CalibTracker/SiStripChannelGain/src/SiStripApvGainCalculator.cc
 Description: <one line class summary>
 Implementation: <Notes on implementation>
*/
// Original Author:  Dorian Kcira, Pierre Rodeghiero
//         Created:  Mon Nov 20 10:04:31 CET 2006
#include "CommonTools/ConditionDBWriter/interface/ConditionDBWriter.h"
#include "CondFormats/SiStripObjects/interface/SiStripApvGain.h"
#include <vector>
#include "TF1.h"
#include "TH1F.h"
#include "TObjArray.h"
#include "TFile.h"
#include "TString.h"
#include <fstream>
#include <sstream>
#include <memory>

#include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
#include "CalibFormats/SiStripObjects/interface/SiStripDetCabling.h"

#include "Geometry/Records/interface/TrackerTopologyRcd.h"
#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
#include "CalibTracker/Records/interface/SiStripDetCablingRcd.h"

class SiStripGainCosmicCalculator : public ConditionDBWriter<SiStripApvGain> {
public:
  explicit SiStripGainCosmicCalculator(const edm::ParameterSet&);
  ~SiStripGainCosmicCalculator() override;

private:
  void algoAnalyze(const edm::Event&, const edm::EventSetup&) override;
  void algoBeginJob(const edm::EventSetup&) override;
  void algoEndJob() override;
  std::unique_ptr<SiStripApvGain> getNewObject() override;

private:
  std::pair<double, double> getPeakOfLandau(TH1F* inputHisto);
  double moduleWidth(const uint32_t detid);
  double moduleThickness(const uint32_t detid);

private:
  std::string TrackProducer;
  std::string TrackLabel;
  //
  TObjArray* HlistAPVPairs;
  TObjArray* HlistOtherHistos;
  uint32_t total_nr_of_events;
  double ExpectedChargeDeposition;
  std::map<uint32_t, double> thickness_map;  // map of detector id to respective thickness
  std::vector<uint32_t> SelectedDetIds;
  std::vector<uint32_t> detModulesToBeExcluded;
  unsigned int MinNrEntries;
  double MaxChi2OverNDF;
  bool outputHistogramsInRootFile;
  TString outputFileName;
  bool printdebug_;

  edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> tTopoToken_;
  edm::ESGetToken<SiStripDetCabling, SiStripDetCablingRcd> detCablingToken_;
  edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> tkGeomToken_;
  const TrackerTopology* tTopo_ = nullptr;
  const SiStripDetCabling* siStripDetCabling_ = nullptr;
  const TrackerGeometry* tkGeom_ = nullptr;
};
#endif