BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EmcRecDigit2Hit Class Reference

#include <EmcRecDigit2Hit.h>

Public Member Functions

 EmcRecDigit2Hit ()
 ~EmcRecDigit2Hit ()
void Convert (const RecEmcDigitMap &aDigitMap, RecEmcHitMap &aHitMap)
void Output (const RecEmcHitMap &aHitMap) const
void OutputEndcap (const RecEmcHitMap &aHitMap, const unsigned int module_ew) const
void SetAlgName (const string &name)
 EmcRecDigit2Hit ()
 ~EmcRecDigit2Hit ()
void Convert (const RecEmcDigitMap &aDigitMap, RecEmcHitMap &aHitMap)
void Output (const RecEmcHitMap &aHitMap) const
void OutputEndcap (const RecEmcHitMap &aHitMap, const unsigned int module_ew) const
void SetAlgName (const string &name)
 EmcRecDigit2Hit ()
 ~EmcRecDigit2Hit ()
void Convert (const RecEmcDigitMap &aDigitMap, RecEmcHitMap &aHitMap)
void Output (const RecEmcHitMap &aHitMap) const
void OutputEndcap (const RecEmcHitMap &aHitMap, const unsigned int module_ew) const
void SetAlgName (const string &name)

Detailed Description

Constructor & Destructor Documentation

◆ EmcRecDigit2Hit() [1/3]

EmcRecDigit2Hit::EmcRecDigit2Hit ( )

Definition at line 22 of file EmcRecDigit2Hit.cxx.

22{}

◆ ~EmcRecDigit2Hit() [1/3]

EmcRecDigit2Hit::~EmcRecDigit2Hit ( )

Definition at line 24 of file EmcRecDigit2Hit.cxx.

24{}

◆ EmcRecDigit2Hit() [2/3]

EmcRecDigit2Hit::EmcRecDigit2Hit ( )

◆ ~EmcRecDigit2Hit() [2/3]

EmcRecDigit2Hit::~EmcRecDigit2Hit ( )

◆ EmcRecDigit2Hit() [3/3]

EmcRecDigit2Hit::EmcRecDigit2Hit ( )

◆ ~EmcRecDigit2Hit() [3/3]

EmcRecDigit2Hit::~EmcRecDigit2Hit ( )

Member Function Documentation

◆ Convert() [1/3]

void EmcRecDigit2Hit::Convert ( const RecEmcDigitMap & aDigitMap,
RecEmcHitMap & aHitMap )

Definition at line 26 of file EmcRecDigit2Hit.cxx.

