CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
cscdqm::Summary Class Reference

Hardware and Physics Efficiency data structures and routines. More...

#include <CSCDQM_Summary.h>

Public Member Functions

const Detector getDetector () const
 
const double GetEfficiencyArea (const unsigned int station) const
 Get Efficiency area for the station. More...
 
const double GetEfficiencyArea (Address adr) const
 Get Efficiency area for the address. More...
 
const double GetEfficiencyHW () const
 Get efficiency of the whole detector. More...
 
const double GetEfficiencyHW (const unsigned int station) const
 Get efficiency of the station. More...
 
const double GetEfficiencyHW (Address adr) const
 Get efficiency of the detector part supplied by the address. More...
 
const HWStatusBitSet GetValue (Address adr) const
 Get value of some address. More...
 
bool isChamberStandby (unsigned int side, unsigned int station, unsigned int ring, unsigned int chamber) const
 Check if chamber is in standby? More...
 
bool isChamberStandby (CSCDetId cid) const
 Check if chamber is in standby? More...
 
const int IsPhysicsReady (const unsigned int px, const unsigned int py)
 Check if the current partition element (aka eta/phi polygon) has at least 2 active HW elements in the area. More...
 
void ReadErrorChambers (const TH2 *&evs, const TH2 *&err, const HWStatusBit bit, const double eps_max=0.1, const double Sfail=5.0)
 Read Error data for Chambers. More...
 
void ReadReportingChambers (const TH2 *&h2, const double threshold=1.0)
 Read Reporting Chamber histogram and fill in detector map. More...
 
void ReadReportingChambersRef (const TH2 *&h2, const TH2 *&refh2, const double cold_coef=0.1, const double cold_Sfail=5.0, const double hot_coef=2.0, const double hot_Sfail=5.0)
 Read Reporting Chamber histogram and fill in detector map based on reference histogram. More...
 
void Reset ()
 Resets all detector map. More...
 
void ReSetValue (const HWStatusBit bit)
 ReSetValue for the whole of detector. More...
 
void ReSetValue (Address adr, const HWStatusBit bit)
 ReSet value recursivelly by following the supplied address. More...
 
const unsigned int setMaskedHWElements (std::vector< std::string > &tokens)
 Read HW element masks (strings), create Address and apply to detector map. More...
 
void SetValue (const HWStatusBit bit, const int value=1)
 SetValue for the whole of detector. More...
 
void SetValue (Address adr, const HWStatusBit bit, const int value=1)
 Set value recursivelly by following the supplied address. More...
 
 Summary ()
 Constructor. More...
 
void Write (TH2 *&h2, const unsigned int station) const
 Write detector map to H1 histogram (linear data) for the selected adr.station. More...
 
void WriteChamberState (TH2 *&h2, const int mask, const int value=1, const bool reset=true, const bool op_any=false) const
 Write State information to chamber histogram. More...
 
void WriteMap (TH2 *&h2)
 Write PhysicsReady Map to H2 histogram. More...
 
 ~Summary ()
 Destructor. More...
 

Private Member Functions

const bool ChamberAddressToCoords (const Address &adr, unsigned int &x, unsigned int &y) const
 Calculate CSCChamberMap histogram coordinates from Address. More...
 
const bool ChamberCoordsToAddress (const unsigned int x, const unsigned int y, Address &adr) const
 Calculate Address from CSCChamberMap histogram coordinates. More...
 
const double GetReportingArea (Address adr) const
 Calculate the reporting area for the address. More...
 

Private Attributes

Detector detector
 
HWStatusBitSet map [N_SIDES][N_STATIONS][N_RINGS][N_CHAMBERS][N_LAYERS][N_CFEBS][N_HVS]
 

Detailed Description

Hardware and Physics Efficiency data structures and routines.

Definition at line 78 of file CSCDQM_Summary.h.

Constructor & Destructor Documentation

cscdqm::Summary::Summary ( )

Constructor.

Definition at line 26 of file CSCDQM_Summary.cc.

References Reset().

26  : detector(NTICS, NTICS) {
27  Reset();
28  }
#define NTICS
void Reset()
Resets all detector map.
cscdqm::Summary::~Summary ( )

Destructor.

Definition at line 33 of file CSCDQM_Summary.cc.

33 { }

Member Function Documentation

const bool cscdqm::Summary::ChamberAddressToCoords ( const Address adr,
unsigned int &  x,
unsigned int &  y 
) const
private

Calculate CSCChamberMap histogram coordinates from Address.

Parameters
adrAddress
xX coordinate of histogram to be returned
yY coordinate of histogram to be returned
Returns
true if coords filled, false - otherwise

Definition at line 875 of file CSCDQM_Summary.cc.

References cscdqm::AddressMask::chamber, cscdqm::Address::chamber, cscdqm::Address::mask, cscdqm::AddressMask::ring, cscdqm::Address::ring, cscdqm::AddressMask::side, cscdqm::Address::side, cscdqm::AddressMask::station, and cscdqm::Address::station.

Referenced by WriteChamberState().

875  {
876 
877  if (!adr.mask.side || !adr.mask.station || !adr.mask.ring || !adr.mask.chamber) return false;
878 
879  x = adr.chamber;
880  y = 0;
881 
882  if (adr.side == 1) {
883  switch (adr.station) {
884  case 1:
885  y = 10;
886  if (adr.ring == 2) y = 11;
887  if (adr.ring == 3) y = 12;
888  break;
889  case 2:
890  y = 13;
891  if (adr.ring == 2) y = 14;
892  break;
893  case 3:
894  y = 15;
895  if (adr.ring == 2) y = 16;
896  break;
897  case 4:
898  y = 17;
899  if (adr.ring == 2) y = 18;
900  break;
901  }
902  } else
903  if (adr.side == 2) {
904  switch (adr.station) {
905  case 1:
906  y = 7;
907  if (adr.ring == 2) y = 8;
908  if (adr.ring == 1) y = 9;
909  break;
910  case 2:
911  y = 5;
912  if (adr.ring == 1) y = 6;
913  break;
914  case 3:
915  y = 3;
916  if (adr.ring == 1) y = 4;
917  break;
918  case 4:
919  y = 1;
920  if (adr.ring == 1) y = 2;
921  break;
922  }
923  }
924 
925  return true;
926 
927  }
Definition: DDAxes.h:10
const bool cscdqm::Summary::ChamberCoordsToAddress ( const unsigned int  x,
const unsigned int  y,
Address adr 
) const
private

Calculate Address from CSCChamberMap histogram coordinates.

Parameters
xX coordinate of histogram
yY coordinate of histogram
adrAddress to be filled in and returned
Returns
true if address was found and filled, false - otherwise

Definition at line 815 of file CSCDQM_Summary.cc.

References cscdqm::AddressMask::cfeb, cscdqm::AddressMask::chamber, cscdqm::Address::chamber, cscdqm::AddressMask::hv, cscdqm::AddressMask::layer, cscdqm::Address::mask, cscdqm::AddressMask::ring, cscdqm::Address::ring, cscdqm::AddressMask::side, cscdqm::Address::side, cscdqm::AddressMask::station, cscdqm::Address::station, and x.

Referenced by ReadErrorChambers(), ReadReportingChambers(), and ReadReportingChambersRef().

