FairRoot/PandaRoot
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
PndEmcSimCrystalCalibrator Class Reference

Class to simulate a Calibration. More...

#include <PndEmcSimCrystalCalibrator.h>

Inheritance diagram for PndEmcSimCrystalCalibrator:
PndEmcAbsCrystalCalibrator

Public Types

enum  CalibrationStatus_t { kCALOK, kCALMISSING, kCALERROR, kCALOVERFLOW }
 

Public Member Functions

 PndEmcSimCrystalCalibrator (Int_t verbose=0)
 
virtual void SetCalibration (Int_t ModId, Double_t cal, Int_t SignalNr=1, Double_t overflow=-1)
 Set Calibration for a Module. More...
 
virtual void CreateRandomCalibration (Double_t Sigma)
 Creates a random gaussion distributed calibration for all crystals Not implemented yet. More...
 
virtual Bool_t Init ()
 Init. More...
 
virtual ~PndEmcSimCrystalCalibrator ()
 
virtual CalibrationStatus_t Calibrate (Double_t &Energy, Long_t DetId, Int_t SignalNr=1)
 Apply CrystalCalibration to Energy of Crystal derId. More...
 
virtual Bool_t ReInit ()
 ReInit. More...
 
virtual void SetVerbose (Int_t verbose)
 

Protected Member Functions

 ClassDef (PndEmcAbsCrystalCalibrator, 1)
 

Private Member Functions

 ClassDef (PndEmcSimCrystalCalibrator, 2)
 

Private Attributes

Double_t fRandomCal
 
Double_t fRandomSigma
 
std::vector< std::map< Int_t,
std::pair< Double_t, Double_t > > > 
fModuleCalibrationMaps
 
std::vector< std::map< Long_t,
Double_t > > 
fCrystalCalibrationMaps
 
Int_t fVerbose
 

Detailed Description

Class to simulate a Calibration.

Author
Ch. Hammann chamm.nosp@m.ann@.nosp@m.hiskp.nosp@m..uni.nosp@m.-bonn.nosp@m..de

Definition at line 22 of file PndEmcSimCrystalCalibrator.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

PndEmcSimCrystalCalibrator::PndEmcSimCrystalCalibrator ( Int_t  verbose = 0)
virtual PndEmcSimCrystalCalibrator::~PndEmcSimCrystalCalibrator ( )
inlinevirtual

Definition at line 47 of file PndEmcSimCrystalCalibrator.h.

47 {};

Member Function Documentation

PndEmcAbsCrystalCalibrator::CalibrationStatus_t PndEmcSimCrystalCalibrator::Calibrate ( Double_t Energy,
Long_t  detId,
Int_t  SignalNr = 1 
)
virtual

Apply CrystalCalibration to Energy of Crystal derId.

Parameters
Double_tEnergy in Crystal
Long_tdetId of Crystal
Int_tNumber of Signal (in MultiWaveform)
Returns
PndEmcAbsCrystalCalibrator::kCALOK if successfull

Implements PndEmcAbsCrystalCalibrator.

Definition at line 36 of file PndEmcSimCrystalCalibrator.cxx.

References Double_t, fCrystalCalibrationMaps, fModuleCalibrationMaps, fRandomCal, fVerbose, PndEmcAbsCrystalCalibrator::kCALERROR, PndEmcAbsCrystalCalibrator::kCALMISSING, PndEmcAbsCrystalCalibrator::kCALOK, and PndEmcAbsCrystalCalibrator::kCALOVERFLOW.

Referenced by PndEmcFWEndcapDigi::Exec().

