FairRoot/PandaRoot
Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
PndEmcCorrBump Class Reference

#include <PndEmcCorrBump.h>

Inheritance diagram for PndEmcCorrBump:

Public Member Functions

 PndEmcCorrBump (Int_t verbose=0, Bool_t storeclusters=kTRUE)
 
virtual ~PndEmcCorrBump ()
 
virtual InitStatus Init ()
 
virtual void Exec (Option_t *opt)
 
void SetStorageOfData (Bool_t val)
 
void FinishTask ()
 
void RunTimeBased ()
 

Private Member Functions

virtual void SetParContainers ()
 
 PndEmcCorrBump (const PndEmcCorrBump &L)
 
PndEmcCorrBumpoperator= (const PndEmcCorrBump &)
 

Private Attributes

TClonesArray * fDigiArray
 
TClonesArray * fSharedDigiArray
 
TClonesArray * fBumpArray
 
Int_t fMapVersion
 
PndEmcGeoParfGeoPar
 
PndEmcDigiParfDigiPar
 
PndEmcRecoParfRecoPar
 
Int_t fVerbose
 
Bool_t fStoreClusters
 
Bool_t fTimeOrderedDigi
 
Int_t HowManyDigi
 
Int_t HowManyCluster
 
PndEmcDigiCalibrator digiCalibrator
 
TClonesArray * fBumpArrayTBD
 
std::vector< Double_tfClusterPosParam
 

Static Private Attributes

static Int_t fEventCounter =0
 

Detailed Description

Definition at line 28 of file PndEmcCorrBump.h.

Constructor & Destructor Documentation

PndEmcCorrBump::PndEmcCorrBump ( Int_t  verbose = 0,
Bool_t  storeclusters = kTRUE 
)

Definition at line 73 of file PndEmcCorrBump.cxx.

73  :
75 {
76 }
#define verbose
TClonesArray * fDigiArray
Bool_t fStoreClusters
parameter set of Emc digitisation
Definition: PndEmcDigiPar.h:12
PndEmcRecoPar * fRecoPar
TClonesArray * fSharedDigiArray
PndEmcGeoPar * fGeoPar
TClonesArray * fBumpArray
PndEmcDigiPar * fDigiPar
Parameter set for Emc Reco.
Definition: PndEmcRecoPar.h:12
PndEmcCorrBump::~PndEmcCorrBump ( )
virtual

Definition at line 82 of file PndEmcCorrBump.cxx.

83 {
84 }
PndEmcCorrBump::PndEmcCorrBump ( const PndEmcCorrBump L)
private

Member Function Documentation

void PndEmcCorrBump::Exec ( Option_t *  opt)
virtual

Virtual method Exec

Definition at line 140 of file PndEmcCorrBump.cxx.

References CAMath::Abs(), PndEmcXClMoments::AbsZernikeMoment(), Bool_t, PndEmcDigiCalibrator::CalibrationEvtTimeByDigi(), ctime, digiCalibrator, PndEmcCluster::DigiList(), Double_t, PndEmcClusterProperties::Energy(), PndEmcCluster::energy(), fBumpArray, fBumpArrayTBD, fClusterPosParam, fDigiArray, PndEmcDigi::fDigiArrayTBD, fEventCounter, PndEmcDigi::fEvtNo, fRecoPar, fSharedDigiArray, fVerbose, PndEmcRecoPar::GetEmcClusterPosMethod(), PndEmcDigi::GetEnergy(), PndEmcDigi::GetModule(), PndEmcDigiCalibrator::GetTimeResolutionOfDigi(), HowManyCluster, HowManyDigi, i, PndEmcCluster::IsEnergyValid(), PndEmcCluster::IsPositionValid(), PndEmcXClMoments::Lat(), PndEmcCluster::NumberOfDigis(), PndEmcDigi::Print(), PndEmcCluster::removeDigi(), rtime, PndEmcCluster::SetEnergy(), PndEmcBump::SetEventNo(), PndEmcCluster::SetLatMom(), PndEmcCluster::SetPosition(), PndEmcCluster::SetZ20(), PndEmcCluster::SetZ53(), timer, and PndEmcClusterProperties::Where().