815  {
816 
817  if( x < 1 || x > 36 || y < 1 || y > 18) return false;
818 
819  adr.mask.side = adr.mask.station = adr.mask.ring = adr.mask.chamber = true;
820  adr.mask.layer = adr.mask.cfeb = adr.mask.hv = false;
821 
822  if ( y < 10 ) adr.side = 2;
823  else adr.side = 1;
824 
825  adr.chamber = x;
826 
827  if (y == 1 || y == 18) {
828  adr.station = 4;
829  adr.ring = 2;
830  } else
831  if (y == 2 || y == 17) {
832  adr.station = 4;
833  adr.ring = 1;
834  } else
835  if (y == 3 || y == 16) {
836  adr.station = 3;
837  adr.ring = 2;
838  } else
839  if (y == 4 || y == 15) {
840  adr.station = 3;
841  adr.ring = 1;
842  } else
843  if (y == 5 || y == 14) {
844  adr.station = 2;
845  adr.ring = 2;
846  } else
847  if (y == 6 || y == 13) {
848  adr.station = 2;
849  adr.ring = 1;
850  } else
851  if (y == 7 || y == 12) {
852  adr.station = 1;
853  adr.ring = 3;
854  } else
855  if (y == 8 || y == 11) {
856  adr.station = 1;
857  adr.ring = 2;
858  } else
859  if (y == 9 || y == 10) {
860  adr.station = 1;
861  adr.ring = 1;
862  }
863 
864  return true;
865 
866  }
Definition: DDAxes.h:10
const Detector cscdqm::Summary::getDetector ( ) const
inline

Definition at line 87 of file CSCDQM_Summary.h.

References detector.

Referenced by cscdqm::EventProcessor::processCSC(), and cscdqm::EventProcessor::updateEfficiencyHistos().

87 { return detector; }
const double cscdqm::Summary::GetEfficiencyArea ( const unsigned int  station) const

Get Efficiency area for the station.

Parameters
stationStation number 1..4
Returns
Reporting Area for the Station

Definition at line 612 of file CSCDQM_Summary.cc.

References cscdqm::AddressMask::cfeb, cscdqm::AddressMask::chamber, cscdqm::AddressMask::hv, cscdqm::AddressMask::layer, cscdqm::Address::mask, N_STATIONS, cscdqm::AddressMask::ring, cscdqm::AddressMask::side, relativeConstraints::station, and cscdqm::Address::station.

612  {
613  if (station <= 0 || station > N_STATIONS) return 0.0;
614 
615  Address adr;
616  adr.mask.side = adr.mask.ring = adr.mask.chamber = adr.mask.layer = adr.mask.cfeb = adr.mask.hv = false;
617  adr.station = true;
618  adr.station = station;
619 
620  return GetEfficiencyArea(adr);
621  }
const double GetEfficiencyArea(const unsigned int station) const
Get Efficiency area for the station.
#define N_STATIONS
const double cscdqm::Summary::GetEfficiencyArea ( Address  adr) const

Get Efficiency area for the address.

Parameters
adrAddress
Returns
Area in eta/phi space

Definition at line 628 of file CSCDQM_Summary.cc.

References cscdqm::Detector::Area(), cscdqm::AddressMask::cfeb, cscdqm::AddressMask::chamber, detector, GetReportingArea(), cscdqm::AddressMask::hv, cscdqm::AddressMask::layer, cscdqm::Address::mask, cscdqm::AddressMask::ring, cscdqm::AddressMask::side, cscdqm::AddressMask::station, and cscdqm::Address::station.

628  {
629  double all_area = 1;
630 
631  if (adr.mask.side == false &&
632  adr.mask.ring == false &&
633  adr.mask.chamber == false &&
634  adr.mask.layer == false &&
635  adr.mask.cfeb == false &&
636  adr.mask.hv == false &&
637  adr.mask.station == true)
638  all_area = detector.Area(adr.station);
639  else
640  all_area = detector.Area(adr);
641 
642  double rep_area = GetReportingArea(adr);
643  return rep_area / all_area;
644  }
const float Area(const unsigned int station) const
Calculate station area in eta/phi space.
const double GetReportingArea(Address adr) const
Calculate the reporting area for the address.
const double cscdqm::Summary::GetEfficiencyHW ( ) const

Get efficiency of the whole detector.

Returns
Detector efficiency rate (0..1)

Definition at line 521 of file CSCDQM_Summary.cc.

References cscdqm::AddressMask::cfeb, cscdqm::AddressMask::chamber, cscdqm::AddressMask::hv, cscdqm::AddressMask::layer, cscdqm::Address::mask, cscdqm::AddressMask::ring, cscdqm::AddressMask::side, and cscdqm::AddressMask::station.

Referenced by GetEfficiencyHW(), and cscdqm::EventProcessor::updateEfficiencyHistos().

521  {
522 
523  Address adr;
524  adr.mask.side = adr.mask.station = adr.mask.ring = adr.mask.chamber = adr.mask.layer = adr.mask.cfeb = adr.mask.hv = false;
525  return GetEfficiencyHW(adr);
526 
527  }
const double GetEfficiencyHW() const
Get efficiency of the whole detector.
const double cscdqm::Summary::GetEfficiencyHW ( const unsigned int  station) const

Get efficiency of the station.

Parameters
stationStation number
Returns
Detector efficiency rate (0..1)

Definition at line 534 of file CSCDQM_Summary.cc.

References cscdqm::AddressMask::cfeb, cscdqm::AddressMask::chamber, GetEfficiencyHW(), cscdqm::AddressMask::hv, cscdqm::AddressMask::layer, cscdqm::Address::mask, N_STATIONS, cscdqm::AddressMask::ring, cscdqm::AddressMask::side, relativeConstraints::station, cscdqm::AddressMask::station, and cscdqm::Address::station.

534  {
535 
536  Address adr;
537  adr.mask.side = adr.mask.station = adr.mask.ring = adr.mask.chamber = adr.mask.layer = adr.mask.cfeb = adr.mask.hv = false;
538 
539  if (station > 0 && station <= N_STATIONS) {
540  adr.mask.station = true;
541  adr.station = station;
542  } else {
543  return 0.0;
544  }
545 
546  return GetEfficiencyHW(adr);
547 
548  }
const double GetEfficiencyHW() const
Get efficiency of the whole detector.
#define N_STATIONS
const double cscdqm::Summary::GetEfficiencyHW ( Address  adr) const

Get efficiency of the detector part supplied by the address.

Parameters
adrAddress to watch efficiency for
Returns
Subdetector efficiency rate (0..1)

if not error - then OK!

Definition at line 555 of file CSCDQM_Summary.cc.

References cscdqm::AddressMask::cfeb, cscdqm::Address::cfeb, cscdqm::AddressMask::chamber, cscdqm::Address::chamber, detector, GetEfficiencyHW(), GetValue(), cscdqm::AddressMask::hv, cscdqm::Address::hv, HWSTATUSANYERROR, cscdqm::AddressMask::layer, cscdqm::Address::layer, cscdqm::Address::mask, N_LAYERS, N_SIDES, N_STATIONS, cscdqm::Detector::NumberOfChamberCFEBs(), cscdqm::Detector::NumberOfChamberHVs(), cscdqm::Detector::NumberOfChambers(), cscdqm::Detector::NumberOfRings(), cscdqm::AddressMask::ring, cscdqm::Address::ring, cscdqm::AddressMask::side, cscdqm::Address::side, cscdqm::AddressMask::station, cscdqm::Address::station, and ntuplemaker::status.