26 {
27 RecEmcDigitMap::const_iterator ciDigitMap;
28 RecEmcHit aHit;
29
30 EmcRecParameter& Para = EmcRecParameter::GetInstance();
31
32 StatusCode sc;
33 // Get EmcCalibConstSvc.
34 IEmcCalibConstSvc* emcCalibConstSvc;
35 sc = Gaudi::svcLocator()->service( "EmcCalibConstSvc", emcCalibConstSvc );
36 if ( sc != StatusCode::SUCCESS )
37 {
38 // cout << "EmcRecDigit2Hit Error: Can't get EmcCalibConstSvc." << endl;
39 }
40
41 // Get RawDataProviderSvc
42 IRawDataProviderSvc* rawDataProviderSvc;
43 // tianhl for mt
44 std::string rawDataProviderSvc_name( "RawDataProviderSvc" );
45 // if ( isGaudiThreaded( m_algName ) ) { rawDataProviderSvc_name += getGaudiThreadIDfromName(
46 // m_algName ); } tianhl for mt
47 sc = Gaudi::svcLocator()->service( rawDataProviderSvc_name, rawDataProviderSvc );
48 if ( sc != StatusCode::SUCCESS )
49 {
50 // cout << "EmcRecDigit2Hit Error: Can't get RawDataProviderSvc." << endl;
51 }
52
53 for ( ciDigitMap = aDigitMap.begin(); ciDigitMap != aDigitMap.end(); ++ciDigitMap )
54 {
55
56 const RecEmcDigit& aDigit = ciDigitMap->second;
57
58 aHit.CellId( aDigit.CellId() );
59
60 double ein, ecorr, eout;
61 ein = aDigit.ADC();
62
63 // Times the calibration constant in offline mode
64 if ( !( rawDataProviderSvc->isOnlineMode() ) && Para.DigiCalib() )
65 {
66
67 unsigned int partId = EmcID::barrel_ec( aDigit.CellId() );
68 unsigned int theta = EmcID::theta_module( aDigit.CellId() );
69 unsigned int phi = EmcID::phi_module( aDigit.CellId() );
70
71 int index = emcCalibConstSvc->getIndex( partId, theta, phi );
72
73 // liucx
74
75 double adc2e = emcCalibConstSvc->getDigiCalibConst( index );
76
77 if ( Para.DataMode() == 0 )
78 {
79 if ( Para.ElecSaturation() == 1 )
80 {
81 double emaxData = emcCalibConstSvc->getCrystalEmaxData( index );
82 if ( emaxData > 0 )
83 {
84 // cout<<adc2e<<"\t"<<emaxData/2.5<<endl;
85 adc2e = emaxData / 2.5;
86 }
87 }
88 }
89
90 ein *= adc2e;
91 // liucx
92
93 // liucx ein *= emcCalibConstSvc->getDigiCalibConst(index);
94 }
95
96 // Correct electronic noise bias. Not used now.
97 if ( ein < Para.ElecBias( 4 ) )
98 {
99 ecorr = Para.ElecBias( 0 ) * log( ein / Para.ElecBias( 1 ) ); // noise=0.5
100 }
101 else { ecorr = Para.ElecBias( 2 ) + Para.ElecBias( 3 ) * ein; }
102 eout = ein;
103 aHit.Energy( eout / GeV );
104
105 aHit.Time( aDigit.TDC() );
106 // For some reason, there are 0 energy hit.
107 // Avoid this to happen, dangerous!
108 if ( aHit.getEnergy() >= Para.ElectronicsNoiseLevel() )
109 { // &&
110 //(aHit.time()>=Para.TimeMin()) &&
111 //(aHit.time()<=Para.TimeMax()))
112 aHitMap[aHit.getCellId()] = aHit;
113 }
114 }
115}
static unsigned int barrel_ec(const Identifier &id)
Values of different levels (failure returns 0).
Definition EmcID.cxx:36
static unsigned int theta_module(const Identifier &id)
Definition EmcID.cxx:41
static unsigned int phi_module(const Identifier &id)
Definition EmcID.cxx:46
static EmcRecParameter & GetInstance()
double ElectronicsNoiseLevel() const
double ElecBias(int n) const
int ElecSaturation() const
double DataMode() const
virtual double getDigiCalibConst(int No) const =0
virtual int getIndex(unsigned int PartId, unsigned int ThetaIndex, unsigned int PhiIndex) const =0
virtual double getCrystalEmaxData(int Index) const =0
virtual bool isOnlineMode()=0
RecEmcADC ADC() const
RecEmcTDC TDC() const
RecEmcID CellId() const
RecEmcEnergy Energy(const RecEmcEnergy &Energy)
Definition RecEmcHit.cxx:76
RecEmcID CellId(const RecEmcID &CellId)
Definition RecEmcHit.cxx:71
RecEmcTime Time(const RecEmcTime &Time)
Definition RecEmcHit.cxx:81

◆ Convert() [2/3]

void EmcRecDigit2Hit::Convert ( const RecEmcDigitMap & aDigitMap,
RecEmcHitMap & aHitMap )

◆ Convert() [3/3]

void EmcRecDigit2Hit::Convert ( const RecEmcDigitMap & aDigitMap,
RecEmcHitMap & aHitMap )

◆ Output() [1/3]

void EmcRecDigit2Hit::Output ( const RecEmcHitMap & aHitMap) const

Definition at line 117 of file EmcRecDigit2Hit.cxx.

