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

Class to use a textfile for Calibration. More...

#include <PndEmcFileCrystalCalibrator.h>

Inheritance diagram for PndEmcFileCrystalCalibrator:
PndEmcAbsCrystalCalibrator

Public Types

enum  CalibrationStatus_t { kCALOK, kCALMISSING, kCALERROR, kCALOVERFLOW }
 

Public Member Functions

 PndEmcFileCrystalCalibrator ()
 
 PndEmcFileCrystalCalibrator (const char *CalFileName)
 
void SetCalibrationFile (const char *CalFileName)
 Set calibration file. More...
 
virtual Bool_t Init ()
 Init. More...
 
virtual ~PndEmcFileCrystalCalibrator ()
 
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)
 

Protected Attributes

Int_t fVerbose
 

Private Member Functions

 ClassDef (PndEmcFileCrystalCalibrator, 1)
 

Private Attributes

TString fCalFileName
 
std::map< Long_t, Double_tfCalibrationMap
 
std::map< Long_t, Double_tfGainMap
 
std::map< Long_t, Double_tfOverflowMap
 

Detailed Description

Class to use a textfile for 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 PndEmcFileCrystalCalibrator.h.

Constructor & Destructor Documentation

PndEmcFileCrystalCalibrator::PndEmcFileCrystalCalibrator ( )
PndEmcFileCrystalCalibrator::PndEmcFileCrystalCalibrator ( const char *  CalFileName)
virtual PndEmcFileCrystalCalibrator::~PndEmcFileCrystalCalibrator ( )
inlinevirtual

Definition at line 38 of file PndEmcFileCrystalCalibrator.h.

38 {};

Member Function Documentation

PndEmcAbsCrystalCalibrator::CalibrationStatus_t PndEmcFileCrystalCalibrator::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 93 of file PndEmcFileCrystalCalibrator.cxx.

References fCalibrationMap, fGainMap, fOverflowMap, PndEmcAbsCrystalCalibrator::kCALMISSING, PndEmcAbsCrystalCalibrator::kCALOK, and PndEmcAbsCrystalCalibrator::kCALOVERFLOW.

93  {
94  map<Long_t,Double_t>::iterator it;
95  if(SignalNr==0){
96  it = fOverflowMap.find(detId);
97  if(it!=fOverflowMap.end()){
98  if(Energy > it->second){
99  return kCALOVERFLOW;
100  }
101  }
102  }
103 
104  it = fCalibrationMap.find(detId);
105  if(it!=fCalibrationMap.end()){
106  Energy*=it->second;
107  }else{
108  return kCALMISSING;
109  }
110 
111  if(SignalNr==1){
112  it=fGainMap.find(detId);
113  if(it!=fGainMap.end()){
114  Energy*=it->second;
115  }
116  }
117 
118  return kCALOK;
119 };
std::map< Long_t, Double_t > fCalibrationMap
std::map< Long_t, Double_t > fOverflowMap
std::map< Long_t, Double_t > fGainMap
PndEmcFileCrystalCalibrator::ClassDef ( PndEmcFileCrystalCalibrator  ,
 
)
private
PndEmcAbsCrystalCalibrator::ClassDef ( PndEmcAbsCrystalCalibrator  ,
 
)
protectedinherited
Bool_t PndEmcFileCrystalCalibrator::Init ( )
virtual

Init.

Returns
kTRUE on success

Reimplemented from PndEmcAbsCrystalCalibrator.

Definition at line 30 of file PndEmcFileCrystalCalibrator.cxx.

References buf, fCalFileName, fCalibrationMap, fGainMap, fOverflowMap, PndEmcAbsCrystalCalibrator::fVerbose, and TString.