141 {
142  TStopwatch timer;
143  if (fVerbose>2){
144  timer.Start();
145  }
146  // Reset output array
147  if ( ! fBumpArray ) Fatal("Exec", "No Bump Array");
148 
149  Double_t fEventTime = FairRootManager::Instance()->GetEventTime();
150  if (fVerbose>0){
151  Int_t nDigis = fDigiArray->GetEntriesFast();
152  Int_t nSharedDigis = fSharedDigiArray->GetEntriesFast();
153  cout<<"*************************PndEmcCorrBump*****************************"<<endl;
154  cout<<"Event NO. #"<<fEventCounter<<", EventTime#"<<fEventTime
155  <<", Digis#"<<nDigis<<", SharedDigis#"<<nSharedDigis<<endl;
156  cout<<"********************************************************************"<<endl;
157  cout<<"Before correction, bumps#"<<fBumpArray->GetEntriesFast()
158  <<", BumptoBeDetermined #"<<fBumpArrayTBD->GetEntriesFast()
159  <<", DigitoBeDetermined #"<<PndEmcDigi::fDigiArrayTBD->GetEntriesFast()<<endl;
160  cout<<"********************************************************************"<<endl;
161  //cout<<"------------> fDigiArray#"<<fDigiArray->GetEntriesFast()<<endl;
162  //for(Int_t iDigi=0; iDigi < fDigiArray->GetEntriesFast(); ++iDigi){
163  // PndEmcDigi* theDigi = (PndEmcDigi*)fDigiArray->At(iDigi);
164  // theDigi->Print();
165  // cout<<endl;
166  //}
167  //cout<<"------------> fSharedDigiArray#"<<fSharedDigiArray->GetEntriesFast()<<endl;
168  //for(Int_t iDigi=0; iDigi < fSharedDigiArray->GetEntriesFast(); ++iDigi){
169  // PndEmcSharedDigi* theDigi = (PndEmcSharedDigi*)fSharedDigiArray->At(iDigi);
170  // theDigi->Print();
171  // cout<<endl;
172  //}
173  //if(fSharedDigiArray->GetEntriesFast() != fDigiArray->GetEntriesFast())
174  // cout<<"fSharedDigiArray.size() - fDigiArray.size() ##="<<(fDigiArray->GetEntriesFast()-fSharedDigiArray->GetEntriesFast())<<endl;
175  }
176  //merge buffer bumps into current fBumpArray
177  //Int_t nBumpTBD = fBumpArrayTBD->GetEntriesFast();
178  //for(Int_t ibump = 0; ibump < nBumpTBD; ++ibump ){
179  // PndEmcBump* copy = (PndEmcBump*)fBumpArrayTBD->At(ibump);
180  // new ((*fBumpArray)[nBump++]) PndEmcBump(*copy);
181  //}
182  //fBumpArrayTBD->Delete();
183 
184  //variabes definition
185  std::vector<PndEmcBump*> taggedBumpofToBeDeleted;
186  PndEmcDigi* seedDigi(0);
187  Double_t EnergyOfSeedDigi(-1.), fTimeError(0.), CalibTimeOfaDigi(0.), CalibTimeOfSeedDigi(0.);
188  Int_t TheIndexOfModule;//TheIndexOfEnergy, //[R.K. 01/2017] unused variable?
189  Int_t iDigi = PndEmcDigi::fDigiArrayTBD->GetEntriesFast();
190  Int_t iBump = 0;
191  Bool_t isBumpOK = kTRUE;
192  for(iBump=0; iBump< fBumpArray->GetEntriesFast(); ++iBump)
193  {
194  EnergyOfSeedDigi = -1.;
195  //isBumpOK = kTRUE;
196  PndEmcBump* theBump = (PndEmcBump*)fBumpArray->At(iBump);
197  //find the seed digi with maximum energy
198  const std::vector<Int_t>& listOfDigi = theBump->DigiList();
199  for(size_t id=0;id <listOfDigi.size();++id){
200  PndEmcDigi* theDigi = (PndEmcDigi*)fSharedDigiArray->At(listOfDigi[id]);
201  if(theDigi->GetEnergy() > EnergyOfSeedDigi){
202  seedDigi = theDigi;
203  EnergyOfSeedDigi = theDigi->GetEnergy();
204  }
205  if(fVerbose>1){
206  theDigi->Print();
207  CalibTimeOfaDigi = digiCalibrator.CalibrationEvtTimeByDigi(theDigi, kFALSE);
208  cout<<", CalibrationTimeOfEvent#"<<CalibTimeOfaDigi<<endl;
209  }
210  }
211  theBump->SetEventNo(seedDigi->fEvtNo);
212  //check current bump belongs to current event by event time
213  fTimeError = digiCalibrator.GetTimeResolutionOfDigi(seedDigi);
214  CalibTimeOfSeedDigi = digiCalibrator.CalibrationEvtTimeByDigi(seedDigi, kFALSE);
215  if( CalibTimeOfSeedDigi - fEventTime < 5.*fTimeError){//out of region
216  isBumpOK = kTRUE;
217  }else{
218  taggedBumpofToBeDeleted.push_back(theBump);
219  isBumpOK = kFALSE;
220  }
221  if(fVerbose>0){
222  std::cout<<"Bump["<<iBump<<"], (Nd, E, Es, CalT, EvtT, TimeR, EvtNo)=("
223  <<listOfDigi.size()
224  <<", "<<theBump->energy()
225  <<", "<<EnergyOfSeedDigi
226  <<", "<<CalibTimeOfSeedDigi
227  <<", "<<fEventTime
228  <<", "<<fTimeError
229  <<", "<<seedDigi->fEvtNo//theBump->where()
230  <<") ... ";
231  cout<<(isBumpOK ? "[ OK ]" : "[ Veto ]")<<endl;
232  }
233 
234 
235  //remove digis those time out of region compared to time of seed digi.
236  if(isBumpOK)
237  {
238  Double_t WeightedFactor = 0.;
239  Bool_t DigiStatus = kTRUE;
240  for(size_t id=0;id <listOfDigi.size();++id){
241  PndEmcDigi* theDigi = (PndEmcDigi*)fSharedDigiArray->At(listOfDigi[id]);
242  CalibTimeOfaDigi = digiCalibrator.CalibrationEvtTimeByDigi(theDigi, kFALSE);
243  fTimeError = digiCalibrator.GetTimeResolutionOfDigi(theDigi);
244  if(CalibTimeOfaDigi - CalibTimeOfSeedDigi < 5.*fTimeError )
245  {//time ok
246  if(TMath::Abs(CalibTimeOfaDigi - CalibTimeOfSeedDigi) < 3.*fTimeError){
247  WeightedFactor += 1./fTimeError/fTimeError;
248  }
249  DigiStatus = kTRUE;
250  }else{
251  theBump->removeDigi(fSharedDigiArray, listOfDigi[id]);
252  //save digis to a buffer for analysis in next event
253  //if(CalibTimeOfaDigi - CalibTimeOfSeedDigi > 5.*fTimeError)
254  new((*PndEmcDigi::fDigiArrayTBD)[iDigi++]) PndEmcDigi(*theDigi);
255  DigiStatus = kFALSE;
256  }
257  if(fVerbose>0){
258  TheIndexOfModule = theDigi->GetModule();
259  cout<<"Digi["<<id<<"] of bump["<<iBump<<"], (E, Mod, CalT, EvtT, SigmaT, EvtNO) = ("
260  <<theDigi->GetEnergy()
261  <<", "<<TheIndexOfModule
262  <<", "<<CalibTimeOfaDigi
263  <<", "<<fEventTime
264  <<", "<<fTimeError
265  <<", "<<theDigi->fEvtNo
266  <<(DigiStatus == kTRUE ? ") ... [ OK ]": ") ... [ Veto ]")<<endl;
267  //theDigi->Print();
268  //cout<<endl;
269  }
270  }
271  }
272  }
273  //remove tagged bumps
274  for(size_t ix=0;ix <taggedBumpofToBeDeleted.size();++ix){
275  const std::vector<Int_t>& listOfDigi = taggedBumpofToBeDeleted[ix]->DigiList();
276  //copy all digis of this bump to the buffer PndEmcDigi::fDigiArrayTBD;
277  for(size_t id=0;id <listOfDigi.size();++id){
278  PndEmcDigi* theDigi = (PndEmcDigi*)fSharedDigiArray->At(listOfDigi[id]);
279  new((*PndEmcDigi::fDigiArrayTBD)[iDigi++]) PndEmcDigi(*theDigi);
280  }
281  fBumpArray->Remove(taggedBumpofToBeDeleted[ix]);
282  fBumpArray->Compress();
283  }
284 
285  if(fVerbose > 0){
286  cout<<"******************************************************"<<endl;
287  cout<<"After correction, bumps#"<<fBumpArray->GetEntriesFast()
288  <<", BumptoBeDetermined #"<<fBumpArrayTBD->GetEntriesFast()
289  <<", DigitoBeDetermined #"<<PndEmcDigi::fDigiArrayTBD->GetEntriesFast()<<endl;
290  cout<<"**********************PndEmcCorrBump******************"<<endl;
291  }
292  //remake bump
293  for (Int_t i=0; i<fBumpArray->GetEntriesFast(); i++){
294  PndEmcBump *tmpbump = (PndEmcBump*) fBumpArray->At(i);
295  PndEmcClusterProperties clusterProperties(*tmpbump, fSharedDigiArray);
296  HowManyDigi += tmpbump->NumberOfDigis();
297 
298  if (!tmpbump->IsEnergyValid())
299  tmpbump->SetEnergy(clusterProperties.Energy());
300  if (!tmpbump->IsPositionValid())
301  tmpbump->SetPosition(clusterProperties.Where(fRecoPar->GetEmcClusterPosMethod(), fClusterPosParam));
302  PndEmcXClMoments xClMoments(*tmpbump, fSharedDigiArray);
303  tmpbump->SetZ20(xClMoments.AbsZernikeMoment(2, 0, 15));
304  tmpbump->SetZ53(xClMoments.AbsZernikeMoment(5, 3, 15));
305  tmpbump->SetLatMom(xClMoments.Lat());
306  }
307  HowManyCluster += fBumpArray->GetEntriesFast();
308 
309  fEventCounter++;
310  if (fVerbose>2){
311  timer.Stop();
312  Double_t rtime = timer.RealTime();
313  Double_t ctime = timer.CpuTime();
314  cout << "PndEmcCorrBump, Real time " << rtime << " s, CPU time " << ctime << " s" << endl;
315  }
316 }
void SetEnergy(Double_t en)
static TClonesArray * fDigiArrayTBD
Definition: PndEmcDigi.h:52
virtual Double_t GetEnergy() const
Definition: PndEmcDigi.cxx:296
represents the reconstructed hit of one emc crystal
Definition: PndEmcDigi.h:40
Int_t i
Definition: run_full.C:25
Double_t CalibrationEvtTimeByDigi(PndEmcDigi *theDigi, bool PrintOut=kFALSE) const
void SetEventNo(Int_t evtNo)
Definition: PndEmcBump.h:57
bool IsEnergyValid() const
Definition: PndEmcCluster.h:77
const std::vector< Int_t > & DigiList() const
Definition: PndEmcCluster.h:40
Short_t GetModule() const
Definition: PndEmcDigi.h:103
TClonesArray * fDigiArray
PndEmcDigiCalibrator digiCalibrator
static Int_t fEventCounter
static T Abs(const T &x)
Definition: PndCAMath.h:39
Double_t
TStopwatch timer
Definition: hit_dirc.C:51
std::vector< Double_t > fClusterPosParam
PndEmcRecoPar * fRecoPar
virtual void removeDigi(const TClonesArray *digiArray, Int_t iDigi)
TClonesArray * fSharedDigiArray
Double_t ctime
Definition: hit_dirc.C:114
void SetZ20(Double_t z20)
Int_t NumberOfDigis() const
void SetZ53(Double_t z53)
Int_t fEvtNo
Definition: PndEmcDigi.h:118
bool IsPositionValid() const
Definition: PndEmcCluster.h:78
virtual Double_t energy() const
TClonesArray * fBumpArray
void SetPosition(TVector3 pos)
virtual void Print(const Option_t *opt="") const
Definition: PndEmcDigi.cxx:337
Double_t GetTimeResolutionOfDigi(PndEmcDigi *theDigi) const
Text_t * GetEmcClusterPosMethod()
Definition: PndEmcRecoPar.h:20
Double_t rtime
Definition: hit_dirc.C:113
TClonesArray * fBumpArrayTBD
void SetLatMom(Double_t latMom)
represents a reconstructed (splitted) emc cluster
Definition: PndEmcBump.h:34
void PndEmcCorrBump::FinishTask ( )