117 {
118 unsigned int module, theta, phi;
119 RecEmcID id;
120 RecEmcHitMap::const_iterator ci_HitMap;
121 RecEmcEnergy e;
122 int ie;
123
124 // cout<<"Output a hitmap:"<<endl;
125
126 module = EmcID::EmcID::getBARREL();
127
128 // cout<<"Barrel:"<<endl;
129 // cout<<"+--------------------------------------------+"<<endl;
130 for ( phi = EmcID::getPHI_BARREL_MAX(); phi != EmcID::getPHI_BARREL_MIN() - 1; --phi )
131 {
132 // cout<<"|";
133 for ( theta = EmcID::getTHETA_BARREL_MIN(); theta <= EmcID::getTHETA_BARREL_MAX();
134 ++theta )
135 {
136 id = EmcID::crystal_id( module, theta, phi );
137 ci_HitMap = aHitMap.find( id );
138 if ( ci_HitMap != aHitMap.end() )
139 {
140 e = ci_HitMap->second.getEnergy();
141 ie = (int)( e * 10 );
142 if ( ie > 9 ) { ie = 9; }
143 // cout<<ie;
144 }
145 else
146 {
147 // cout<<" ";
148 }
149 }
150 // cout<<"|"<<endl;
151 }
152 // cout<<"+--------------------------------------------+"<<endl;
153
154 module = EmcID::EmcID::getENDCAP_EAST();
155 OutputEndcap( aHitMap, module );
156 module = EmcID::EmcID::getENDCAP_WEST();
157 OutputEndcap( aHitMap, module );
158}
static unsigned int getPHI_BARREL_MAX()
Definition EmcID.cxx:83
static Identifier crystal_id(const unsigned int barrel_ec, const unsigned int theta_module, const unsigned int phi_module)
For a single crystal.
Definition EmcID.cxx:63
static unsigned int getTHETA_BARREL_MIN()
Definition EmcID.cxx:80
static unsigned int getTHETA_BARREL_MAX()
Definition EmcID.cxx:79
static unsigned int getPHI_BARREL_MIN()
Definition EmcID.cxx:84
void OutputEndcap(const RecEmcHitMap &aHitMap, const unsigned int module_ew) const

◆ Output() [2/3]

void EmcRecDigit2Hit::Output ( const RecEmcHitMap & aHitMap) const

◆ Output() [3/3]

void EmcRecDigit2Hit::Output ( const RecEmcHitMap & aHitMap) const

◆ OutputEndcap() [1/3]

void EmcRecDigit2Hit::OutputEndcap ( const RecEmcHitMap & aHitMap,
const unsigned int module_ew ) const

Definition at line 160 of file EmcRecDigit2Hit.cxx.