36  {
37  Int_t ModId = (Int_t)(DetId / 1e8);
38 
39 
40  CalibrationStatus_t returnValue = kCALERROR;
41 
42  if((int)fModuleCalibrationMaps.size() <= SignalNr) {
43  if(fVerbose) std::cout << "no calibration found for signal number " << SignalNr << std::endl;
44  returnValue = kCALMISSING;
45  } else {
46 
47  if(fRandomCal) {
48  map<Long_t,Double_t>::iterator it2;
49  it2 = fCrystalCalibrationMaps[SignalNr].find(DetId);
50  if(it2!=fCrystalCalibrationMaps[SignalNr].end()){
51  Energy*=it2->second;
52  } else {
53  return kCALMISSING;
54  }
55  }
56 
57 
58  map<Int_t, pair<Double_t, Double_t> >::iterator it;
59  it=fModuleCalibrationMaps[SignalNr].find(ModId);
60  if(it!=fModuleCalibrationMaps[SignalNr].end()) {
61  Double_t calib = it->second.first;
62  Double_t overflow = it->second.second;
63 
64  if(fVerbose) std::cout << "Calibrating signal " << SignalNr << "\t calib constant: " << calib << "\t overflow: " << overflow << std::endl;
65  if(overflow>0 && Energy>=overflow) {
66  returnValue = kCALOVERFLOW;
67  } else {
68  returnValue = kCALOK;
69  }
70  Energy*=calib;
71  }
72  }
73  return returnValue;
74 }
std::vector< std::map< Long_t, Double_t > > fCrystalCalibrationMaps
Double_t
std::vector< std::map< Int_t, std::pair< Double_t, Double_t > > > fModuleCalibrationMaps
PndEmcSimCrystalCalibrator::ClassDef ( PndEmcSimCrystalCalibrator  ,
 
)
private
PndEmcAbsCrystalCalibrator::ClassDef ( PndEmcAbsCrystalCalibrator  ,
 
)
protectedinherited
void PndEmcSimCrystalCalibrator::CreateRandomCalibration ( Double_t  Sigma)
virtual

Creates a random gaussion distributed calibration for all crystals Not implemented yet.

Parameters
Double_trelative spread of calibration values
Returns

Definition at line 28 of file PndEmcSimCrystalCalibrator.cxx.

28  { // Sigma //[R.K.03/2017] unused variable(s)
29  //not implemented yet
30 };
Bool_t PndEmcSimCrystalCalibrator::Init ( )
virtual

Init.

Returns
kTRUE on success

Reimplemented from PndEmcAbsCrystalCalibrator.

Definition at line 32 of file PndEmcSimCrystalCalibrator.cxx.

Referenced by PndEmcFWEndcapDigi::Init().

32  {
33  return kTRUE;
34 };
virtual Bool_t PndEmcAbsCrystalCalibrator::ReInit ( )
inlinevirtualinherited

ReInit.

Returns
kTRUE on success

Definition at line 38 of file PndEmcAbsCrystalCalibrator.h.

38 {return kTRUE;};
void PndEmcSimCrystalCalibrator::SetCalibration ( Int_t  ModId,
Double_t  cal,
Int_t  SignalNr = 1,
Double_t  overflow = -1 
)
virtual

Set Calibration for a Module.

Parameters
Int_tModule
Double_tHeight of 1GeV Pulse
Returns

Definition at line 20 of file PndEmcSimCrystalCalibrator.cxx.

References fCrystalCalibrationMaps, and fModuleCalibrationMaps.

Referenced by PndEmcFWEndcapDigi::Init(), and PndEmcWaveformToDigi::Init().

20  {
21  if((int)fModuleCalibrationMaps.size() < SignalNr+1) {
22  fModuleCalibrationMaps.resize(SignalNr+1);
23  fCrystalCalibrationMaps.resize(SignalNr+1);
24  }
25  fModuleCalibrationMaps[SignalNr].insert(pair<Int_t, pair<Double_t,Double_t> >(ModId, make_pair(1.0/cal, overflow)));
26  }
std::vector< std::map< Long_t, Double_t > > fCrystalCalibrationMaps
std::vector< std::map< Int_t, std::pair< Double_t, Double_t > > > fModuleCalibrationMaps
virtual void PndEmcAbsCrystalCalibrator::SetVerbose ( Int_t  verbose)
inlinevirtualinherited

Member Data Documentation

std::vector< std::map<Long_t, Double_t> > PndEmcSimCrystalCalibrator::fCrystalCalibrationMaps
private

Definition at line 53 of file PndEmcSimCrystalCalibrator.h.

Referenced by Calibrate(), and SetCalibration().

std::vector< std::map<Int_t, std::pair<Double_t, Double_t> > > PndEmcSimCrystalCalibrator::fModuleCalibrationMaps
private

Definition at line 52 of file PndEmcSimCrystalCalibrator.h.

Referenced by Calibrate(), and SetCalibration().

Double_t PndEmcSimCrystalCalibrator::fRandomCal
private

Definition at line 50 of file PndEmcSimCrystalCalibrator.h.

Referenced by Calibrate().

Double_t PndEmcSimCrystalCalibrator::fRandomSigma
private

Definition at line 51 of file PndEmcSimCrystalCalibrator.h.

Int_t PndEmcSimCrystalCalibrator::fVerbose
private

Definition at line 55 of file PndEmcSimCrystalCalibrator.h.

Referenced by Calibrate().


The documentation for this class was generated from the following files: