SND@LHC Software
Loading...
Searching...
No Matches
ecalDigi Class Reference

#include <ecalDigi.h>

Inheritance diagram for ecalDigi:
Collaboration diagram for ecalDigi:

Public Member Functions

 ecalDigi ()
 
 ecalDigi (const char *name, Int_t iVerbose)
 
virtual ~ecalDigi ()
 
virtual InitStatus Init ()
 
void InitPython (ecalStructure *structure)
 
virtual void Exec (Option_t *option)
 
virtual void Finish ()
 
void SetPedestal (Short_t ped=80)
 
void SetADCMax (Short_t adcmax=16384)
 
void SetADCNoise (Float_t adcnoise=1.0e-3)
 
void SetADCChannel (Float_t adcchannel=1.0e-3)
 
void SetChannelMap (std::map< Int_t, Float_t > map)
 
void LoadChannelMap (const char *filename)
 
Short_t GetPedestal () const
 
Short_t GetADCMax () const
 
Float_t GetADCNoise () const
 
Float_t GetADCChannel () const
 

Private Member Functions

 ecalDigi (const ecalDigi &)
 Map: channel number -> ADC channel in GeV.
 
ecalDigioperator= (const ecalDigi &)
 
 ClassDef (ecalDigi, 1)
 

Private Attributes

Short_t fPedestal
 
Short_t fADCMax
 
Float_t fADCNoise
 
Float_t fADCChannel
 
ecalStructurefStr
 
std::map< Int_t, Float_t > fChannelMap
 

Detailed Description

Definition at line 13 of file ecalDigi.h.

Constructor & Destructor Documentation

◆ ecalDigi() [1/3]

ecalDigi::ecalDigi ( )

Default constructor

— Default constructor ------------------------------------------------—

Definition at line 18 of file ecalDigi.cxx.

19 : FairTask(),
20 fPedestal(80),
21 fADCMax(16384),
22 fADCNoise(1.0e-3),
23 fADCChannel(1.0e-3),
24 fStr(NULL), fChannelMap()
25{
26 fChannelMap.clear();
27}
ecalStructure * fStr
Definition ecalDigi.h:55
Float_t fADCNoise
Definition ecalDigi.h:51
Float_t fADCChannel
Definition ecalDigi.h:53
Short_t fPedestal
Definition ecalDigi.h:47
Short_t fADCMax
Definition ecalDigi.h:49
std::map< Int_t, Float_t > fChannelMap
Definition ecalDigi.h:58

◆ ecalDigi() [2/3]

ecalDigi::ecalDigi ( const char *  name,
Int_t  iVerbose 
)

Standard constructor. Use this

— Standard constructor. Use this -------------------------------------—

Definition at line 30 of file ecalDigi.cxx.

31 : FairTask(name, iVerbose),
32 fPedestal(80),
33 fADCMax(16384),
34 fADCChannel(1.0e-3),
35 fADCNoise(1.0e-3),
36 fStr(NULL), fChannelMap()
37{
38 fChannelMap.clear();
39}

◆ ~ecalDigi()

ecalDigi::~ecalDigi ( )
virtual

Destructor

— Destructor ---------------------------------------------------------—

Definition at line 127 of file ecalDigi.cxx.

128{
129 ;
130}

◆ ecalDigi() [3/3]

ecalDigi::ecalDigi ( const ecalDigi )
private

Map: channel number -> ADC channel in GeV.

Member Function Documentation

◆ ClassDef()

ecalDigi::ClassDef ( ecalDigi  ,
 
)
private

◆ Exec()

void ecalDigi::Exec ( Option_t *  option)
virtual

Executed task

— Executed task ------------------------------------------------------—

Definition at line 91 of file ecalDigi.cxx.

92{
93 ecalCell* cell;
94 list<ecalCell*> cells;
95 fStr->GetCells(cells);
96 list<ecalCell*>::const_iterator p=cells.begin();
97 Short_t adc;
98
99 for(;p!=cells.end();++p)
100 {
101 cell=(*p);
102 if (fChannelMap.empty())
103 adc=(Short_t)(gRandom->Gaus(cell->GetEnergy(), fADCNoise)/fADCChannel+fPedestal);
104 else
105 if (fChannelMap.find(cell->GetCellNumber())==fChannelMap.end())
106 {
107 Error("Exec", "Channel %d not found in map. Using default value!", cell->GetCellNumber());
108 //TODO: Should we insert Fatal here?
109 adc=(Short_t)(gRandom->Gaus(cell->GetEnergy(), fADCNoise)/fADCChannel+fPedestal);
110 }
111 else
112 {
113 adc=(Short_t)(gRandom->Gaus(cell->GetEnergy(), fADCNoise)/fChannelMap[cell->GetCellNumber()]+fPedestal);
114 }
115 if (adc>fADCMax) adc=fADCMax;
116 cell->SetEnergy(-1111);
117 cell->SetADC(adc);
118 }
119}
Int_t GetCellNumber() const
Definition ecalCell.h:40
void SetEnergy(Float_t energy)
Definition ecalCell.h:64
void SetADC(Short_t adc)
Definition ecalCell.h:65
Float_t GetEnergy() const
Definition ecalCell.h:42
void GetCells(std::list< ecalCell * > &cells) const

◆ Finish()

void ecalDigi::Finish ( )
virtual

Finish task

— Finish task --------------------------------------------------------—

Definition at line 122 of file ecalDigi.cxx.

123{
124 ;
125}

◆ GetADCChannel()

Float_t ecalDigi::GetADCChannel ( ) const
inline

Definition at line 44 of file ecalDigi.h.

44{return fADCChannel;}

◆ GetADCMax()

Short_t ecalDigi::GetADCMax ( ) const
inline

Definition at line 42 of file ecalDigi.h.

42{return fADCMax;}

◆ GetADCNoise()

Float_t ecalDigi::GetADCNoise ( ) const
inline

Definition at line 43 of file ecalDigi.h.

43{return fADCNoise;}

◆ GetPedestal()

Short_t ecalDigi::GetPedestal ( ) const
inline

Definition at line 41 of file ecalDigi.h.

41{return fPedestal;}

◆ Init()

InitStatus ecalDigi::Init ( )
virtual

Initialization of the task

— Initialization of the task -----------------------------------------—

Definition at line 66 of file ecalDigi.cxx.

67{
68 FairRootManager* manager=FairRootManager::Instance();
69 if (!manager)
70 {
71 Fatal("Init()", "Can't find IOManager.");
72 return kFATAL;
73 }
74
75 fStr=(ecalStructure*)manager->GetObject("EcalStructure");
76 if (!fStr)
77 {
78 Fatal("Init()", "Can't find calorimeter structure in the system.");
79 return kFATAL;
80 }
81
82 return kSUCCESS;
83}

◆ InitPython()

void ecalDigi::InitPython ( ecalStructure structure)

Definition at line 85 of file ecalDigi.cxx.

86{
87 fStr=structure;
88}

◆ LoadChannelMap()

void ecalDigi::LoadChannelMap ( const char *  filename)

— Ugly load of map channel number -> ADC channel from the file -------—

Definition at line 42 of file ecalDigi.cxx.

43{
44 map<Int_t, Float_t> tmp;
45 TString fname=filename; gSystem->ExpandPathName(fname);
46 ifstream f(fname);
47 Int_t ch;
48 Int_t i=0;
49 Float_t adc;
50
51 tmp.clear();
52 for(;;)
53 {
54 f >> ch; if (f.eof()) break;
55 f >> adc; if (f.eof()) break;
56 tmp[ch]=adc;
57 i++;
58 }
59 if (fVerbose>999)
60 Info("LoadChannelMap", "%d records read", i);
61 f.close();
62 SetChannelMap(tmp);
63}
void SetChannelMap(std::map< Int_t, Float_t > map)
Definition ecalDigi.h:37
int i
Definition ShipAna.py:86

◆ operator=()

ecalDigi & ecalDigi::operator= ( const ecalDigi )
private

◆ SetADCChannel()

void ecalDigi::SetADCChannel ( Float_t  adcchannel = 1.0e-3)
inline

Definition at line 34 of file ecalDigi.h.

34{fADCChannel=adcchannel;}

◆ SetADCMax()

void ecalDigi::SetADCMax ( Short_t  adcmax = 16384)
inline

Definition at line 32 of file ecalDigi.h.

32{fADCMax=adcmax;}

◆ SetADCNoise()

void ecalDigi::SetADCNoise ( Float_t  adcnoise = 1.0e-3)
inline

Definition at line 33 of file ecalDigi.h.

33{fADCNoise=adcnoise;}

◆ SetChannelMap()

void ecalDigi::SetChannelMap ( std::map< Int_t, Float_t >  map)
inline

Definition at line 37 of file ecalDigi.h.

37{fChannelMap=map;}

◆ SetPedestal()

void ecalDigi::SetPedestal ( Short_t  ped = 80)
inline

Definition at line 31 of file ecalDigi.h.

31{fPedestal=ped;}

Member Data Documentation

◆ fADCChannel

Float_t ecalDigi::fADCChannel
private

Definition at line 53 of file ecalDigi.h.

◆ fADCMax

Short_t ecalDigi::fADCMax
private

Definition at line 49 of file ecalDigi.h.

◆ fADCNoise

Float_t ecalDigi::fADCNoise
private

Definition at line 51 of file ecalDigi.h.

◆ fChannelMap

std::map<Int_t, Float_t> ecalDigi::fChannelMap
private

Definition at line 58 of file ecalDigi.h.

◆ fPedestal

Short_t ecalDigi::fPedestal
private

Definition at line 47 of file ecalDigi.h.

◆ fStr

ecalStructure* ecalDigi::fStr
private

Definition at line 55 of file ecalDigi.h.


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