Definition at line 344 of file PndEmcCorrBump.cxx.

References HowManyCluster, and HowManyDigi.

345 {
346  std::cout<<"*********************************************************"<<std::endl;
347  std::cout<<"PndEmcCorrBump::FinishTask"<<std::endl;
348  std::cout<<"*********************************************************"<<std::endl;
349  std::cout<<"Read digis# "<<HowManyDigi<<std::endl;
350  std::cout<<"Produce cluster# "<<HowManyCluster<<std::endl;
351  std::cout<<"*********************************************************"<<std::endl;
352 }
InitStatus PndEmcCorrBump::Init ( )
virtual

Virtual method Init

Definition at line 87 of file PndEmcCorrBump.cxx.

References fBumpArray, fBumpArrayTBD, fClusterPosParam, fDigiArray, fRecoPar, fSharedDigiArray, PndEmcRecoPar::GetEmcClusterPosMethod(), PndEmcRecoPar::GetOffsetParmA(), PndEmcRecoPar::GetOffsetParmB(), PndEmcRecoPar::GetOffsetParmC(), HowManyCluster, HowManyDigi, and PndEmcDigi::InitDigiArrayTBD().

88 {
90  // Get RootManager
91  FairRootManager* ioman = FairRootManager::Instance();
92  if ( ! ioman )
93  {
94  cout << "-E- PndEmcCorrBump::Init: "
95  << "RootManager not instantiated!" << endl;
96  return kFATAL;
97  }
98 
99  // Get input array
100  fDigiArray = dynamic_cast<TClonesArray *>(ioman->GetObject("EmcDigi"));
101  if ( ! fDigiArray ) {
102  cout << "-W- PndEmcCorrBump::Init: "
103  << "No PndEmcDigi array!" << endl;
104  return kERROR;
105  }
106  // Get input array
107  fSharedDigiArray =dynamic_cast<TClonesArray *> ( ioman->GetObject("EmcSharedDigi"));
108  if ( ! fSharedDigiArray ) {
109  cout << "-W- PndEmcCorrBump::Init: "
110  << "No PndEmcSharedDigi array!" << endl;
111  return kERROR;
112  }
113 
114  // Get input array
115  fBumpArray = dynamic_cast<TClonesArray *> (ioman->GetObject("EmcBump"));
116  if ( ! fBumpArray ) {
117  cout << "-W- PndEmcCorrBump::Init: "
118  << "No EmcBump array!" << endl;
119  return kERROR;
120  }
121  fBumpArrayTBD = new TClonesArray("PndEmcBump");
122 
123  if (!strcmp(fRecoPar->GetEmcClusterPosMethod(),"lilo"))
124  {
125  cout<<"Lilo cluster position method"<<endl;
129  }
130 
131  HowManyDigi = 0;
132  HowManyCluster = 0;
133 
134  cout << "-I- PndEmcCorrBump: Intialization successfull" << endl;
135 
136  return kSUCCESS;
137 }
Double_t GetOffsetParmB()
Definition: PndEmcRecoPar.h:22
Double_t GetOffsetParmC()
Definition: PndEmcRecoPar.h:23
static void InitDigiArrayTBD()
Definition: PndEmcDigi.cxx:89
TClonesArray * fDigiArray
std::vector< Double_t > fClusterPosParam
PndEmcRecoPar * fRecoPar
Double_t GetOffsetParmA()
Definition: PndEmcRecoPar.h:21
TClonesArray * fSharedDigiArray
TClonesArray * fBumpArray
Text_t * GetEmcClusterPosMethod()
Definition: PndEmcRecoPar.h:20
TClonesArray * fBumpArrayTBD
PndEmcCorrBump& PndEmcCorrBump::operator= ( const PndEmcCorrBump )
inlineprivate

Definition at line 88 of file PndEmcCorrBump.h.

88 {return *this;};
void PndEmcCorrBump::RunTimeBased ( )
inline

Definition at line 52 of file PndEmcCorrBump.h.

References fTimeOrderedDigi.

52 {fTimeOrderedDigi = kTRUE;}
Bool_t fTimeOrderedDigi
void PndEmcCorrBump::SetParContainers ( )
privatevirtual

Reconstruction parameter container Get parameter containers

Definition at line 320 of file PndEmcCorrBump.cxx.

References fDigiPar, fGeoPar, fRecoPar, and run.

320  {
321 
322  // Get run and runtime database
323  FairRun* run = FairRun::Instance();
324  if ( ! run ) Fatal("SetParContainers", "No analysis run");
325 
326  FairRuntimeDb* db = run->GetRuntimeDb();
327  if ( ! db ) Fatal("SetParContainers", "No runtime database");
328 
329  // Get Emc geometry parameter container
330  fGeoPar = (PndEmcGeoPar*) db->getContainer("PndEmcGeoPar");
331 
332  // Get Emc digitisation parameter container
333  fDigiPar = (PndEmcDigiPar*) db->getContainer("PndEmcDigiPar");
334 
335  // Get Emc reconstruction parameter container
336  fRecoPar = (PndEmcRecoPar*) db->getContainer("PndEmcRecoPar");
337 }
Int_t run
Definition: autocutx.C:47
parameter set of Emc digitisation
Definition: PndEmcDigiPar.h:12
PndEmcRecoPar * fRecoPar
PndEmcGeoPar * fGeoPar
PndEmcDigiPar * fDigiPar
Parameter set for Emc Reco.
Definition: PndEmcRecoPar.h:12
void PndEmcCorrBump::SetStorageOfData ( Bool_t  val)

