Container1D

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 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
#ifndef Container1D_h
#define Container1D_h

/*
 *      file:           Container1D.h
 *      Author:         Viktor Khristenko
 *
 *      Description:
 *              1D Container
 */
#include "DQM/HcalCommon/interface/Container.h"
#include "DQM/HcalCommon/interface/DetectorQuantity.h"
#include "DQM/HcalCommon/interface/ElectronicsQuantity.h"
#include "DQM/HcalCommon/interface/HashFilter.h"
#include "DQM/HcalCommon/interface/HashMapper.h"
#include "DQM/HcalCommon/interface/TrigTowerQuantity.h"
#include "DQM/HcalCommon/interface/Utilities.h"
#include "DQM/HcalCommon/interface/ValueQuantity.h"

#include <string>
#include <unordered_map>
#include <vector>

namespace hcaldqm {
  class Container1D : public Container {
  public:
    Container1D();
    //      Initialize Container
    //      @folder - folder name where to start saving - root.
    //      By default it will be the Task's name.
    //
    Container1D(std::string const &folder,
                hashfunctions::HashType,
                quantity::Quantity *,
                quantity::Quantity *qy = new quantity::ValueQuantity(quantity::fN));
    ~Container1D() override;

    //      Initialize Container
    //      @folder - folder name where to save. Should already include the
    //      Tasks's name
    //      @nametitle - namebase of the name and of the title
    //
    virtual void initialize(std::string const &folder,
                            hashfunctions::HashType,
                            quantity::Quantity *,
                            quantity::Quantity *qy = new quantity::ValueQuantity(quantity::fN),
                            int debug = 0);

    //      @qname - to replace the QyvsQx naming
    virtual void initialize(std::string const &folder,
                            std::string const &qname,
                            hashfunctions::HashType,
                            quantity::Quantity *,
                            quantity::Quantity *qy = new quantity::ValueQuantity(quantity::fN),
                            int debug = 0);
    using Container::initialize;

    //      filling by hash
    virtual void fill(uint32_t);
    virtual void fill(uint32_t, int);
    virtual void fill(uint32_t, double);
    virtual void fill(uint32_t, int, double);
    virtual void fill(uint32_t, int, int);
    virtual void fill(uint32_t, double, double);

    //      using DetId as mapper
    virtual void fill(HcalDetId const &);
    virtual void fill(HcalDetId const &, int);
    virtual void fill(HcalDetId const &, double);
    virtual void fill(HcalDetId const &, int, double);
    virtual void fill(HcalDetId const &, int, int);
    virtual void fill(HcalDetId const &, double, double);

    virtual double getBinEntries(HcalDetId const &);
    virtual double getBinEntries(HcalDetId const &, int);
    virtual double getBinEntries(HcalDetId const &, double);
    virtual double getBinEntries(HcalDetId const &did, int x, int) { return getBinEntries(did, x); }
    virtual double getBinEntries(HcalDetId const &did, int x, double) { return getBinEntries(did, x); }
    virtual double getBinEntries(HcalDetId const &did, double x, double) { return getBinEntries(did, x); }

    virtual double getBinContent(HcalDetId const &);
    virtual double getBinContent(HcalDetId const &, int);
    virtual double getBinContent(HcalDetId const &, double);
    virtual double getBinContent(HcalDetId const &did, int x, int) { return getBinContent(did, x); }
    virtual double getBinContent(HcalDetId const &did, int x, double) { return getBinContent(did, x); }
    virtual double getBinContent(HcalDetId const &did, double x, double) { return getBinContent(did, x); }
    virtual double getMean(HcalDetId const &, int axis = 1);
    virtual double getRMS(HcalDetId const &, int axix = 1);