555  {
556  double sum = 0.0;
557 
558  if (!adr.mask.side) {
559  adr.mask.side = true;
560  for (adr.side = 1; adr.side <= N_SIDES; adr.side++) sum += GetEfficiencyHW(adr);
561  return sum / N_SIDES;
562  }
563 
564  if (!adr.mask.station) {
565  adr.mask.station = true;
566  for (adr.station = 1; adr.station <= N_STATIONS; adr.station++) sum += GetEfficiencyHW(adr);
567  return sum / N_STATIONS;
568  }
569 
570  if (!adr.mask.ring) {
571  adr.mask.ring = true;
572  for (adr.ring = 1; adr.ring <= detector.NumberOfRings(adr.station); adr.ring++) sum += GetEfficiencyHW(adr);
573  return sum / detector.NumberOfRings(adr.station);
574  }
575 
576  if (!adr.mask.chamber) {
577  adr.mask.chamber = true;
578  for (adr.chamber = 1; adr.chamber <= detector.NumberOfChambers(adr.station, adr.ring); adr.chamber++) sum += GetEfficiencyHW(adr);
579  return sum / detector.NumberOfChambers(adr.station, adr.ring);
580  }
581 
582  if (!adr.mask.layer) {
583  adr.mask.layer = true;
584  for (adr.layer = 1; adr.layer <= N_LAYERS; adr.layer++) sum += GetEfficiencyHW(adr);
585  return sum / N_LAYERS;
586  }
587 
588  if (!adr.mask.cfeb) {
589  adr.mask.cfeb = true;
590  for (adr.cfeb = 1; adr.cfeb <= detector.NumberOfChamberCFEBs(adr.station, adr.ring); adr.cfeb++) sum += GetEfficiencyHW(adr);
591  return sum / detector.NumberOfChamberCFEBs(adr.station, adr.ring);
592  }
593 
594  if (!adr.mask.hv) {
595  adr.mask.hv = true;
596  for (adr.hv = 1; adr.hv <= detector.NumberOfChamberHVs(adr.station, adr.ring); adr.hv++) sum += GetEfficiencyHW(adr);
597  return sum / detector.NumberOfChamberHVs(adr.station, adr.ring);
598  }
599 
602  if (HWSTATUSANYERROR(status)) return 0.0;
603  return 1.0;
604 
605  }
#define HWSTATUSANYERROR(s)
const HWStatusBitSet GetValue(Address adr) const
Get value of some address.
#define N_LAYERS
const unsigned int NumberOfRings(const unsigned int station) const
Returns the number of rings for the given station.
const unsigned int NumberOfChamberCFEBs(const unsigned int station, const unsigned int ring) const
Returns the number of CFEBs per Chamber on given Station/Ring.
const unsigned int NumberOfChamberHVs(const unsigned int station, const unsigned int ring) const
Returns the number of HVs per Chamber on given Station/Ring.
const double GetEfficiencyHW() const
Get efficiency of the whole detector.
#define N_STATIONS
#define N_SIDES
std::bitset< HWSTATUSBITSETSIZE > HWStatusBitSet
Hardware Status Bits structure used in Summary efficiency calculation and storage.
const unsigned int NumberOfChambers(const unsigned int station, const unsigned int ring) const
Returns the number of chambers for the given station and ring.
tuple status
Definition: ntuplemaker.py:245
const double cscdqm::Summary::GetReportingArea ( Address  adr) const
private

Calculate the reporting area for the address.

Parameters
adrAddress to calculate
Returns
Area in eta/phi space

NOT errorous!

Definition at line 651 of file CSCDQM_Summary.cc.

References cscdqm::Detector::Area(), cscdqm::AddressMask::cfeb, cscdqm::Address::cfeb, cscdqm::AddressMask::chamber, cscdqm::Address::chamber, detector, GetValue(), cscdqm::AddressMask::hv, cscdqm::Address::hv, HWSTATUSANYERROR, cscdqm::AddressMask::layer, cscdqm::Address::mask, N_SIDES, N_STATIONS, cscdqm::Detector::NumberOfChamberCFEBs(), cscdqm::Detector::NumberOfChamberHVs(), cscdqm::Detector::NumberOfChambers(), cscdqm::Detector::NumberOfRings(), cscdqm::AddressMask::ring, cscdqm::Address::ring, cscdqm::AddressMask::side, cscdqm::Address::side, cscdqm::AddressMask::station, cscdqm::Address::station, and ntuplemaker::status.

Referenced by GetEfficiencyArea().

651  {
652  double sum = 0.0;
653 
654  if (!adr.mask.side) {
655  adr.mask.side = true;
656  for (adr.side = 1; adr.side <= N_SIDES; adr.side++) sum += GetReportingArea(adr);
657  return sum;
658  }
659 
660  if (!adr.mask.station) {
661  adr.mask.station = true;
662  for (adr.station = 1; adr.station <= N_STATIONS; adr.station++) sum += GetReportingArea(adr);
663  return sum;
664  }
665 
666  if (!adr.mask.ring) {
667  adr.mask.ring = true;
668  for (adr.ring = 1; adr.ring <= detector.NumberOfRings(adr.station); adr.ring++) sum += GetReportingArea(adr);
669  return sum;
670  }
671 
672  if (!adr.mask.chamber) {
673  adr.mask.chamber = true;
674  for (adr.chamber = 1; adr.chamber <= detector.NumberOfChambers(adr.station, adr.ring); adr.chamber++) sum += GetReportingArea(adr);
675  return sum;
676  }
677 
678  if (!adr.mask.cfeb) {
679  adr.mask.cfeb = true;
680  for (adr.cfeb = 1; adr.cfeb <= detector.NumberOfChamberCFEBs(adr.station, adr.ring); adr.cfeb++) sum += GetReportingArea(adr);
681  return sum;
682  }
683 
684  if (!adr.mask.hv) {
685  adr.mask.hv = true;
686  for (adr.hv = 1; adr.hv <= detector.NumberOfChamberHVs(adr.station, adr.ring); adr.hv++) sum += GetReportingArea(adr);
687  return sum;
688  }
689 
690  adr.mask.layer = false;
691 
694  if (!HWSTATUSANYERROR(status)) {
695  return detector.Area(adr);
696  }
697  return 0.0;
698 
699  }
#define HWSTATUSANYERROR(s)
const float Area(const unsigned int station) const
Calculate station area in eta/phi space.
const HWStatusBitSet GetValue(Address adr) const
Get value of some address.
const unsigned int NumberOfRings(const unsigned int station) const
Returns the number of rings for the given station.
const unsigned int NumberOfChamberCFEBs(const unsigned int station, const unsigned int ring) const
Returns the number of CFEBs per Chamber on given Station/Ring.
const unsigned int NumberOfChamberHVs(const unsigned int station, const unsigned int ring) const
Returns the number of HVs per Chamber on given Station/Ring.
#define N_STATIONS
#define N_SIDES
std::bitset< HWSTATUSBITSETSIZE > HWStatusBitSet
Hardware Status Bits structure used in Summary efficiency calculation and storage.
const double GetReportingArea(Address adr) const
Calculate the reporting area for the address.
const unsigned int NumberOfChambers(const unsigned int station, const unsigned int ring) const
Returns the number of chambers for the given station and ring.
tuple status
Definition: ntuplemaker.py:245
const HWStatusBitSet cscdqm::Summary::GetValue ( Address  adr) const

Get value of some address.

Parameters
adrAddress of atomic element to return value from
Returns
Value of the requested element

Definition at line 738 of file CSCDQM_Summary.cc.

References cscdqm::AddressMask::cfeb, cscdqm::Address::cfeb, cscdqm::AddressMask::chamber, cscdqm::Address::chamber, detector, cscdqm::AddressMask::hv, cscdqm::Address::hv, cscdqm::AddressMask::layer, cscdqm::Address::layer, map, cscdqm::Address::mask, N_LAYERS, N_SIDES, N_STATIONS, cscdqm::Detector::NumberOfChamberCFEBs(), cscdqm::Detector::NumberOfChamberHVs(), cscdqm::Detector::NumberOfChambers(), cscdqm::Detector::NumberOfRings(), cscdqm::AddressMask::ring, cscdqm::Address::ring, cscdqm::AddressMask::side, cscdqm::Address::side, evf::utils::state, cscdqm::AddressMask::station, and cscdqm::Address::station.