Definition at line 339 of file PndEmcCorrBump.cxx.

References fStoreClusters, and val.

340 {
342  return;
343 }
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
Bool_t fStoreClusters

Member Data Documentation

PndEmcDigiCalibrator PndEmcCorrBump::digiCalibrator
private

Definition at line 102 of file PndEmcCorrBump.h.

Referenced by Exec().

TClonesArray* PndEmcCorrBump::fBumpArray
private

Definition at line 61 of file PndEmcCorrBump.h.

Referenced by Exec(), and Init().

TClonesArray* PndEmcCorrBump::fBumpArrayTBD
private

Definition at line 105 of file PndEmcCorrBump.h.

Referenced by Exec(), and Init().

std::vector<Double_t> PndEmcCorrBump::fClusterPosParam
private

Definition at line 107 of file PndEmcCorrBump.h.

Referenced by Exec(), and Init().

TClonesArray* PndEmcCorrBump::fDigiArray
private

Input array of CbmDigis

Definition at line 57 of file PndEmcCorrBump.h.

Referenced by Exec(), and Init().

PndEmcDigiPar* PndEmcCorrBump::fDigiPar
private

Geometry parameter container

Definition at line 73 of file PndEmcCorrBump.h.

Referenced by SetParContainers().

Int_t PndEmcCorrBump::fEventCounter =0
staticprivate