    virtual void setBinContent(HcalDetId const &, int);
    virtual void setBinContent(HcalDetId const &, double);
    virtual void setBinContent(HcalDetId const &, int, int);
    virtual void setBinContent(HcalDetId const &, int, double);
    virtual void setBinContent(HcalDetId const &, double, double);
    virtual void setBinContent(HcalDetId const &, double, int);
    virtual void setBinContent(HcalDetId const &id, int x, int y, int) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalDetId const &id, int x, double y, int) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalDetId const &id, double x, int y, int) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalDetId const &id, double x, double y, int) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalDetId const &id, int x, int y, double) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalDetId const &id, int x, double y, double) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalDetId const &id, double x, int y, double) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalDetId const &id, double x, double y, double) { setBinContent(id, x, y); }

    //      using ElectronicsId
    virtual void fill(HcalElectronicsId const &);
    virtual void fill(HcalElectronicsId const &, int);
    virtual void fill(HcalElectronicsId const &, double);
    virtual void fill(HcalElectronicsId const &, int, double);
    virtual void fill(HcalElectronicsId const &, int, int);
    virtual void fill(HcalElectronicsId const &, double, double);

    virtual double getBinEntries(HcalElectronicsId const &);
    virtual double getBinEntries(HcalElectronicsId const &, int);
    virtual double getBinEntries(HcalElectronicsId const &, double);
    virtual double getBinEntries(HcalElectronicsId const &eid, int x, int) { return getBinEntries(eid, x); }
    virtual double getBinEntries(HcalElectronicsId const &eid, int x, double) { return getBinEntries(eid, x); }
    virtual double getBinEntries(HcalElectronicsId const &eid, double x, double) { return getBinEntries(eid, x); }

    virtual double getBinContent(HcalElectronicsId const &);
    virtual double getBinContent(HcalElectronicsId const &, int);
    virtual double getBinContent(HcalElectronicsId const &, double);
    virtual double getBinContent(HcalElectronicsId const &eid, int x, int) { return getBinContent(eid, x); }
    virtual double getBinContent(HcalElectronicsId const &eid, int x, double) { return getBinContent(eid, x); }
    virtual double getBinContent(HcalElectronicsId const &eid, double x, double) { return getBinContent(eid, x); }
    virtual double getMean(HcalElectronicsId const &, int axis = 1);
    virtual double getRMS(HcalElectronicsId const &, int axis = 1);

    virtual void setBinContent(HcalElectronicsId const &, int);
    virtual void setBinContent(HcalElectronicsId const &, double);
    virtual void setBinContent(HcalElectronicsId const &, int, int);
    virtual void setBinContent(HcalElectronicsId const &, int, double);
    virtual void setBinContent(HcalElectronicsId const &, double, double);
    virtual void setBinContent(HcalElectronicsId const &, double, int);
    virtual void setBinContent(HcalElectronicsId const &id, int x, int y, int) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalElectronicsId const &id, int x, double y, int) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalElectronicsId const &id, double x, int y, int) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalElectronicsId const &id, double x, double y, int) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalElectronicsId const &id, int x, int y, double) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalElectronicsId const &id, int x, double y, double) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalElectronicsId const &id, double x, int y, double) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalElectronicsId const &id, double x, double y, double) { setBinContent(id, x, y); }

    //      using DetId as mapper
    virtual void fill(HcalTrigTowerDetId const &);
    virtual void fill(HcalTrigTowerDetId const &, int);
    virtual void fill(HcalTrigTowerDetId const &, double);
    virtual void fill(HcalTrigTowerDetId const &, int, double);
    virtual void fill(HcalTrigTowerDetId const &, int, int);
    virtual void fill(HcalTrigTowerDetId const &, double, double);

    virtual double getBinEntries(HcalTrigTowerDetId const &);
    virtual double getBinEntries(HcalTrigTowerDetId const &, int);
    virtual double getBinEntries(HcalTrigTowerDetId const &, double);
    virtual double getBinEntries(HcalTrigTowerDetId const &tid, int x, int) { return getBinEntries(tid, x); }
    virtual double getBinEntries(HcalTrigTowerDetId const &tid, int x, double) { return getBinEntries(tid, x); }
    virtual double getBinEntries(HcalTrigTowerDetId const &tid, double x, double) { return getBinEntries(tid, x); }

    virtual double getBinContent(HcalTrigTowerDetId const &);
    virtual double getBinContent(HcalTrigTowerDetId const &, int);
    virtual double getBinContent(HcalTrigTowerDetId const &, double);
    virtual double getBinContent(HcalTrigTowerDetId const &tid, int x, int) { return getBinContent(tid, x); }
    virtual double getBinContent(HcalTrigTowerDetId const &tid, int x, double) { return getBinContent(tid, x); }
    virtual double getBinContent(HcalTrigTowerDetId const &tid, double x, double) { return getBinContent(tid, x); }
    virtual double getMean(HcalTrigTowerDetId const &, int axis = 1);
    virtual double getRMS(HcalTrigTowerDetId const &, int axis = 1);

    virtual void setBinContent(HcalTrigTowerDetId const &, int);
    virtual void setBinContent(HcalTrigTowerDetId const &, double);
    virtual void setBinContent(HcalTrigTowerDetId const &, int, int);
    virtual void setBinContent(HcalTrigTowerDetId const &, int, double);
    virtual void setBinContent(HcalTrigTowerDetId const &, double, double);
    virtual void setBinContent(HcalTrigTowerDetId const &, double, int);
    virtual void setBinContent(HcalTrigTowerDetId const &id, int x, int y, int) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalTrigTowerDetId const &id, int x, double y, int) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalTrigTowerDetId const &id, double x, int y, int) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalTrigTowerDetId const &id, double x, double y, int) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalTrigTowerDetId const &id, int x, int y, double) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalTrigTowerDetId const &id, int x, double y, double) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalTrigTowerDetId const &id, double x, int y, double) { setBinContent(id, x, y); }
    virtual void setBinContent(HcalTrigTowerDetId const &id, double x, double y, double) { setBinContent(id, x, y); }

    //      booking using IBooker
    //      @aux - typically a cut or anything else
    //      @subsystem - subsystem under which to save
    //
    virtual void book(DQMStore::IBooker &,
                      HcalElectronicsMap const *,
                      std::string subsystem = "Hcal",
                      std::string aux = "");
    virtual void book(DQMStore::IBooker &,
                      HcalElectronicsMap const *,
                      filter::HashFilter const &,
                      std::string subsystem = "Hcal",
                      std::string aux = "");

    //      loading using DQMStore
    //      @DQMStore
    //      @emap
    //      @prepend - name to prepend to /<subsystem> - used when load
    //      a file to DQMStore without stripping and in case a name is
    //      appended
    //      @mode - if StripRunDirs - then there will be no Run Summary
    //      otherwise there is Run Summary folde. Used for retrieving
    //      MEs which were loaded into the DQM store from a file
    virtual void load(DQMStore::IGetter &,
                      HcalElectronicsMap const *,
                      std::string const &subsystem = "Hcal",
                      std::string const &aux = "");
    virtual void load(DQMStore::IGetter &,
                      HcalElectronicsMap const *,
                      filter::HashFilter const &,
                      std::string const &subsystem = "Hcal",
                      std::string const &aux = "");

    //      reset all the elements
    virtual void reset();

    //      print all the elements
    virtual void print();

    //      TO BE USED IN THE FUTURE!
    virtual void extendAxisRange(int);

    virtual void showOverflowX(bool showOverflow);
    virtual void showOverflowY(bool showOverflow);

  protected:
    virtual void customize(MonitorElement *);

    typedef std::unordered_map<uint32_t, MonitorElement *> MEMap;
    MEMap _mes;
    mapper::HashMapper _hashmap;
    quantity::Quantity *_qx;
    quantity::Quantity *_qy;
  };
}  // namespace hcaldqm

#endif