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
#include "Calibration/Tools/interface/EcalIndexingTools.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"

#include <iostream>

EcalIndexingTools* EcalIndexingTools::instance_ = nullptr;

void EcalIndexingTools::setBinRange(
    int nBinsEta, double minEta, double maxEta, int nBinsEt, double minEt, double maxEt) {
  //  std::cout<< "[EcalIndexingTools::setBinRange] setting values "<< nBinsEta << " " << minEta << " " << maxEta << std::endl;

  totNumberOfBins_ = nBinsEta * nBinsEt;

  nBinsEt_ = nBinsEt;
  nBinsEta_ = nBinsEta;

  minEt_ = minEt;
  minEta_ = minEta;
  maxEt_ = maxEt;
  maxEta_ = maxEta;

  //  std::cout<< "[EcalIndexingTools::setBinRange] read back values: "<< nBinsEta_ << " " << minEta_ << " " << maxEta_ << std::endl;

  return;
}

int EcalIndexingTools::getProgressiveIndex(double myEta, double myEt) {
  std::cout << "minEt_ " << minEt_ << std::endl;
  std::cout << "minEta_ " << minEta_ << std::endl;
  std::cout << "maxEt_ " << maxEt_ << std::endl;
  std::cout << "maxEta_ " << maxEta_ << std::endl;

  ///INITIALIZE BOUNDARIES

  double BoundaryEt[100] = {-99.};
  double BoundaryEta[100] = {-99.};

  for (int i = 0; i < (nBinsEt_ + 1); i++) {
    BoundaryEt[i] = minEt_ + i * ((maxEt_ - minEt_) / (double)nBinsEt_);
    //    std::cout << "i " << i << " BoundaryEt[i] "<< BoundaryEt[i] <<std::endl;
  }

  for (int i = 0; i < (nBinsEta_ + 1); i++) {
    BoundaryEta[i] = minEta_ + i * ((maxEta_ - minEta_) / (double)nBinsEta_);
    //std::cout << "i " << i << " BoundaryEta[i] "<< BoundaryEta[i] <<std::endl;
  }

  ////FIND ETA BIN AND ET BIN, SEPARATELY
  int etBin(-1);
  int etaBin(-1);

  for (int i = 0; i < nBinsEta_; i++) {
    if (myEta > BoundaryEta[i] && myEta <= BoundaryEta[i + 1])
      etaBin = i;
  }

  for (int i = 0; i < nBinsEt_; i++) {
    if (myEt > BoundaryEt[i] && myEt <= BoundaryEt[i + 1])
      etBin = i;
  }

  // std::cout << " myEta "<< myEta << " myEt "<< myEt << " etaBin "<< etaBin << " etBin "<< etBin << std::endl;

  /////////////FIND UNIQUE PROGRESSIVE INDEX

  int in = etaBin * nBinsEta_ + etBin;

  //std::cout << "Progressive index " << in << std::endl;

  return in;
}