Referenced by GetEfficiencyHW(), GetReportingArea(), isChamberStandby(), IsPhysicsReady(), Write(), and WriteChamberState().

738  {
739 
741  state.reset();
742 
743  if (!adr.mask.side) {
744  adr.mask.side = true;
745  for (adr.side = 1; adr.side <= N_SIDES; adr.side++) state |= GetValue(adr);
746  return state;
747  }
748 
749  if (!adr.mask.station) {
750  adr.mask.station = true;
751  for (adr.station = 1; adr.station <= N_STATIONS; adr.station++) state |= GetValue(adr);
752  return state;
753  }
754 
755  if (!adr.mask.ring) {
756  adr.mask.ring = true;
757  for (adr.ring = 1; adr.ring <= detector.NumberOfRings(adr.station); adr.ring++) state |= GetValue(adr);
758  return state;
759  }
760 
761  if (!adr.mask.chamber) {
762  adr.mask.chamber = true;
763  for (adr.chamber = 1; adr.chamber <= detector.NumberOfChambers(adr.station, adr.ring); adr.chamber++) state |= GetValue(adr);
764  return state;
765  }
766 
767  if (!adr.mask.layer) {
768  adr.mask.layer = true;
769  for (adr.layer = 1; adr.layer <= N_LAYERS; adr.layer++) state |= GetValue(adr);
770  return state;
771  }
772 
773  if (!adr.mask.cfeb) {
774  adr.mask.cfeb = true;
775  for (adr.cfeb = 1; adr.cfeb <= detector.NumberOfChamberCFEBs(adr.station, adr.ring); adr.cfeb++) state |= GetValue(adr);
776  return state;
777  }
778 
779  if (!adr.mask.hv) {
780  adr.mask.hv = true;
781  for (adr.hv = 1; adr.hv <= detector.NumberOfChamberHVs(adr.station, adr.ring); adr.hv++) state |= GetValue(adr);
782  return state;
783  }
784 
785  return map[adr.side - 1][adr.station - 1][adr.ring - 1][adr.chamber - 1][adr.layer - 1][adr.cfeb - 1][adr.hv - 1];
786 
787  }
HWStatusBitSet map[N_SIDES][N_STATIONS][N_RINGS][N_CHAMBERS][N_LAYERS][N_CFEBS][N_HVS]
const HWStatusBitSet GetValue(Address adr) const
Get value of some address.
#define N_LAYERS
const unsigned int NumberOfRings(const unsigned int station) const
Returns the number of rings for the given station.
const unsigned int NumberOfChamberCFEBs(const unsigned int station, const unsigned int ring) const
Returns the number of CFEBs per Chamber on given Station/Ring.
const unsigned int NumberOfChamberHVs(const unsigned int station, const unsigned int ring) const
Returns the number of HVs per Chamber on given Station/Ring.
#define N_STATIONS
#define N_SIDES
std::bitset< HWSTATUSBITSETSIZE > HWStatusBitSet
Hardware Status Bits structure used in Summary efficiency calculation and storage.
char state
Definition: procUtils.cc:75
const unsigned int NumberOfChambers(const unsigned int station, const unsigned int ring) const
Returns the number of chambers for the given station and ring.
bool cscdqm::Summary::isChamberStandby ( unsigned int  side,
unsigned int  station,
unsigned int  ring,
unsigned int  chamber 
) const

Check if chamber is in standby?

Parameters
sideSide
stationStation
ringRing
chamberChamber
Returns
true if chamber is in standby, false - otherwise

Definition at line 709 of file CSCDQM_Summary.cc.

References cscdqm::AddressMask::cfeb, cscdqm::AddressMask::chamber, cscdqm::Address::chamber, GetValue(), cscdqm::AddressMask::hv, HWSTATUSANY, cscdqm::AddressMask::layer, cscdqm::Address::mask, relativeConstraints::ring, cscdqm::AddressMask::ring, cscdqm::Address::ring, cscdqm::AddressMask::side, cscdqm::Address::side, relativeConstraints::station, cscdqm::AddressMask::station, and cscdqm::Address::station.

Referenced by isChamberStandby(), and cscdqm::EventProcessor::processCSC().

709  {
710 
711  Address adr;
712  adr.mask.side = adr.mask.station = adr.mask.ring = adr.mask.chamber = true;
713  adr.mask.layer = adr.mask.cfeb = adr.mask.hv = false;
714  adr.side = side;
715  adr.station = station;
716  adr.ring = ring;
717  adr.chamber = chamber;
718 
719  //std::cout << adr << " = " << HWSTATUSANY(GetValue(adr), 0x1000) << "\n";
720 
721  return HWSTATUSANY(GetValue(adr), 0x1000);
722  }
const HWStatusBitSet GetValue(Address adr) const
Get value of some address.
#define HWSTATUSANY(s, m)
bool cscdqm::Summary::isChamberStandby ( CSCDetId  cid) const

Check if chamber is in standby?

Parameters
cidChamber identifier
Returns
true if chamber is in standby, false - otherwise

Definition at line 729 of file CSCDQM_Summary.cc.

References CSCDetId::chamber(), CSCDetId::endcap(), isChamberStandby(), CSCDetId::ring(), and CSCDetId::station().

729  {
730  return isChamberStandby(cid.endcap(), cid.station(), cid.ring(), cid.chamber());
731  }
int chamber() const
Definition: CSCDetId.h:70
bool isChamberStandby(unsigned int side, unsigned int station, unsigned int ring, unsigned int chamber) const
Check if chamber is in standby?
int endcap() const
Definition: CSCDetId.h:95
int ring() const
Definition: CSCDetId.h:77
int station() const
Definition: CSCDetId.h:88
const int cscdqm::Summary::IsPhysicsReady ( const unsigned int  px,
const unsigned int  py 
)

Check if the current partition element (aka eta/phi polygon) has at least 2 active HW elements in the area.

Parameters
pxpartition element index in x axis
pypartition element index in y axis
Returns
1 if this polygon is ok for physics and reporting, 0 - if it is ok but does not report, -1 - otherwise

If at least 2 stations with data and without errors = OK

Else, if at least one station errorous = ERROR

Else, if at least one station masked = MASKED

Else, not sufficient data = OK

Definition at line 485 of file CSCDQM_Summary.cc.

References cscdqm::AddressBox::adr, cscdqm::DATA, detector, GetValue(), HWSTATUSANYERROR, i, cscdqm::MASKED, N_STATIONS, cscdqm::Detector::NextAddressBoxByPartition(), cscdqm::Address::station, and ntuplemaker::status.

Referenced by WriteMap().

485  {
486 
487  AddressBox *box;
488 
490 
491  unsigned int i = 0;
492  while(detector.NextAddressBoxByPartition(i, px, py, box)) {
493  status[box->adr.station - 1] |= GetValue(box->adr);
494  }
495 
496  unsigned int cdata = 0, cerror = 0, cmask = 0;
497  for (unsigned int i = 0; i < N_STATIONS; i++) {
498  if (HWSTATUSANYERROR(status[i])) {
499  cerror++;
500  } else {
501  if (status[i].test(MASKED)) cmask++;
502  if (status[i].test(DATA)) cdata++;
503  }
504  }
505 
507  if (cdata > 1) return 1;
509  if (cerror > 0) return -1;
511  if (cmask > 0) return 2;
513  return 0;
514 
515  }
int i
Definition: DBlmapReader.cc:9
#define HWSTATUSANYERROR(s)
const HWStatusBitSet GetValue(Address adr) const
Get value of some address.
const bool NextAddressBoxByPartition(unsigned int &i, const unsigned int px, const unsigned int py, AddressBox *&box)
Address box iterator by partition.
Data available (reporting)
#define N_STATIONS
std::bitset< HWSTATUSBITSETSIZE > HWStatusBitSet
Hardware Status Bits structure used in Summary efficiency calculation and storage.
tuple status
Definition: ntuplemaker.py:245
void cscdqm::Summary::ReadErrorChambers ( const TH2 *&  evs,
const TH2 *&  err,
const HWStatusBit  bit,
const double  eps_max = 0.1,
const double  Sfail = 5.0 
)