Definition at line 70 of file PndEmcCorrBump.h.

Referenced by Exec().

PndEmcGeoPar* PndEmcCorrBump::fGeoPar
private

Definition at line 72 of file PndEmcCorrBump.h.

Referenced by SetParContainers().

Int_t PndEmcCorrBump::fMapVersion
private

Output array of PndEmcClusters

Definition at line 68 of file PndEmcCorrBump.h.

PndEmcRecoPar* PndEmcCorrBump::fRecoPar
private

Digitisation parameter container

Definition at line 74 of file PndEmcCorrBump.h.

Referenced by Exec(), Init(), and SetParContainers().

TClonesArray* PndEmcCorrBump::fSharedDigiArray
private

Input array of Hits and MC Tracks ... needed for MC

Definition at line 60 of file PndEmcCorrBump.h.

Referenced by Exec(), and Init().

Bool_t PndEmcCorrBump::fStoreClusters
private

Definition at line 81 of file PndEmcCorrBump.h.

Referenced by SetStorageOfData().

Bool_t PndEmcCorrBump::fTimeOrderedDigi
private

Definition at line 82 of file PndEmcCorrBump.h.

Referenced by RunTimeBased().

Int_t PndEmcCorrBump::fVerbose
private

Verbosity level

Definition at line 79 of file PndEmcCorrBump.h.

Referenced by Exec().

Int_t PndEmcCorrBump::HowManyCluster
private

Definition at line 92 of file PndEmcCorrBump.h.

Referenced by Exec(), FinishTask(), and Init().

Int_t PndEmcCorrBump::HowManyDigi
private

Definition at line 88 of file PndEmcCorrBump.h.

Referenced by Exec(), FinishTask(), and Init().


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