30  {
31  ifstream in(fCalFileName,ifstream::in);
32 // in.open(fCalibrationFileName);
33  if (!in.good()) {
34  std::cerr << "Cannot open calibration file!" << endl;
35  return kFALSE;
36  }
37 
38  char buf[255];
39  while (in.getline(buf, 255)) {
40  TString tmp = buf;
41  TObjArray *tokens = tmp.Tokenize(" \t;");
42  if(tokens->GetEntries()<2){
43  continue;
44  }
45  tmp=tokens->UncheckedAt(0)->GetName();
46  TString tmp2 = tokens->UncheckedAt(1)->GetName();
47  if(tmp.IsDigit() && tmp2.IsFloat()){
48  fCalibrationMap.insert(std::pair<Long_t,Double_t>(tmp.Atoi(),tmp2.Atof()));
49 
50  }
51  if(tokens->GetEntries()<3){
52  continue;
53  }
54  tmp2 = tokens->UncheckedAt(2)->GetName();
55  if(tmp.IsDigit() && tmp2.IsFloat()){
56  fGainMap.insert(std::pair<Long_t,Double_t>(tmp.Atoi(),tmp2.Atof()));
57 
58  }
59  if(tokens->GetEntries()<4){
60  continue;
61  }
62  tmp2 = tokens->UncheckedAt(3)->GetName();
63  if(tmp.IsDigit() && tmp2.IsFloat()){
64  fOverflowMap.insert(std::pair<Long_t,Double_t>(tmp.Atoi(),tmp2.Atof()));
65 
66  }
67  delete tokens;
68 
69 
70  }
71  if(fVerbose >1){
72  std::cout << "calibration values:" << std::endl;
73  map<Long_t,Double_t>::iterator it;
74  map<Long_t,Double_t>::iterator it2;
75  Long_t detid;
76  for ( it=fCalibrationMap.begin() ; it != fCalibrationMap.end(); it++ ){
77  detid = (*it).first;
78  std::cout << detid << "\t" << (*it).second << "\t";
79  it2=fGainMap.find(detid);
80  if(it2!=fGainMap.end()){
81  std::cout << (*it2).second << "\t";
82  }
83  it2=fOverflowMap.find(detid);
84  if(it2!=fOverflowMap.end()){
85  std::cout << (*it2).second;
86  }
87  std::cout << endl;
88  }
89  }
90  return kTRUE;
91 };
std::map< Long_t, Double_t > fCalibrationMap
std::map< Long_t, Double_t > fOverflowMap
return buf
std::map< Long_t, Double_t > fGainMap
virtual Bool_t PndEmcAbsCrystalCalibrator::ReInit ( )
inlinevirtualinherited

ReInit.

Returns
kTRUE on success

Definition at line 38 of file PndEmcAbsCrystalCalibrator.h.

38 {return kTRUE;};
void PndEmcFileCrystalCalibrator::SetCalibrationFile ( const char *  CalFileName)

Set calibration file.

Parameters
constchar * filename of calibration file
Returns

Definition at line 26 of file PndEmcFileCrystalCalibrator.cxx.

References fCalFileName.

26  {
27  fCalFileName = CalFileName;
28 };
virtual void PndEmcAbsCrystalCalibrator::SetVerbose ( Int_t  verbose)
inlinevirtualinherited

Member Data Documentation

TString PndEmcFileCrystalCalibrator::fCalFileName
private

Definition at line 41 of file PndEmcFileCrystalCalibrator.h.

Referenced by Init(), and SetCalibrationFile().

std::map<Long_t, Double_t> PndEmcFileCrystalCalibrator::fCalibrationMap
private

Definition at line 42 of file PndEmcFileCrystalCalibrator.h.

Referenced by Calibrate(), and Init().

std::map<Long_t, Double_t> PndEmcFileCrystalCalibrator::fGainMap
private

Definition at line 43 of file PndEmcFileCrystalCalibrator.h.

Referenced by Calibrate(), and Init().

std::map<Long_t, Double_t> PndEmcFileCrystalCalibrator::fOverflowMap
private

Definition at line 44 of file PndEmcFileCrystalCalibrator.h.

Referenced by Calibrate(), and Init().

Int_t PndEmcAbsCrystalCalibrator::fVerbose
protectedinherited

Definition at line 56 of file PndEmcAbsCrystalCalibrator.h.

Referenced by Init(), and PndEmcAbsCrystalCalibrator::SetVerbose().


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