Read Error data for Chambers.

Parameters
evsHistogram for number of events (total)
errHistogram for number of errors
bitError bit to set
eps_maxMaximum tolerance of errors (rate)
SfailSignificance threshold for failure report

Definition at line 201 of file CSCDQM_Summary.cc.

References ChamberCoordsToAddress(), cscdqm::Utility::checkError(), LOG_WARN, MultiGaussianStateTransform::N, n, ReSetValue(), SetValue(), x, and detailsBasic3DVector::y.

Referenced by cscdqm::EventProcessor::updateEfficiencyHistos().

201  {
202 
203  if(evs->GetXaxis()->GetXmin() <= 1 && evs->GetXaxis()->GetXmax() >= 36 &&
204  evs->GetYaxis()->GetXmin() <= 1 && evs->GetYaxis()->GetXmax() >= 18 &&
205  err->GetXaxis()->GetXmin() <= 1 && err->GetXaxis()->GetXmax() >= 36 &&
206  err->GetYaxis()->GetXmin() <= 1 && err->GetYaxis()->GetXmax() >= 18) {
207 
208  Address adr;
209  unsigned int N = 0, n = 0;
210 
211  for(unsigned int x = 1; x <= 36; x++) {
212  for(unsigned int y = 1; y <= 18; y++) {
213  N = int(evs->GetBinContent(x, y));
214  n = int(err->GetBinContent(x, y));
215  if (ChamberCoordsToAddress(x, y, adr)) {
216  if(Utility::checkError(N, n, eps_max, Sfail)) {
217  SetValue(adr, bit);
218  } else {
219  ReSetValue(adr, bit);
220  }
221  }
222  }
223  }
224  } else {
225  LOG_WARN << "cscdqm::Summary.ReadErrorChambers routine. Wrong histogram dimensions!";
226  }
227  }
static bool checkError(const unsigned int N, const unsigned int n, const double threshold, const double sigfail)
Check the hypothesis that error events (n) value above threshold comparing with the expected 0 and st...
void ReSetValue(const HWStatusBit bit)
ReSetValue for the whole of detector.
void SetValue(const HWStatusBit bit, const int value=1)
SetValue for the whole of detector.
#define LOG_WARN
Definition: CSCDQM_Logger.h:42
const bool ChamberCoordsToAddress(const unsigned int x, const unsigned int y, Address &adr) const
Calculate Address from CSCChamberMap histogram coordinates.
Definition: DDAxes.h:10
void cscdqm::Summary::ReadReportingChambers ( const TH2 *&  h2,
const double  threshold = 1.0 
)

Read Reporting Chamber histogram and fill in detector map.

Parameters
h2Histogram to read
thresholdMin bin value to set HW element as reporting

Definition at line 62 of file CSCDQM_Summary.cc.

References ChamberCoordsToAddress(), cscdqm::DATA, LOG_WARN, ReSetValue(), SetValue(), x, detailsBasic3DVector::y, and detailsBasic3DVector::z.

Referenced by cscdqm::EventProcessor::updateEfficiencyHistos().

62  {
63 
64  if(h2->GetXaxis()->GetXmin() <= 1 && h2->GetXaxis()->GetXmax() >= 36 &&
65  h2->GetYaxis()->GetXmin() <= 1 && h2->GetYaxis()->GetXmax() >= 18) {
66 
67  Address adr;
68  double z = 0.0;
69 
70  for(unsigned int x = 1; x <= 36; x++) {
71  for(unsigned int y = 1; y <= 18; y++) {
72  z = h2->GetBinContent(x, y);
73  if(ChamberCoordsToAddress(x, y, adr)) {
74  if(z >= threshold) {
75  SetValue(adr, DATA);
76  } else {
77  ReSetValue(adr, DATA);
78  }
79  }
80  }
81  }
82  } else {
83  LOG_WARN << "cscdqm::Summary.ReadReportingChambers routine. Wrong histogram dimensions!";
84  }
85  }
double double double z
void ReSetValue(const HWStatusBit bit)
ReSetValue for the whole of detector.
void SetValue(const HWStatusBit bit, const int value=1)
SetValue for the whole of detector.
#define LOG_WARN
Definition: CSCDQM_Logger.h:42
const bool ChamberCoordsToAddress(const unsigned int x, const unsigned int y, Address &adr) const
Calculate Address from CSCChamberMap histogram coordinates.
Definition: DDAxes.h:10
void cscdqm::Summary::ReadReportingChambersRef ( const TH2 *&  h2,
const TH2 *&  refh2,
const double  cold_coef = 0.1,
const double  cold_Sfail = 5.0,
const double  hot_coef = 2.0,
const double  hot_Sfail = 5.0 
)

Read Reporting Chamber histogram and fill in detector map based on reference histogram.

Parameters
h2Histogram to read
refh2Reference histogram of hit occupancies
cold_coefMinimum tolerance of difference (rate) to set COLD (not reporting) HW element
cold_SfailSignificance threshold for COLD HW element
hot_coefMinimum tolerance of difference (rate) to set HOT HW element
hot_SfailSignificance threshold for HOT HW element

Rate Factor calculation

Reset some bits

Definition at line 97 of file CSCDQM_Summary.cc.

References ChamberCoordsToAddress(), cscdqm::Utility::checkOccupancy(), cscdqm::COLD, cscdqm::DATA, cscdqm::HOT, LOG_WARN, MultiGaussianStateTransform::N, n, funct::pow(), ReSetValue(), SetValue(), x, and detailsBasic3DVector::y.

Referenced by cscdqm::EventProcessor::updateEfficiencyHistos().