161 {
162 unsigned int module, theta, phi;
163 RecEmcID id;
164 RecEmcHitMap::const_iterator ci_HitMap;
165 RecEmcEnergy e;
166 int ie;
167
168 module = module_ew;
169 if ( module == EmcID::EmcID::getENDCAP_EAST() )
170 {
171 // cout<<"East endcap:"<<endl;
172 }
173 else if ( module == EmcID::EmcID::getENDCAP_WEST() )
174 {
175 // cout<<"West endcap:"<<endl;
176 }
177
178 // cout<<"+--------------------------------------------------------+"<<endl;
179 for ( theta = EmcID::getTHETA_ENDCAP_MAX(); theta != EmcID::getTHETA_ENDCAP_MIN() - 1;
180 theta-- )
181 {
182 // cout<<"|";
183 for ( phi = ( EmcID::getPHI_ENDCAP_MAX( theta ) - 1 ) / 2;
184 phi != EmcID::getPHI_ENDCAP_MIN() - 1; phi-- )
185 {
186 id = EmcID::crystal_id( module, theta, phi );
187 ci_HitMap = aHitMap.find( id );
188 if ( ci_HitMap != aHitMap.end() )
189 {
190 e = ci_HitMap->second.getEnergy();
191 ie = (int)( e * 10 );
192 if ( ie > 9 ) { ie = 9; }
193 if ( ( theta < 4 ) && ( phi % ( ( EmcID::getPHI_ENDCAP_MAX( theta ) + 1 ) / 16 ) ==
194 ( EmcID::getPHI_ENDCAP_MAX( theta ) + 1 ) / 16 - 1 ) )
195 {
196 // cout<<"*";
197 }
198 // cout<<ie;
199 if ( ( theta == 0 || theta == 1 ) &&
200 ( phi % ( ( EmcID::getPHI_ENDCAP_MAX( theta ) + 1 ) / 16 ) == 0 ) )
201 {
202 // cout<<"*";
203 }
204 }
205 else
206 {
207 if ( ( theta < 4 ) && ( phi % ( ( EmcID::getPHI_ENDCAP_MAX( theta ) + 1 ) / 16 ) ==
208 ( EmcID::getPHI_ENDCAP_MAX( theta ) + 1 ) / 16 - 1 ) )
209 {
210 // cout<<" ";
211 }
212 // cout<<" ";
213 if ( ( theta == 0 || theta == 1 ) &&
214 ( phi % ( ( EmcID::getPHI_ENDCAP_MAX( theta ) + 1 ) / 16 ) == 0 ) )
215 {
216 // cout<<" ";
217 }
218 }
219 if ( phi % ( ( EmcID::getPHI_ENDCAP_MAX( theta ) + 1 ) / 16 ) == 0 )
220 {
221 // cout<<"|";
222 }
223 if ( phi == ( EmcID::getPHI_ENDCAP_MAX( theta ) + 1 ) / 4 )
224 {
225 // cout<<"|";
226 }
227 }
228 // cout<<endl;
229 }
230 // cout<<"+--------------------------------------------------------+"<<endl;
231
232 for ( theta = EmcID::getTHETA_ENDCAP_MIN(); theta != EmcID::getTHETA_ENDCAP_MAX() + 1;
233 theta++ )
234 {
235 // cout<<"|";
236 for ( phi = ( EmcID::getPHI_ENDCAP_MAX( theta ) + 1 ) / 2;
237 phi != EmcID::getPHI_ENDCAP_MAX( theta ) + 1; phi++ )
238 {
239 id = EmcID::crystal_id( module, theta, phi );
240 ci_HitMap = aHitMap.find( id );
241 if ( ci_HitMap != aHitMap.end() )
242 {
243 e = ci_HitMap->second.getEnergy();
244 ie = (int)( e * 10 );
245 if ( ie > 9 ) { ie = 9; }
246 if ( ( theta < 4 ) &&
247 ( phi % ( ( EmcID::getPHI_ENDCAP_MAX( theta ) + 1 ) / 16 ) == 0 ) )
248 {
249 // cout<<"*";
250 }
251 // cout<<ie;
252 if ( ( theta == 0 || theta == 1 ) &&
253 ( ( phi + 1 ) % ( ( EmcID::getPHI_ENDCAP_MAX( theta ) + 1 ) / 16 ) == 0 ) )
254 {
255 // cout<<"*";
256 }
257 }
258 else
259 {
260 if ( ( theta < 4 ) &&
261 ( phi % ( ( EmcID::getPHI_ENDCAP_MAX( theta ) + 1 ) / 16 ) == 0 ) )
262 {
263 // cout<<" ";
264 }
265 // cout<<" ";
266 if ( ( theta == 0 || theta == 1 ) &&
267 ( ( phi + 1 ) % ( ( EmcID::getPHI_ENDCAP_MAX( theta ) + 1 ) / 16 ) == 0 ) )
268 {
269 // cout<<" ";
270 }
271 }
272 if ( ( phi + 1 ) % ( ( EmcID::getPHI_ENDCAP_MAX( theta ) + 1 ) / 16 ) == 0 )
273 {
274 // cout<<"|";
275 }
276 if ( phi == 3 * ( EmcID::getPHI_ENDCAP_MAX( theta ) + 1 ) / 4 - 1 )
277 {
278 // cout<<"|";
279 }
280 }
281 // cout<<endl;
282 }
283 // cout<<"+--------------------------------------------------------+"<<endl;
284}
static unsigned int getTHETA_ENDCAP_MIN()
Definition EmcID.cxx:82
static unsigned int getTHETA_ENDCAP_MAX()
Definition EmcID.cxx:81
static unsigned int getPHI_ENDCAP_MAX(const unsigned int theta)
Definition EmcID.cxx:85
static unsigned int getPHI_ENDCAP_MIN()
Definition EmcID.cxx:91

Referenced by Output().

◆ OutputEndcap() [2/3]

void EmcRecDigit2Hit::OutputEndcap ( const RecEmcHitMap & aHitMap,
const unsigned int module_ew ) const

◆ OutputEndcap() [3/3]

void EmcRecDigit2Hit::OutputEndcap ( const RecEmcHitMap & aHitMap,
const unsigned int module_ew ) const

◆ SetAlgName() [1/3]

void EmcRecDigit2Hit::SetAlgName ( const string & name)
inline

Definition at line 22 of file InstallArea/x86_64-el9-gcc13-dbg/include/EmcRec/EmcRecDigit2Hit.h.

22{ m_algName = name; }

◆ SetAlgName() [2/3]

void EmcRecDigit2Hit::SetAlgName ( const string & name)
inline

Definition at line 22 of file InstallArea/x86_64-el9-gcc13-opt/include/EmcRec/EmcRecDigit2Hit.h.

22{ m_algName = name; }

◆ SetAlgName() [3/3]

void EmcRecDigit2Hit::SetAlgName ( const string & name)
inline

Definition at line 22 of file Reconstruction/EmcRec/include/EmcRec/EmcRecDigit2Hit.h.

22{ m_algName = name; }

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