SiPixelActionExecutor

funcType

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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
#ifndef _SiPixelActionExecutor_h_
#define _SiPixelActionExecutor_h_

#include "CondFormats/DataRecord/interface/SiPixelFedCablingMapRcd.h"
#include "CondFormats/SiPixelObjects/interface/DetectorIndex.h"
#include "CondFormats/SiPixelObjects/interface/SiPixelFedCablingMap.h"
#include "CondFormats/SiPixelObjects/interface/SiPixelFrameConverter.h"
#include "DQM/SiPixelMonitorClient/interface/SiPixelConfigParser.h"
#include "DQM/SiPixelMonitorClient/interface/SiPixelConfigWriter.h"
#include "DQMServices/Core/interface/DQMStore.h"
#include <fstream>
#include <map>
#include <string>
#include <vector>

// For Tracker Map
enum funcType { EachBinContent, Entries, Mean, Sum, WeightedSum };
#define PI_12 0.261799
#define PI 3.141592
#define PI_2 1.570796

// Number of HalfCylinders in Endcap or number of Shells in Barrel, which is bigger
#define NLev1 4
// Number of Disks in Endcap or number of Layers in Barrel, which is bigger
#define NLev2 3
// Number of Blades in Endcap or number of Ladders in Barrel, which is bigger
#define NLev3 22
// Number of Modules - different for Endcap and Barrel, which is bigger
#define NLev4 7

#define NCyl 4
#define NDisk 2
#define NBlade 12
#define NModuleE 7

#define NShell 4
#define NLayer 3
#define NModuleB 4

#define NPoints 5

// End for Tracker Map

class SiPixelActionExecutor {
public:
  typedef dqm::legacy::DQMStore DQMStore;
  typedef dqm::legacy::MonitorElement MonitorElement;

  SiPixelActionExecutor(bool offlineXMLfile, bool Tier0Flag);
  ~SiPixelActionExecutor();

  void createSummary(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, bool isUpgrade);
  void bookDeviations(DQMStore::IBooker &iBooker, bool isUpgrade);
  void bookEfficiency(DQMStore::IBooker &iBooker, bool isUpgrade);
  void createEfficiency(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, bool isUpgrade);
  void fillEfficiency(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, bool isbarrel, bool isUpgrade);
  void fillEfficiencySummary(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter);
  void bookOccupancyPlots(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, bool hiRes, bool isbarrel);
  void bookOccupancyPlots(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, bool hiRes);
  void createOccupancy(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter);
  void normaliseAvDigiOcc(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter);
  void normaliseAvDigiOccVsLumi(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, int lumisec);
  bool readConfiguration(int &tkmap_freq,
                         int &sum_barrel_freq,
                         int &sum_endcap_freq,
                         int &sum_grandbarrel_freq,
                         int &sum_grandendcap_freq,
                         int &message_limit,
                         int &source_type,
                         int &calib_type);
  bool readConfiguration(int &tkmap_freq, int &summary_freq);
  void readConfiguration();
  int getLadder(const std::string &dname);
  int getBlade(const std::string &dname);

private:
  MonitorElement *getSummaryME(DQMStore::IBooker &iBooker,
                               DQMStore::IGetter &iGetter,
                               std::string me_name,
                               bool isUpgrade);
  MonitorElement *getFEDSummaryME(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, std::string me_name);
  void GetBladeSubdirs(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, std::vector<std::string> &blade_subdirs);
  void fillSummary(DQMStore::IBooker &iBooker,
                   DQMStore::IGetter &iGetter,
                   std::string dir_name,
                   std::vector<std::string> &me_names,
                   bool isbarrel,
                   bool isUpgrade);
  void fillFEDErrorSummary(DQMStore::IBooker &iBooker,
                           DQMStore::IGetter &iGetter,
                           std::string dir_name,
                           std::vector<std::string> &me_names);
  void fillGrandBarrelSummaryHistos(DQMStore::IBooker &iBooker,
                                    DQMStore::IGetter &iGetter,
                                    std::vector<std::string> &me_names,
                                    bool isUpgrade);
  void fillGrandEndcapSummaryHistos(DQMStore::IBooker &iBooker,
                                    DQMStore::IGetter &iGetter,
                                    std::vector<std::string> &me_names,
                                    bool isUpgrade);
  void getGrandSummaryME(DQMStore::IBooker &iBooker,
                         DQMStore::IGetter &iGetter,
                         int nbin,
                         std::string &me_name,
                         std::vector<MonitorElement *> &mes);

  void fillOccupancy(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, bool isbarrel);

  SiPixelConfigParser *configParser_;
  SiPixelConfigWriter *configWriter_;

  std::vector<std::string> summaryMENames;
  std::vector<std::string> tkMapMENames;

  int message_limit_;
  int source_type_;
  int calib_type_;
  int ndet_;
  bool offlineXMLfile_;
  bool Tier0Flag_;

  MonitorElement *OccupancyMap;
  MonitorElement *PixelOccupancyMap;
  MonitorElement *HitEfficiency_L1;
  MonitorElement *HitEfficiency_L2;
  MonitorElement *HitEfficiency_L3;
  MonitorElement *HitEfficiency_L4;
  MonitorElement *HitEfficiency_Dp1;
  MonitorElement *HitEfficiency_Dp2;
  MonitorElement *HitEfficiency_Dp3;
  MonitorElement *HitEfficiency_Dm1;
  MonitorElement *HitEfficiency_Dm2;
  MonitorElement *HitEfficiency_Dm3;
  MonitorElement *HitEfficiencySummary;
  MonitorElement *DEV_adc_Barrel;
  MonitorElement *DEV_ndigis_Barrel;
  MonitorElement *DEV_charge_Barrel;
  MonitorElement *DEV_nclusters_Barrel;
  MonitorElement *DEV_size_Barrel;
  MonitorElement *DEV_adc_Endcap;
  MonitorElement *DEV_ndigis_Endcap;
  MonitorElement *DEV_charge_Endcap;
  MonitorElement *DEV_nclusters_Endcap;
  MonitorElement *DEV_size_Endcap;

  TH2F *temp_H;
  TH2F *temp_1x2;
  TH2F *temp_1x5;
  TH2F *temp_2x3;
  TH2F *temp_2x4;
  TH2F *temp_2x5;
};
#endif