97  {
98 
99  if(h2->GetXaxis()->GetXmin() <= 1 && h2->GetXaxis()->GetXmax() >= 36 &&
100  h2->GetYaxis()->GetXmin() <= 1 && h2->GetYaxis()->GetXmax() >= 18 &&
101  refh2->GetXaxis()->GetXmin() <= 1 && refh2->GetXaxis()->GetXmax() >= 36 &&
102  refh2->GetYaxis()->GetXmin() <= 1 && refh2->GetYaxis()->GetXmax() >= 18) {
103 
105  double num = 1.0, denum = 1.0;
106  for(unsigned int x = 1; x <= 36; x++) {
107  for(unsigned int y = 1; y <= 18; y++) {
108  double Nij = h2->GetBinContent(x, y);
109  double Nrefij = refh2->GetBinContent(x, y);
110  if (Nij > 0) {
111  num += Nrefij;
112  denum += pow(Nrefij, 2.0) / Nij;
113  }
114  }
115  }
116  double factor = num / denum;
117 
118  Address adr;
119  unsigned int N = 0, n = 0;
120 
121  for(unsigned int x = 1; x <= 36; x++) {
122  for(unsigned int y = 1; y <= 18; y++) {
123 
124  N = int(refh2->GetBinContent(x, y) * factor);
125  n = int(h2->GetBinContent(x, y));
126 
127  if(ChamberCoordsToAddress(x, y, adr)) {
128 
130  ReSetValue(adr, HOT);
131  ReSetValue(adr, COLD);
132 
133  if (n == 0) {
134  ReSetValue(adr, DATA);
135  } else {
136  SetValue(adr, DATA);
137  }
138 
139  switch (Utility::checkOccupancy(N, n, cold_coef, hot_coef, cold_Sfail, hot_Sfail)) {
140  case -1:
141  SetValue(adr, COLD);
142 
143  /*
144  std::cout << "adr = " << detector.AddressName(adr);
145  std::cout << ", x = " << x << ", y = " << y;
146  std::cout << ", value = " << GetValue(adr);
147  std::cout << ", refh2 = " << refh2->GetBinContent(x, y);
148  std::cout << ", factor = " << factor;
149  std::cout << ", N = " << N;
150  std::cout << ", n = " << n;
151  std::cout << ", num = " << num;
152  std::cout << ", denum = " << denum;
153  std::cout << ", rate = " << (N > 0 ? n / N : 0);
154  std::cout << ", cold_coef = " << cold_coef;
155  std::cout << ", = COLD";
156  std::cout << "\n";
157  */
158 
159  break;
160  case 1:
161  SetValue(adr, HOT);
162 
163  /*
164  std::cout << "adr = " << detector.AddressName(adr);
165  std::cout << ", x = " << x << ", y = " << y;
166  std::cout << ", value = " << GetValue(adr);
167  std::cout << ", refh2 = " << refh2->GetBinContent(x, y);
168  std::cout << ", factor = " << factor;
169  std::cout << ", N = " << N;
170  std::cout << ", n = " << n;
171  std::cout << ", num = " << num;
172  std::cout << ", denum = " << denum;
173  std::cout << ", rate = " << (N > 0 ? n / N : 0);
174  std::cout << ", hot_coef = " << hot_coef;
175  std::cout << ", = HOT";
176  std::cout << "\n";
177  */
178 
179  break;
180  };
181 
182 
183  }
184 
185  }
186  }
187 
188  } else {
189  LOG_WARN << "cscdqm::Summary.ReadReportingChambersRef routine. Wrong histogram dimensions!";
190  }
191  }
HW element was masked out (not in readout)
void ReSetValue(const HWStatusBit bit)
ReSetValue for the whole of detector.
HW element is hot by comparing with reference histogram.
void SetValue(const HWStatusBit bit, const int value=1)
SetValue for the whole of detector.
long long int num
Definition: procUtils.cc:71
#define LOG_WARN
Definition: CSCDQM_Logger.h:42
static short checkOccupancy(const unsigned int N, const unsigned int n, const double low_threshold, const double high_threshold, const double low_sigfail, const double high_sigfail)
Check the hypothesis that observed events (n) value is too low or too high comparing with the expecte...
const bool ChamberCoordsToAddress(const unsigned int x, const unsigned int y, Address &adr) const
Calculate Address from CSCChamberMap histogram coordinates.
Definition: DDAxes.h:10
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
void cscdqm::Summary::Reset ( )

Resets all detector map.

Setting Zeros (no data) for each HW element (and beyond)

Definition at line 38 of file CSCDQM_Summary.cc.

References cscdqm::AddressMask::cfeb, cscdqm::Address::cfeb, cscdqm::AddressMask::chamber, cscdqm::Address::chamber, cscdqm::AddressMask::hv, cscdqm::Address::hv, HWSTATUSBITSETSIZE, cscdqm::AddressMask::layer, cscdqm::Address::mask, N_CFEBS, N_CHAMBERS, N_HVS, N_RINGS, ReSetValue(), cscdqm::AddressMask::ring, cscdqm::Address::ring, cscdqm::AddressMask::side, and cscdqm::AddressMask::station.

Referenced by Summary().

38  {
39  Address adr;
40 
42  adr.mask.side = adr.mask.station = adr.mask.layer = false;
43  adr.mask.ring = adr.mask.chamber = adr.mask.cfeb = adr.mask.hv = true;
44  for (adr.ring = 1; adr.ring <= N_RINGS; adr.ring++) {
45  for (adr.chamber = 1; adr.chamber <= N_CHAMBERS; adr.chamber++) {
46  for (adr.cfeb = 1; adr.cfeb <= N_CFEBS; adr.cfeb++) {
47  for (adr.hv = 1; adr.hv <= N_HVS; adr.hv++) {
48  for (unsigned int bit = 0; bit < HWSTATUSBITSETSIZE; bit++) {
49  ReSetValue(adr, (HWStatusBit) bit);
50  }
51  }
52  }
53  }
54  }
55  }
#define N_CHAMBERS
HWStatusBit
Hardware Status Bit values used in Summary efficiency calculation.
#define N_CFEBS
void ReSetValue(const HWStatusBit bit)
ReSetValue for the whole of detector.
#define N_HVS
#define HWSTATUSBITSETSIZE
#define N_RINGS
void cscdqm::Summary::ReSetValue ( const HWStatusBit  bit)

ReSetValue for the whole of detector.

Parameters
bitStatus bit to set

Definition at line 393 of file CSCDQM_Summary.cc.

References SetValue().

Referenced by ReadErrorChambers(), ReadReportingChambers(), ReadReportingChambersRef(), and Reset().

393  {
394  SetValue(bit, 0);
395  }
void SetValue(const HWStatusBit bit, const int value=1)
SetValue for the whole of detector.
void cscdqm::Summary::ReSetValue ( Address  adr,
const HWStatusBit  bit 
)

ReSet value recursivelly by following the supplied address.

Parameters
adrAddress to be updated
bitStatus bit to set

Definition at line 402 of file CSCDQM_Summary.cc.

References SetValue().

402  {
403  SetValue(adr, bit, 0);
404  }
void SetValue(const HWStatusBit bit, const int value=1)
SetValue for the whole of detector.
const unsigned int cscdqm::Summary::setMaskedHWElements ( std::vector< std::string > &  tokens)

Read HW element masks (strings), create Address and apply to detector map.

Parameters
tokensVector of mask strings
Returns
number of read and applied masks

Definition at line 794 of file CSCDQM_Summary.cc.

References cscdqm::Detector::AddressFromString(), detector, cscdqm::MASKED, csvReporter::r, and SetValue().

Referenced by cscdqm::EventProcessor::maskHWElements().

794  {
795  unsigned int applied = 0;
796 
797  for (unsigned int r = 0; r < tokens.size(); r++) {
798  std::string token = (std::string) tokens.at(r);
799  Address adr;
800  if (detector.AddressFromString(token, adr)) {
801  SetValue(adr, MASKED);
802  applied++;
803  }
804  }
805  return applied;
806  }
const bool AddressFromString(const std::string &str_address, Address &adr) const
Construct address from string.
Data available (reporting)
void SetValue(const HWStatusBit bit, const int value=1)
SetValue for the whole of detector.
void cscdqm::Summary::SetValue ( const HWStatusBit  bit,
const int  value = 1 
)

SetValue for the whole of detector.

Parameters
bitStatus bit to set
valueValue to set

Definition at line 411 of file CSCDQM_Summary.cc.

References cscdqm::AddressMask::cfeb, cscdqm::AddressMask::chamber, cscdqm::AddressMask::hv, cscdqm::AddressMask::layer, cscdqm::Address::mask, cscdqm::AddressMask::ring, cscdqm::AddressMask::side, and cscdqm::AddressMask::station.

Referenced by ReadErrorChambers(), ReadReportingChambers(), ReadReportingChambersRef(), ReSetValue(), setMaskedHWElements(), SetValue(), and cscdqm::EventProcessor::standbyEfficiencyHistos().

411  {
412  Address adr;
413  adr.mask.side = adr.mask.station = adr.mask.ring = adr.mask.chamber = adr.mask.layer = adr.mask.cfeb = adr.mask.hv = false;
414  SetValue(adr, bit, value);
415  }
void SetValue(const HWStatusBit bit, const int value=1)
SetValue for the whole of detector.
void cscdqm::Summary::SetValue ( Address  adr,
const HWStatusBit  bit,
const int  value = 1 
)

Set value recursivelly by following the supplied address.

Parameters
adrAddress to be updated
bitStatus bit to set
valueValue to be set

Definition at line 423 of file CSCDQM_Summary.cc.

References cscdqm::AddressMask::cfeb, cscdqm::Address::cfeb, cscdqm::AddressMask::chamber, cscdqm::Address::chamber, detector, cscdqm::AddressMask::hv, cscdqm::Address::hv, cscdqm::AddressMask::layer, cscdqm::Address::layer, map, cscdqm::Address::mask, N_CFEBS, N_CHAMBERS, N_HVS, N_LAYERS, N_RINGS, N_SIDES, N_STATIONS, cscdqm::Detector::NumberOfChamberCFEBs(), cscdqm::Detector::NumberOfChamberHVs(), cscdqm::Detector::NumberOfChambers(), cscdqm::Detector::NumberOfRings(), cscdqm::AddressMask::ring, cscdqm::Address::ring, SetValue(), cscdqm::AddressMask::side, cscdqm::Address::side, cscdqm::AddressMask::station, and cscdqm::Address::station.

423  {
424 
425  if (!adr.mask.side) {
426  adr.mask.side = true;
427  for (adr.side = 1; adr.side <= N_SIDES; adr.side++) SetValue(adr, bit, value);
428  return;
429  }
430 
431  if (!adr.mask.station) {
432  adr.mask.station = true;
433  for (adr.station = 1; adr.station <= N_STATIONS; adr.station++) SetValue(adr, bit, value);
434  return;
435  }
436 
437  if (!adr.mask.ring) {
438  adr.mask.ring = true;
439  for (adr.ring = 1; adr.ring <= detector.NumberOfRings(adr.station); adr.ring++) SetValue(adr, bit, value);
440  return;
441  }
442 
443  if (!adr.mask.chamber) {
444  adr.mask.chamber = true;
445  for (adr.chamber = 1; adr.chamber <= detector.NumberOfChambers(adr.station, adr.ring); adr.chamber++) SetValue(adr, bit, value);
446  return;
447  }
448 
449  if (!adr.mask.layer) {
450  adr.mask.layer = true;
451  for (adr.layer = 1; adr.layer <= N_LAYERS; adr.layer++) SetValue(adr, bit, value);
452  return;
453  }
454 
455  if (!adr.mask.cfeb) {
456  adr.mask.cfeb = true;
457  for (adr.cfeb = 1; adr.cfeb <= detector.NumberOfChamberCFEBs(adr.station, adr.ring); adr.cfeb++) SetValue(adr, bit, value);
458  return;
459  }
460 
461  if (!adr.mask.hv) {
462  adr.mask.hv = true;
463  for (adr.hv = 1; adr.hv <= detector.NumberOfChamberHVs(adr.station, adr.ring); adr.hv++) SetValue(adr, bit, value);
464  return;
465  }
466 
467  if( adr.side > 0 && adr.side <= N_SIDES && adr.station > 0 && adr.station <= N_STATIONS &&
468  adr.ring > 0 && adr.ring <= N_RINGS && adr.chamber > 0 && adr.chamber <= N_CHAMBERS &&
469  adr.layer > 0 && adr.layer <= N_LAYERS && adr.cfeb > 0 && adr.cfeb <= N_CFEBS && adr.hv > 0 && adr.hv <= N_HVS) {
470 
471  map[adr.side - 1][adr.station - 1][adr.ring - 1][adr.chamber - 1][adr.layer - 1][adr.cfeb - 1][adr.hv - 1].set(bit, value);
472 
473  }
474 
475  }
#define N_CHAMBERS
HWStatusBitSet map[N_SIDES][N_STATIONS][N_RINGS][N_CHAMBERS][N_LAYERS][N_CFEBS][N_HVS]
#define N_LAYERS
const unsigned int NumberOfRings(const unsigned int station) const
Returns the number of rings for the given station.
const unsigned int NumberOfChamberCFEBs(const unsigned int station, const unsigned int ring) const
Returns the number of CFEBs per Chamber on given Station/Ring.
const unsigned int NumberOfChamberHVs(const unsigned int station, const unsigned int ring) const
Returns the number of HVs per Chamber on given Station/Ring.
#define N_CFEBS
#define N_STATIONS
#define N_HVS
void SetValue(const HWStatusBit bit, const int value=1)
SetValue for the whole of detector.
#define N_SIDES
const unsigned int NumberOfChambers(const unsigned int station, const unsigned int ring) const
Returns the number of chambers for the given station and ring.
#define N_RINGS
void cscdqm::Summary::Write ( TH2 *&  h2,
const unsigned int  station 
) const

Write detector map to H1 histogram (linear data) for the selected adr.station.

Parameters
h2Histogram to write data to
stationstation number (1-4) to write data for

Definition at line 234 of file CSCDQM_Summary.cc.

References cscdqm::AddressBox::adr, cscdqm::AddressMask::cfeb, cscdqm::Address::cfeb, cscdqm::AddressMask::chamber, cscdqm::Address::chamber, cscdqm::DATA, detector, GetValue(), cscdqm::AddressMask::hv, cscdqm::Address::hv, HWSTATUSANYERROR, i, cscdqm::AddressMask::layer, cscdqm::Address::mask, cscdqm::MASKED, N_STATIONS, cscdqm::Detector::NextAddressBox(), cscdqm::AddressMask::ring, cscdqm::Address::ring, cscdqm::AddressMask::side, cscdqm::Address::side, relativeConstraints::station, cscdqm::AddressMask::station, cscdqm::Address::station, ntuplemaker::status, indexGen::title, x, cscdqm::AddressBox::xmax, cscdqm::AddressBox::xmin, detailsBasic3DVector::y, cscdqm::AddressBox::ymax, and cscdqm::AddressBox::ymin.

Referenced by cscdqm::EventProcessor::updateEfficiencyHistos().

234  {
235  const AddressBox* box;
236  Address adr, tadr;
237  float area_all = 0.0, area_rep = 0.0;
238 
239  if(station < 1 || station > N_STATIONS) return;
240 
241  adr.mask.side = adr.mask.ring = adr.mask.chamber = adr.mask.layer = adr.mask.cfeb = adr.mask.hv = false;
242  adr.mask.station = true;
243  adr.station = station;
244 
245  unsigned int i = 0;
246 
247  while (detector.NextAddressBox(i, box, adr)) {
248 
249  unsigned int x = 1 + (box->adr.side - 1) * 9 + (box->adr.ring - 1) * 3 + (box->adr.hv - 1);
250  unsigned int y = 1 + (box->adr.chamber - 1) * 5 + (box->adr.cfeb - 1);
251 
252  tadr = box->adr;
254 
255  float area_box = fabs((box->xmax - box->xmin) * (box->ymax - box->ymin));
256 
257  if (status.test(MASKED)) {
258  h2->SetBinContent(x, y, 2.0);
259  } else {
260  area_all += area_box;
261  if (HWSTATUSANYERROR(status)) {
262  h2->SetBinContent(x, y, -1.0);
263  } else {
264  area_rep += area_box;
265  if (status.test(DATA)) {
266  h2->SetBinContent(x, y, 1.0);
267  } else {
268  h2->SetBinContent(x, y, 0.0);
269  }
270  }
271  }
272 
273  }
274 
275  TString title = Form("ME%d Status: Physics Efficiency %.2f%%", station, (area_rep / area_all) * 100.0);
276  h2->SetTitle(title);
277 
278  }
int i
Definition: DBlmapReader.cc:9
#define HWSTATUSANYERROR(s)
const bool NextAddressBox(unsigned int &i, const AddressBox *&box, const Address &mask) const
Address box iterator by mask.
const HWStatusBitSet GetValue(Address adr) const
Get value of some address.
Data available (reporting)
#define N_STATIONS
std::bitset< HWSTATUSBITSETSIZE > HWStatusBitSet
Hardware Status Bits structure used in Summary efficiency calculation and storage.
Definition: DDAxes.h:10
tuple status
Definition: ntuplemaker.py:245
void cscdqm::Summary::WriteChamberState ( TH2 *&  h2,
const int  mask,
const int  value = 1,
const bool  reset = true,
const bool  op_any = false 
) const

Write State information to chamber histogram.

Parameters
h2histogram to write to
maskmask of errors to check while writing
valueto write to if state fits mask
resetshould all chamber states be reseted to 0 prior writing?
op_anyShould chamber be marked as errorous on any bit in mask? false - for all.

Definition at line 351 of file CSCDQM_Summary.cc.

References cscdqm::AddressMask::cfeb, cscdqm::AddressMask::chamber, cscdqm::Address::chamber, ChamberAddressToCoords(), detector, GetValue(), cscdqm::AddressMask::hv, HWSTATUSANY, HWSTATUSEQUALS, cscdqm::AddressMask::layer, LOG_WARN, cscdqm::Address::mask, N_SIDES, N_STATIONS, cscdqm::Detector::NumberOfChambers(), cscdqm::Detector::NumberOfRings(), cscdqm::AddressMask::ring, cscdqm::Address::ring, cscdqm::AddressMask::side, cscdqm::Address::side, cscdqm::AddressMask::station, cscdqm::Address::station, x, and detailsBasic3DVector::y.

Referenced by cscdqm::EventProcessor::standbyEfficiencyHistos(), and cscdqm::EventProcessor::writeShifterHistograms().

351  {
352 
353  if(h2->GetXaxis()->GetXmin() <= 1 && h2->GetXaxis()->GetXmax() >= 36 &&
354  h2->GetYaxis()->GetXmin() <= 1 && h2->GetYaxis()->GetXmax() >= 18) {
355 
356  unsigned int x, y;
357  Address adr;
358 
359  adr.mask.side = adr.mask.station = adr.mask.ring = adr.mask.chamber = true;
360  adr.mask.layer = adr.mask.cfeb = adr.mask.hv = false;
361 
362  for (adr.side = 1; adr.side <= N_SIDES; adr.side++) {
363  for (adr.station = 1; adr.station <= N_STATIONS; adr.station++) {
364  for (adr.ring = 1; adr.ring <= detector.NumberOfRings(adr.station); adr.ring++) {
365  for (adr.chamber = 1; adr.chamber <= detector.NumberOfChambers(adr.station, adr.ring); adr.chamber++) {
366  if (ChamberAddressToCoords(adr, x, y)) {
367  HWStatusBitSet hwValue = GetValue(adr);
368  bool hit = (op_any ? HWSTATUSANY(hwValue, mask) : HWSTATUSEQUALS(hwValue, mask));
369 
370  // std::cout << "x = " << x << ", y = " << y << ", value = " << GetValue(adr) << std::endl;
371  // std::cout << "adr = " << detector.AddressName(adr) << ", x = " << x << ", y = " << y << ", value = " << GetValue(adr) << std::endl;
372  if (hit) {
373  h2->SetBinContent(x, y, 1.0 * value);
374  } else if (reset) {
375  h2->SetBinContent(x, y, 0.0);
376  }
377  }
378  }
379  }
380  }
381  }
382 
383  } else {
384  LOG_WARN << "cscdqm::Summary.WriteChamberState routine. Wrong histogram dimensions!";
385  }
386 
387  }
const HWStatusBitSet GetValue(Address adr) const
Get value of some address.
#define HWSTATUSANY(s, m)
const unsigned int NumberOfRings(const unsigned int station) const
Returns the number of rings for the given station.
#define HWSTATUSEQUALS(s, m)
const bool ChamberAddressToCoords(const Address &adr, unsigned int &x, unsigned int &y) const
Calculate CSCChamberMap histogram coordinates from Address.
#define N_STATIONS
#define N_SIDES
std::bitset< HWSTATUSBITSETSIZE > HWStatusBitSet
Hardware Status Bits structure used in Summary efficiency calculation and storage.
#define LOG_WARN
Definition: CSCDQM_Logger.h:42
Definition: DDAxes.h:10
const unsigned int NumberOfChambers(const unsigned int station, const unsigned int ring) const
Returns the number of chambers for the given station and ring.
void reset(double vett[256])
Definition: TPedValues.cc:11
void cscdqm::Summary::WriteMap ( TH2 *&  h2)

Write PhysicsReady Map to H2 histogram.

Parameters
h2Histogram to write map to

Definition at line 284 of file CSCDQM_Summary.cc.

References IsPhysicsReady(), LOG_WARN, NTICS, indexGen::title, relativeConstraints::value, x, and detailsBasic3DVector::y.

Referenced by cscdqm::EventProcessor::updateEfficiencyHistos().

284  {
285 
286  unsigned int rep_el = 0, csc_el = 0;
287 
288  if(h2->GetXaxis()->GetXmin() <= 1 && h2->GetXaxis()->GetXmax() >= NTICS &&
289  h2->GetYaxis()->GetXmin() <= 1 && h2->GetYaxis()->GetXmax() >= NTICS) {
290 
291  float xd = 5.0 / NTICS, yd = 1.0 * (2.0 * 3.14159) / NTICS;
292 
293  float xmin, xmax, ymin, ymax;
294 
295  for(unsigned int x = 0; x < NTICS; x++) {
296 
297  xmin = -2.5 + xd * x;
298  xmax = xmin + xd;
299 
300  for(unsigned int y = 0; y < NTICS; y++) {
301 
302  double value = 0.0;
303 
304  if (xmin == -2.5 || xmax == 2.5) continue;
305  if (xmin >= -1 && xmax <= 1) continue;
306 
307  ymin = yd * y;
308  ymax = ymin + yd;
309 
310  switch(IsPhysicsReady(x, y)) {
311  case -1:
312  value = -1.0;
313  break;
314  case 0:
315  value = 0.0;
316  rep_el++;
317  break;
318  case 1:
319  value = 1.0;
320  rep_el++;
321  break;
322  case 2:
323  value = 2.0;
324  rep_el++;
325  }
326 
327  h2->SetBinContent(x + 1, y + 1, value);
328  csc_el++;
329 
330  }
331  }
332 
333  } else {
334  LOG_WARN << "cscdqm::Summary.WriteMap routine. Wrong histogram dimensions!";
335  }
336 
337  TString title = Form("EMU Status: Physics Efficiency %.2f%%", (csc_el == 0 ? 0.0 : (1.0 * rep_el) / csc_el) * 100.0);
338  h2->SetTitle(title);
339 
340  }
const int IsPhysicsReady(const unsigned int px, const unsigned int py)
Check if the current partition element (aka eta/phi polygon) has at least 2 active HW elements in the...
#define NTICS
#define LOG_WARN
Definition: CSCDQM_Logger.h:42
Definition: DDAxes.h:10

Member Data Documentation

Detector cscdqm::Summary::detector
private

Atomic HW element status matrix

Definition at line 124 of file CSCDQM_Summary.h.

Referenced by GetValue(), and SetValue().