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

splits clusters on the basis of exponential distance from the bump centroid More...

#include <PndEmcExpClusterSplitter.h>

Inheritance diagram for PndEmcExpClusterSplitter:
PndPersistencyTask

Public Member Functions

 PndEmcExpClusterSplitter (Int_t verbose=0)
 
virtual ~PndEmcExpClusterSplitter ()
 
virtual InitStatus Init ()
 Init Task. More...
 
virtual void Exec (Option_t *opt)
 Runs the task. More...
 
virtual void FinishTask ()
 Called at end of task. More...
 
void SetStorageOfData (Bool_t p=kTRUE)
 
PndEmcBumpAddBump ()
 Adds a new PndEmcBump to fBumpArray and returns it. More...
 
PndEmcSharedDigiAddSharedDigi (PndEmcDigi *, Double_t weight)
 Adds a new PndEmcSharedDigi to fSharedDigiArray and returns it. More...
 
void SetPersistency (Bool_t val=kTRUE)
 
Bool_t GetPersistency ()
 

Protected Member Functions

virtual void SetParContainers ()
 

Private Member Functions

 PndEmcExpClusterSplitter (const PndEmcExpClusterSplitter &)
 
PndEmcExpClusterSplitteroperator= (const PndEmcExpClusterSplitter &)
 
 ClassDef (PndEmcExpClusterSplitter, 2)
 

Private Attributes

TClonesArray * fDigiArray
 
TClonesArray * fClusterArray
 
TClonesArray * fBumpArray
 
TClonesArray * fSharedDigiArray
 
PndEmcGeoParfGeoPar
 Geometry parameter container. More...
 
PndEmcDigiParfDigiPar
 Digitisation parameter container. More...
 
PndEmcRecoParfRecoPar
 Reconstruction parameter container. More...
 
std::vector< Double_tfClusterPosParam
 
Double_t fMoliereRadius
 
Double_t fMoliereRadiusShashlyk
 
Double_t fExponentialConstant
 
Int_t fMaxIterations
 
Double_t fCentroidShift
 
Int_t fMaxBumps
 
Double_t fMinDigiEnergy
 
PndEmcDigiCalibrator digiCalibrator
 
Int_t HowManyDidis
 

Detailed Description

splits clusters on the basis of exponential distance from the bump centroid

Definition at line 57 of file PndEmcExpClusterSplitter.h.

Constructor & Destructor Documentation

PndEmcExpClusterSplitter::PndEmcExpClusterSplitter ( Int_t  verbose = 0)

Definition at line 71 of file PndEmcExpClusterSplitter.cxx.

References fClusterPosParam, and PndPersistencyTask::SetPersistency().

71  :PndPersistencyTask("PndEmcExpClusterSplitter", verbose),
73 {
74  fClusterPosParam.clear();
75  SetPersistency(kTRUE);
76 }
std::vector< Double_t > fClusterPosParam
#define verbose
void SetPersistency(Bool_t val=kTRUE)
PndEmcRecoPar * fRecoPar
Reconstruction parameter container.
parameter set of Emc digitisation
Definition: PndEmcDigiPar.h:12
PndEmcGeoPar * fGeoPar
Geometry parameter container.
PndEmcDigiPar * fDigiPar
Digitisation parameter container.
Parameter set for Emc Reco.
Definition: PndEmcRecoPar.h:12
PndEmcExpClusterSplitter::~PndEmcExpClusterSplitter ( )
virtual

Definition at line 82 of file PndEmcExpClusterSplitter.cxx.

83 {
84 // delete fGeoPar;
85 // delete fDigiPar;
86 // delete fRecoPar;
87 }
PndEmcExpClusterSplitter::PndEmcExpClusterSplitter ( const PndEmcExpClusterSplitter )
private

Member Function Documentation

PndEmcBump * PndEmcExpClusterSplitter::AddBump ( )

Adds a new PndEmcBump to fBumpArray and returns it.

Returns
PndEmcBump*

Definition at line 566 of file PndEmcExpClusterSplitter.cxx.

References fBumpArray.

Referenced by Exec().

567 {
568  TClonesArray& clref = *fBumpArray;
569  Int_t size = clref.GetEntriesFast();
570  return new(clref[size]) PndEmcBump();
571 }
represents a reconstructed (splitted) emc cluster
Definition: PndEmcBump.h:34
PndEmcSharedDigi * PndEmcExpClusterSplitter::AddSharedDigi ( PndEmcDigi digi,
Double_t  weight 
)

Adds a new PndEmcSharedDigi to fSharedDigiArray and returns it.

Parameters
digiDigi which is shared
weightWeight of digi in this shared digi
Returns
PndEmcSharedDigi*

Definition at line 580 of file PndEmcExpClusterSplitter.cxx.

References fSharedDigiArray.

Referenced by Exec().

580  {
581  TClonesArray& clref = *fSharedDigiArray;
582  Int_t size = clref.GetEntriesFast();
583  return new(clref[size]) PndEmcSharedDigi(*digi, weight);
584 }
used to share PndEmcDigis between bumps
PndEmcExpClusterSplitter::ClassDef ( PndEmcExpClusterSplitter  ,
 
)
private
void PndEmcExpClusterSplitter::Exec ( Option_t *  opt)
virtual

Runs the task.

The algorithm is as follows: We will index each bump by its maximum digi's PndEmcTwoCoordIndex. We will set up a list of bump centroids which to start with will be synonymous with the location of the maxima. We then apportion a weight to each digi, according to its distance from the centroids. We then construct the bumps according to these weights, which will presumably give a different set of centroids. This is repeated until the centroids are static within tolerance, or we reach the maximum number of iterations.

Parameters
optunused
Returns
void

Definition at line 189 of file PndEmcExpClusterSplitter.cxx.

References PndEmcXClMoments::AbsZernikeMoment(), AddBump(), PndEmcCluster::addDigi(), AddSharedDigi(), PndEmcDigiCalibrator::CalibrationEvtTimeByDigi(), digiCalibrator, PndEmcCluster::DigiList(), Double_t, PndEmcClusterProperties::Energy(), exp(), fBumpArray, fCentroidShift, fClusterArray, fClusterPosParam, fDigiArray, PndEmcDigi::fEvtNo, fExponentialConstant, fMaxBumps, fMinDigiEnergy, fMoliereRadius, fMoliereRadiusShashlyk, fRecoPar, fSharedDigiArray, fVerbose, PndEmcRecoPar::GetEmcClusterPosMethod(), PndEmcSharedDigi::GetEnergy(), PndEmcDigi::GetEnergy(), PndEmcDigi::GetModule(), PndEmcMapper::GetTCI(), PndEmcDigi::GetTCI(), PndEmcDigiCalibrator::GetTimeResolutionOfDigi(), PndEmcCluster::GetTrackEntering(), HowManyDidis, i, PndEmcTwoCoordIndex::Index(), PndEmcMapper::Instance(), PndEmcCluster::IsEnergyValid(), PndEmcCluster::IsPositionValid(), PndEmcXClMoments::Lat(), PndEmcCluster::LocalMaxMap(), PndEmcBump::MadeFrom(), map, PndEmcCluster::MemberDigiMap(), PndEmcCluster::NumberOfDigis(), PndEmcCluster::SetEnergy(), PndEmcBump::SetEventNo(), PndEmcCluster::SetLatMom(), PndEmcCluster::SetNBumps(), PndEmcCluster::SetPosition(), PndEmcCluster::SetZ20(), PndEmcCluster::SetZ53(), PndEmcClusterProperties::Where(), PndEmcDigi::where(), PndEmcTwoCoordIndex::XCoord(), and PndEmcTwoCoordIndex::YCoord().

190 {
191 
193  // Reset output array
194  if ( ! fBumpArray ) Fatal("Exec", "No Bump Array");
195  fBumpArray->Delete();
196  if ( ! fSharedDigiArray ) Fatal("Exec", "No Shared Digi Array");
197  fSharedDigiArray->Delete();
198 
199  int nClusters = fClusterArray->GetEntriesFast();
200 
201  for (Int_t iCluster = 0; iCluster < nClusters; iCluster++){
202  PndEmcCluster* theCluster = (PndEmcCluster*) fClusterArray->At(iCluster);
203 
204  int numberOfBumps = -1;
205  numberOfBumps = (theCluster->LocalMaxMap()).size();
206 
207  if (numberOfBumps<=1 || numberOfBumps >= fMaxBumps){
208  // Limit the max number of bumps in the cluster to 8 (default)
209  // in this case, we clearly have a cluster, but no bumps to speak of.
210  // Make 1 bump with weights all equal to 1
211 
212  std::map<Int_t, Int_t>::const_iterator theDigiIterator;
213 
214  PndEmcBump* theNewBump = AddBump();
215  theNewBump->MadeFrom(iCluster);
216  theNewBump->SetLink(FairLink("EmcCluster", iCluster));
217 
218  for(theDigiIterator = theCluster->MemberDigiMap().begin();
219  theDigiIterator != theCluster->MemberDigiMap().end(); ++theDigiIterator){
220  PndEmcDigi *theDigi = (PndEmcDigi *) fDigiArray->At(theDigiIterator->second);
221  AddSharedDigi(theDigi, 1.0); // PndEmcSharedDigi* sharedDigi= //[R.K.03/2017] unused variable
222  Int_t iSharedDigi=fSharedDigiArray->GetEntriesFast()-1;
223  theNewBump->addDigi(fSharedDigiArray,iSharedDigi);
224  }
225  }
226  else {
227  std::map<Int_t,Int_t> theMaximaDigis=theCluster->LocalMaxMap();
228  std::map<Int_t,Int_t>::iterator theMaximaDigisIterator;
229  std::map<PndEmcTwoCoordIndex*, TVector3*> theCentroidPoints;
230  std::map<PndEmcTwoCoordIndex*, TVector3*> theMaximaPoints;
231  std::map<PndEmcTwoCoordIndex*, PndEmcBump*> theIndexedBumps;
232  std::map<PndEmcTwoCoordIndex*, TVector3*> theAllDigiPoints;
233 
234  std::map<Int_t, Int_t> theDigiDict = theCluster->MemberDigiMap();
235 
236  double totalEnergy=0;
237 
238  for(theMaximaDigisIterator = theMaximaDigis.begin();
239  theMaximaDigisIterator != theMaximaDigis.end();
240  ++theMaximaDigisIterator){
241  PndEmcDigi *theMaxDigi = (PndEmcDigi *) fDigiArray->At(theMaximaDigisIterator->second);
242 
243  Int_t detId = theMaximaDigisIterator->first;
244  PndEmcTwoCoordIndex *theTCI = fEmcMap->GetTCI(detId);
245 
246  totalEnergy += theMaxDigi->GetEnergy();
247 
248  TVector3 *digiLocation = new TVector3(theMaxDigi->where());
249  TVector3 *sameLocation = new TVector3(theMaxDigi->where());
250 
251  theMaximaPoints.insert(std::map<PndEmcTwoCoordIndex*, TVector3*>::value_type(theTCI, digiLocation));
252  theCentroidPoints.insert(std::map<PndEmcTwoCoordIndex*, TVector3*>::value_type(theTCI, sameLocation));
253  }
254 
255  std::map<Int_t,Int_t>::iterator theAllDigisIterator;
256  // This loop works out the location of all the digis in the cluster
257 
258  for( theAllDigisIterator = theDigiDict.begin(); theAllDigisIterator != theDigiDict.end();
259  ++theAllDigisIterator){
260  Int_t detId = theAllDigisIterator->first;
261  PndEmcTwoCoordIndex *theTCI = fEmcMap->GetTCI(detId);
262  PndEmcDigi *theDigi = (PndEmcDigi *) fDigiArray->At(theAllDigisIterator->second);
263  TVector3 *digiLocation = new TVector3(theDigi->where());
264  theAllDigiPoints.insert(std::map<PndEmcTwoCoordIndex*, TVector3*>::value_type( theTCI, digiLocation ));
265  }
266 
267  theMaximaDigisIterator = theMaximaDigis.begin();
268 
269  // Now we can create the EmcBumps
270 
271  // The algorithm is as follows: We will index each bump by its
272  // maximum digi's PndEmcTwoCoordIndex. We will set up a list of
273  // bump centroids which to start with will be synonymous with the
274  // location of the maxima. We then apportion a weight to each
275  // digi, according to its distance from the centroids. We then
276  // construct the bumps according to these weights, which will
277  // presumably give a different set of centroids. This is repeated
278  // until the centroids are static within tolerance, or we reach
279  // the maximum number of iterations.
280 
281  Int_t iterations = 0;
282 
283  Double_t averageCentroidShift;
284 
285  do {
286  if (fVerbose>=3){
287  std::cout<<"iteration No "<<iterations<<std::endl;
288  }
289  averageCentroidShift=0.0;
290 
291  // First clean up the old bumps
292  std::map<PndEmcTwoCoordIndex*, PndEmcBump*>::iterator theBumpKiller = theIndexedBumps.begin();
293  while(theBumpKiller != theIndexedBumps.end()){
294  PndEmcBump *theBump = theBumpKiller->second;
295  delete theBump;
296  ++theBumpKiller;
297  }
298  theIndexedBumps.clear();
299 
300  // Then loop over all the maxima and assign weights accordingly
301  for (theMaximaDigisIterator = theMaximaDigis.begin();
302  theMaximaDigisIterator != theMaximaDigis.end();
303  ++theMaximaDigisIterator) {
304  Int_t detId = theMaximaDigisIterator->first;
305  PndEmcTwoCoordIndex *theCurrentMaximaTCI = fEmcMap->GetTCI(detId);
306 
307  if (fVerbose>=3){
308  std::cout<<"***************** current maximum: theta = "<<theCurrentMaximaTCI->XCoord()
309  <<", phi = "<<theCurrentMaximaTCI->YCoord()<<"*********"<<std::endl;
310  }
311 
312  // Create the bump which will correspond to this digi maxima
313  PndEmcBump* theNewBump = new PndEmcBump();
314  theNewBump->MadeFrom(iCluster);
315  theIndexedBumps.insert(std::map<PndEmcTwoCoordIndex*,
316  PndEmcBump*>::value_type(theCurrentMaximaTCI, theNewBump));
317 
318 
319  // Now we will look over all the digis and add each of them
320  // to this Bump with an appropriate weight
321 
322  for (theAllDigisIterator = theDigiDict.begin();
323  theAllDigisIterator != theDigiDict.end();++theAllDigisIterator) {
324  PndEmcDigi *theCurrentDigi = (PndEmcDigi *) fDigiArray->At(theAllDigisIterator->second);
325  PndEmcTwoCoordIndex *theCurrentTCI = theCurrentDigi->GetTCI();
326 
327  Double_t weight;
328 
329  // We are on the first pass and the digi is not a local max, or we are not on the
330  // first pass. Assign a weight according to the distance from the centroid position.
331 
332  Double_t myEnergy = 0;
333  Double_t myDistance = 0;
334 
335  // Now share the digi out according to its distance from the maxima,
336  // and the maxima energies
337 
338  Double_t totalDistanceEnergy=0;
339 
340  //Moliere Radius for Shashlyk is different
341  Double_t MoliereRadius;
342  if(theCurrentDigi->GetModule() == 5)
343  MoliereRadius = fMoliereRadiusShashlyk;
344  else
345  MoliereRadius = fMoliereRadius;
346 
347  std::map<PndEmcTwoCoordIndex*,TVector3*>::iterator theMaxPointsIterator;
348 
349  for(theMaxPointsIterator = theCentroidPoints.begin(); theMaxPointsIterator != theCentroidPoints.end();++theMaxPointsIterator){
350  PndEmcTwoCoordIndex *theMaxPointsTCI =theMaxPointsIterator->first;
351 
352  TVector3 *theMaxPoint = theMaxPointsIterator->second;
353  TVector3 *theCurrentDigiPoint = theAllDigiPoints.find(theCurrentTCI)->second;
354 
355  Double_t theDistance;
356 
357  // This next bit just checks to see if the maxima point in
358  // hand is the same as the crystal from which we are
359  // trying to find distance - just an FP trap really.
360 
361  if ((*theCurrentTCI)==(*theMaxPointsTCI)){
362  theDistance=0.0;
363  } else {
364  TVector3 distance( *theMaxPoint - *theCurrentDigiPoint);
365 
366  theDistance = distance.Mag();
367  }
368 
369  if (*theCurrentMaximaTCI == *(theMaxPointsTCI)){
370  // i.e. the maximum we are trying to find the distance from is
371  // the one for which we are currently trying to make a bump
372  myDistance = theDistance;
373  Int_t iCurentMaxDigi = (theDigiDict.find(theMaxPointsTCI->Index()))->second;
374  myEnergy = ((PndEmcDigi *) fDigiArray->At(iCurentMaxDigi))->GetEnergy();
375  }
376 
377  Int_t iMaxPoint = (theDigiDict.find(theMaxPointsTCI->Index()))->second;
378  totalDistanceEnergy += ((PndEmcDigi *) fDigiArray->At(iMaxPoint))->GetEnergy() *
379  exp(-fExponentialConstant * theDistance/MoliereRadius);
380  }
381 
382  if(totalDistanceEnergy > 0.0)
383  weight = myEnergy*exp(-fExponentialConstant*
384  myDistance/MoliereRadius) / ( totalDistanceEnergy);
385  else
386  weight=0;
387 
388  if (fVerbose>=3){
389  std::cout<<"\t digi theta = "<<theCurrentDigi->GetTCI()->XCoord()
390  <<", phi = "<<theCurrentDigi->GetTCI()->YCoord()<<std::endl;
391  std::cout<<"energy = "<<theCurrentDigi->GetEnergy()<<", weight = "<< weight<<std::endl;
392  }
393  PndEmcSharedDigi* sharedDigi= AddSharedDigi( theCurrentDigi, weight );
394 
395  if (fVerbose>=3){
396  std::cout<<"shared digi energy = "<<sharedDigi->GetEnergy()<<std::endl;
397  }
398 
399  Int_t iSharedDigi=fSharedDigiArray->GetEntriesFast()-1;
400  if( sharedDigi->GetEnergy() > fMinDigiEnergy){
401  theNewBump->addDigi( fSharedDigiArray, iSharedDigi );
402  } else {
403  fSharedDigiArray->RemoveAt(iSharedDigi);
404  fSharedDigiArray->Compress();
405  }
406  }
407 
408  // Compute the shift of the centroid we have just calculated
409  TVector3 *theOldCentroid = theCentroidPoints.find(theCurrentMaximaTCI)->second;
410 
411  PndEmcClusterProperties clusterProperties(*theNewBump, fSharedDigiArray);
412 
413  TVector3 newbumppos = clusterProperties.Where(fRecoPar->GetEmcClusterPosMethod(), fClusterPosParam);
414  theNewBump->SetPosition(newbumppos);
415  TVector3 centroidShift(*theOldCentroid - newbumppos);
416  averageCentroidShift+=centroidShift.Mag();
417  }
418 
419  averageCentroidShift/=(Double_t)numberOfBumps;
420 
421  // Put the new centroids in the list of centroid points,
422  // remembering to delete the old ones.
423  std::map<PndEmcTwoCoordIndex*, TVector3*>::iterator
424  theCentroidPointsIterator = theCentroidPoints.begin();
425  for(theCentroidPointsIterator = theCentroidPoints.begin();
426  theCentroidPointsIterator != theCentroidPoints.end();
427  ++theCentroidPointsIterator) {
428  delete theCentroidPointsIterator->second;
429  }
430  theCentroidPoints.clear();
431 
432  std::map<PndEmcTwoCoordIndex*, PndEmcBump*>::iterator theIndexedBumpsIterator;
433  for(theIndexedBumpsIterator = theIndexedBumps.begin();
434  theIndexedBumpsIterator != theIndexedBumps.end(); ++theIndexedBumpsIterator){
435  TVector3 *theNewCentroid = new TVector3((theIndexedBumpsIterator->second)->where());
436  theCentroidPoints.insert(std::map<PndEmcTwoCoordIndex*, TVector3*>::value_type(theIndexedBumpsIterator->first,theNewCentroid));
437  }
438 
439  iterations++;
440 
441  } while (iterations < fMaxIterations && averageCentroidShift > fCentroidShift);
442  //End of do loop
443 
444  // Finally append the new bumps to the TClonesArray.
445  std::map<PndEmcTwoCoordIndex*, PndEmcBump*>::iterator theBumpsIterator;
446  PndEmcBump *theBump;
447 
448  for(theBumpsIterator = theIndexedBumps.begin(); theBumpsIterator != theIndexedBumps.end();++theBumpsIterator){
449  theBump = theBumpsIterator->second;
450  Int_t size_ba = fBumpArray->GetEntriesFast();
451  PndEmcBump* theNextBump = new((*fBumpArray)[size_ba]) PndEmcBump(*(theBump));
452  if (fVerbose>0)
453  std::cout << "Bump Created!" << std::endl;
454  theNextBump->SetInsertHistory(kFALSE);
455  theNextBump->SetLink(FairLink("EmcCluster", iCluster));
456  PndEmcCluster* myCluster = (PndEmcCluster*)fClusterArray->At(iCluster);
457  theNextBump->AddLinks(myCluster->GetTrackEntering());
458  theNextBump->SetTimeStamp(myCluster->GetTimeStamp());
459  theNextBump->SetTimeStampError(myCluster->GetTimeStampError());
460  }
461 
462  std::map<PndEmcTwoCoordIndex*,TVector3*>::iterator theGrimReaper = theMaximaPoints.begin();
463  for(theGrimReaper = theMaximaPoints.begin();
464  theGrimReaper != theMaximaPoints.end();
465  ++theGrimReaper){
466  delete theGrimReaper->second;
467  }
468  theMaximaPoints.clear();
469 
470  for(theGrimReaper = theAllDigiPoints.begin();
471  theGrimReaper != theAllDigiPoints.end();
472  ++theGrimReaper){
473  delete theGrimReaper->second;
474  }
475  theAllDigiPoints.clear();
476 
477  for(theGrimReaper = theCentroidPoints.begin();
478  theGrimReaper != theCentroidPoints.end();
479  ++theGrimReaper){
480  delete theGrimReaper->second;
481  }
482  theCentroidPoints.clear();
483  }
484 
485  Int_t nBumps = (theCluster->LocalMaxMap()).size();
486  theCluster->SetNBumps(nBumps);
487  }
488 
489  // At that moment internal state fEnergy and fWhere of Clusters are
490  // not initialized, the following make it possible to see energy and
491  // position from output root file
492  Int_t nBump = fBumpArray->GetEntriesFast();
493 
494  Double_t fTimeError; //CalibTimeOfaDigi, //[R.K.03/2017] unused variable
495  Double_t WeightedFactor1(0.), NormWeightedFactor1(0.), AverageTime1(0.);
496  //Double_t WeightedFactor2(0.), NormWeightedFactor2(0.), AverageTime2(0.);
497  //Double_t WeightedFactor3(0.), NormWeightedFactor3(0.), AverageTime3(0.);
498  for (Int_t i=0; i<nBump; i++){
499  PndEmcBump *tmpbump = (PndEmcBump*) fBumpArray->At(i);
500  PndEmcClusterProperties clusterProperties(*tmpbump, fSharedDigiArray);
501 
502  if (!tmpbump->IsEnergyValid())
503  tmpbump->SetEnergy(clusterProperties.Energy());
504  if (!tmpbump->IsPositionValid())
505  tmpbump->SetPosition(clusterProperties.Where(fRecoPar->GetEmcClusterPosMethod(), fClusterPosParam));
506  PndEmcXClMoments xClMoments(*tmpbump, fSharedDigiArray);
507  tmpbump->SetZ20(xClMoments.AbsZernikeMoment(2, 0, 15));
508  tmpbump->SetZ53(xClMoments.AbsZernikeMoment(5, 3, 15));
509  tmpbump->SetLatMom(xClMoments.Lat());
510 
511  //for time information
512  WeightedFactor1 = 0.;//= WeightedFactor2 = WeightedFactor3 = 0.;
513  AverageTime1 = 0.;//AverageTime2 = AverageTime3 = 0.;
514  Double_t fMaxDigiEnergy = -1.;
515  const std::vector<Int_t>& listOfDigi = tmpbump->DigiList();
516  for(size_t id=0;id <listOfDigi.size();++id){
517  PndEmcDigi* theDigi = (PndEmcDigi*)fSharedDigiArray->At(listOfDigi[id]);
518  //CalibTimeOfaDigi = digiCalibrator.CalibrationEvtTimeByDigi(theDigi, kFALSE);
519  fTimeError = digiCalibrator.GetTimeResolutionOfDigi(theDigi);
520  WeightedFactor1 += 1./fTimeError/fTimeError;
521  //WeightedFactor2 += theDigi->GetEnergy()*1./fTimeError/fTimeError;
522  //WeightedFactor3 += theDigi->GetEnergy();
523  if(theDigi->GetEnergy() > fMaxDigiEnergy){
524  fMaxDigiEnergy = theDigi->GetEnergy();
525  tmpbump->SetEventNo(theDigi->fEvtNo);
526  //tmpbump->SetTimeStamp1(theDigi->GetTimeStamp());
527  //tmpbump->fSeedPosition = theDigi->where();
528  }
529  }
530  for(size_t id=0;id <listOfDigi.size();++id){
531  PndEmcDigi* theDigi = (PndEmcDigi*)fSharedDigiArray->At(listOfDigi[id]);
532  digiCalibrator.CalibrationEvtTimeByDigi(theDigi, kFALSE); //CalibTimeOfaDigi = //[R.K.03/2017] unused variable
533  fTimeError = digiCalibrator.GetTimeResolutionOfDigi(theDigi);
534  NormWeightedFactor1 = 1./fTimeError/fTimeError;
535  NormWeightedFactor1 /= WeightedFactor1;
536  AverageTime1 += NormWeightedFactor1*theDigi->GetTimeStamp();
537 
538  //NormWeightedFactor2 = theDigi->GetEnergy()*1./fTimeError/fTimeError;
539  //NormWeightedFactor2 /= WeightedFactor2;
540  //AverageTime2 += NormWeightedFactor2*theDigi->GetTimeStamp();
541 
542  //NormWeightedFactor3 = theDigi->GetEnergy();
543  //NormWeightedFactor3 /= WeightedFactor3;
544  //AverageTime3 += NormWeightedFactor3*theDigi->GetTimeStamp();
545  }
546  tmpbump->SetTimeStamp(AverageTime1);
547  HowManyDidis += tmpbump->NumberOfDigis();
548  //tmpbump->SetTimeStamp1(AverageTime1);
549  //tmpbump->SetTimeStamp2(AverageTime2);
550  //tmpbump->SetTimeStamp3(AverageTime3);
551  //end for time information
552  }
553 
554  if (fVerbose>=1){
555  std::cout<<"PndEmcExpClusterSplitter:: Number of clusters = "<<nClusters<<std::endl;
556  std::cout<<"PndEmcExpClusterSplitter:: Number of bumps = "<<nBump<<std::endl;
557  }
558 
559 }
void SetEnergy(Double_t en)
virtual void MadeFrom(Int_t clusterIndex)
Definition: PndEmcBump.cxx:76
int fVerbose
Definition: poormantracks.C:24
std::vector< Double_t > fClusterPosParam
virtual Double_t GetEnergy() const
Definition: PndEmcDigi.cxx:296
represents the reconstructed hit of one emc crystal
Definition: PndEmcDigi.h:40
friend F32vec4 exp(const F32vec4 &a)
Definition: P4_F32vec4.h:109
Int_t i
Definition: run_full.C:25
Double_t CalibrationEvtTimeByDigi(PndEmcDigi *theDigi, bool PrintOut=kFALSE) const
PndTransMap * map
Definition: sim_emc_apd.C:99
void SetEventNo(Int_t evtNo)
Definition: PndEmcBump.h:57
bool IsEnergyValid() const
Definition: PndEmcCluster.h:77
virtual void SetNBumps(unsigned nbumps)
const std::vector< Int_t > & DigiList() const
Definition: PndEmcCluster.h:40
stores crystal index coordinates (x,y) or (theta,phi)
PndEmcTwoCoordIndex * GetTCI(Int_t DetectorId)
Emc geometry mapper.
Definition: PndEmcMapper.h:22
PndEmcRecoPar * fRecoPar
Reconstruction parameter container.
Short_t GetModule() const
Definition: PndEmcDigi.h:103
PndEmcDigiCalibrator digiCalibrator
Double_t
const std::map< Int_t, Int_t > & LocalMaxMap() const
Definition: PndEmcCluster.h:42
used to share PndEmcDigis between bumps
a cluster (group of neighboring crystals) of hit emc crystals
Definition: PndEmcCluster.h:29
const std::map< Int_t, Int_t > & MemberDigiMap() const
Definition: PndEmcCluster.h:43
void SetZ20(Double_t z20)
Int_t NumberOfDigis() const
void SetZ53(Double_t z53)
Int_t fEvtNo
Definition: PndEmcDigi.h:118
virtual Double_t GetEnergy() const
bool IsPositionValid() const
Definition: PndEmcCluster.h:78
PndEmcSharedDigi * AddSharedDigi(PndEmcDigi *, Double_t weight)
Adds a new PndEmcSharedDigi to fSharedDigiArray and returns it.
const TVector3 & where() const
Definition: PndEmcDigi.h:111
void SetPosition(TVector3 pos)
PndEmcBump * AddBump()
Adds a new PndEmcBump to fBumpArray and returns it.
Double_t GetTimeResolutionOfDigi(PndEmcDigi *theDigi) const
Text_t * GetEmcClusterPosMethod()
Definition: PndEmcRecoPar.h:20
static PndEmcMapper * Instance()
void SetLatMom(Double_t latMom)
represents a reconstructed (splitted) emc cluster
Definition: PndEmcBump.h:34
FairMultiLinkedData GetTrackEntering() const
PndEmcTwoCoordIndex * GetTCI() const
Definition: PndEmcDigi.cxx:216
virtual void addDigi(const TClonesArray *digiArray, Int_t iDigi)
void PndEmcExpClusterSplitter::FinishTask ( )
virtual

Called at end of task.

Outputs the number of digis read.

Returns
void

Definition at line 593 of file PndEmcExpClusterSplitter.cxx.

References HowManyDidis.

594 {
595  cout<<"================================================="<<endl;
596  cout<<"PndEmcExpClusterSplitter::FinishTask"<<endl;
597  cout<<"================================================="<<endl;
598  cout<<"read digis #"<<HowManyDidis<<endl;
599 }
Bool_t PndPersistencyTask::GetPersistency ( )
inlineinherited

Definition at line 32 of file PndPersistencyTask.h.

References PndPersistencyTask::fPersistency.

Referenced by PndLmdPixelHitProducerFast::GetPersistance(), PndMdtDigitization::Init(), PndMdtHitProducerIdeal::Init(), PndMdtClusterTask::Init(), PndFtsHitProducerRealFast::Init(), PndRichHitProducer::Init(), PndSttHitProducerRealFast::Init(), PndDiscTaskReconstruction::Init(), PndSttHelixHitProducer::Init(), PndDiscTaskPID::Init(), PndIdealTrackFinder::Init(), PndSttMvdGemTracking::Init(), PndMdtTrkProducer::Init(), PndFtsHitProducerRealFull::Init(), PndLmdPixelClusterTask::Init(), PndSttHitProducerRealFull::Init(), PndLmdStripClusterTask::Init(), PndEmcApdHitProducer::Init(), PndMissingPzCleanerTask::Init(), PndEmcMakeRecoHit::Init(), PndEmcMakeClusterOnline::Init(), PndTrackSmearTask::Init(), PndEmcFWEndcapTimebasedWaveforms::Init(), PndSttHitProducerIdeal::Init(), PndEmcFWEndcapDigi::Init(), PndFtsHitProducerIdeal::Init(), PndEmcMakeCluster::Init(), PndMdtPointsToWaveform::Init(), PndDiscTaskDigitization::Init(), PndEmcMakeDigi::Init(), PndSdsTimeWalkCorrTask::Init(), PndLmdPixelHitProducerFast::Init(), PndDrcHitFinder::Init(), PndRichHitFinder::Init(), PndEmcMakeCorr::Init(), PndFtofHitProducerIdeal::Init(), PndEmcHitsToWaveform::Init(), PndSciTDigiTask::Init(), PndDrcHitProducerIdeal::Init(), PndSdsHitProducerIdeal::Init(), PndSciTHitProducerIdeal::Init(), PndEmcHitProducer::Init(), PndRecoMultiKalmanTask2::Init(), PndDrcHitProducerReal::Init(), PndDskFLGHitProducerIdeal::Init(), PndEmcTmpWaveformToDigi::Init(), PndDrcDigiTask::Init(), PndEmcWaveformToDigi::Init(), PndSttMatchTracks::Init(), PndEmcWaveformToCalibratedDigi::Init(), PndTrkTracking2::Init(), PndSttFindTracks::Init(), PndEmcMultiWaveformToCalibratedDigi::Init(), PndDrcTimeDigiTask::Init(), PndRecoKalmanTask2::Init(), Init(), PndSdsNoiseProducer::Init(), PndFtsHoughTrackerTask::Init(), PndEmcPhiBumpSplitter::Init(), PndSdsHybridHitProducer::Init(), PndSdsIdealRecoTask::Init(), PndRecoMultiKalmanTask::Init(), PndSdsIdealClusterTask::Init(), PndRecoKalmanTask::Init(), PndSdsStripHitProducerDif::Init(), PndSdsStripHitProducer::Init(), PndGemDigitize::Init(), PndGemFindHits::Init(), PndSdsPixelClusterTask::Init(), PndSdsStripClusterTask::Init(), PndMvdGemTrackFinderOnHits::Init(), PndBarrelTrackFinder::Init(), PndEmcFullDigiTask::PndEmcFullDigiTask(), PndEmcMakeBump::PndEmcMakeBump(), PndUnassignedHitsTask::RegisterBranches(), PndMvdClusterTask::SetPersistance(), PndMvdDigiTask::SetPersistance(), PndEmcMakeBump::SetStorageOfData(), and PndEmcFullDigiTask::StoreDigi().

32 { return fPersistency; }
InitStatus PndEmcExpClusterSplitter::Init ( )
virtual

Init Task.

Returns
InitStatus
Return values
kSUCCESSsuccess

Definition at line 95 of file PndEmcExpClusterSplitter.cxx.

References fBumpArray, fCentroidShift, fClusterArray, fClusterPosParam, fDigiArray, fExponentialConstant, fGeoPar, fMaxBumps, fMaxIterations, fMinDigiEnergy, fMoliereRadius, fMoliereRadiusShashlyk, fRecoPar, fSharedDigiArray, PndEmcRecoPar::GetCentroidShift(), PndEmcRecoPar::GetEmcClusterPosMethod(), PndEmcRecoPar::GetExponentialConstant(), PndEmcRecoPar::GetMaxBumps(), PndEmcRecoPar::GetMaxIterations(), PndEmcRecoPar::GetMinDigiEnergy(), PndEmcRecoPar::GetMoliereRadius(), PndEmcRecoPar::GetMoliereRadiusShashlyk(), PndEmcRecoPar::GetOffsetParmA(), PndEmcRecoPar::GetOffsetParmB(), PndEmcRecoPar::GetOffsetParmC(), PndPersistencyTask::GetPersistency(), HowManyDidis, PndEmcGeoPar::InitEmcMapper(), and PndEmcStructure::Instance().

95  {
96 
97  // Get RootManager
98  FairRootManager* ioman = FairRootManager::Instance();
99  if ( ! ioman ){
100  cout << "-E- PndEmcExpClusterSplitter::Init: "
101  << "RootManager not instantiated!" << endl;
102  return kFATAL;
103  }
104 
105  // Geometry loading
108 
109  // Get input array
110  if(FairRunAna::Instance()->IsTimeStamp()) {
111  fDigiArray = (TClonesArray*) ioman->GetObject("EmcDigiClusterBase");
112  } else {
113  fDigiArray = (TClonesArray*) ioman->GetObject("EmcDigi");
114  }
115  if ( ! fDigiArray ) {
116  cout << "-W- PndEmcExpClusterSplitter::Init: "
117  << "No PndEmcDigi array!" << endl;
118  return kERROR;
119  }
120 
121  fClusterArray = dynamic_cast<TClonesArray *> (ioman->GetObject("EmcCluster"));
122  if ( ! fClusterArray ) {
123  cout << "-W- PndEmcExpClusterSplitter::Init: "
124  << "No PndEmcCluster array!" << endl;
125  return kERROR;
126  }
127 
131  // Energy fall off with distance from centre of cluster is
132  // exp(-a*dist/Mr) Mr is the moliere radius. dist is distance from
133  // centre in cm, a is the above parameter. The optimized value for
134  // logarithimc cluster positioning is 2.5 For linear cluster
135  // positioning a should be set to 1.5
136 
138  // Set the max number of iterations that the splitting algorithm is allowed
139  // to do before it decides that enough is enough.
140 
142  // Set the tolerance level to which it is said that a bump is
143  // said not to have moved since the last iteration.
144  // The default is a millimetre.
146  // Set an upper limit on the number of bumps allowed in a cluster if it
147  // is to be split.
148 
150  // Set minimum SharedDigi energy to 20keV.
151 
152  if (!strcmp(fRecoPar->GetEmcClusterPosMethod(),"lilo"))
153  {
154  cout<<"Lilo cluster position method"<<endl;
158  }
159 
160  // Create and register output array
161  fBumpArray = new TClonesArray("PndEmcBump");
162  ioman->Register("EmcBump","Emc",fBumpArray,GetPersistency());
163 
164  fSharedDigiArray = new TClonesArray("PndEmcSharedDigi");
165  ioman->Register("EmcSharedDigi","Emc",fSharedDigiArray,GetPersistency());
166 
167  HowManyDidis = 0;
168 
169  cout << "-I- PndEmcExpClusterSplitter: Intialization successfull" << endl;
170  return kSUCCESS;
171 }
std::vector< Double_t > fClusterPosParam
Double_t GetMoliereRadius()
Definition: PndEmcRecoPar.h:32
Double_t GetCentroidShift()
Definition: PndEmcRecoPar.h:36
Double_t GetMinDigiEnergy()
Definition: PndEmcRecoPar.h:38
Double_t GetOffsetParmB()
Definition: PndEmcRecoPar.h:22
Double_t GetOffsetParmC()
Definition: PndEmcRecoPar.h:23
PndEmcRecoPar * fRecoPar
Reconstruction parameter container.
void InitEmcMapper()
Int_t GetMaxBumps()
Definition: PndEmcRecoPar.h:37
Double_t GetExponentialConstant()
Definition: PndEmcRecoPar.h:34
Double_t GetMoliereRadiusShashlyk()
Definition: PndEmcRecoPar.h:33
PndEmcGeoPar * fGeoPar
Geometry parameter container.
Double_t GetOffsetParmA()
Definition: PndEmcRecoPar.h:21
Int_t GetMaxIterations()
Definition: PndEmcRecoPar.h:35
Text_t * GetEmcClusterPosMethod()
Definition: PndEmcRecoPar.h:20
static PndEmcStructure * Instance()
PndEmcExpClusterSplitter& PndEmcExpClusterSplitter::operator= ( const PndEmcExpClusterSplitter )
private
void PndEmcExpClusterSplitter::SetParContainers ( )
protectedvirtual

Get parameter containers

Definition at line 601 of file PndEmcExpClusterSplitter.cxx.

References fDigiPar, fGeoPar, fRecoPar, and run.

601  {
602 
603  // Get run and runtime database
604  FairRun* run = FairRun::Instance();
605  if ( ! run ) Fatal("SetParContainers", "No analysis run");
606 
607  FairRuntimeDb* db = run->GetRuntimeDb();
608  if ( ! db ) Fatal("SetParContainers", "No runtime database");
609  // Get Emc digitisation parameter container
610  fGeoPar = (PndEmcGeoPar*) db->getContainer("PndEmcGeoPar");
611  // Get Emc digitisation parameter container
612  fDigiPar = (PndEmcDigiPar*) db->getContainer("PndEmcDigiPar");
613  // Get Emc reconstruction parameter container
614  fRecoPar = (PndEmcRecoPar*) db->getContainer("PndEmcRecoPar");
615 }
Int_t run
Definition: autocutx.C:47
PndEmcRecoPar * fRecoPar
Reconstruction parameter container.
parameter set of Emc digitisation
Definition: PndEmcDigiPar.h:12
PndEmcGeoPar * fGeoPar
Geometry parameter container.
PndEmcDigiPar * fDigiPar
Digitisation parameter container.
Parameter set for Emc Reco.
Definition: PndEmcRecoPar.h:12
void PndPersistencyTask::SetPersistency ( Bool_t  val = kTRUE)
inlineinherited

Definition at line 31 of file PndPersistencyTask.h.

References PndPersistencyTask::fPersistency, and val.

Referenced by barrelTrackFinder(), digi_complete(), digi_complete_newSTT(), digiOnly_complete(), PndBarrelTrackFinder::PndBarrelTrackFinder(), PndCATracking::PndCATracking(), PndDrcHitFinder::PndDrcHitFinder(), PndEmc2DLocMaxFinder::PndEmc2DLocMaxFinder(), PndEmcExpClusterSplitter(), PndEmcFullDigiTask::PndEmcFullDigiTask(), PndEmcFWEndcapDigi::PndEmcFWEndcapDigi(), PndEmcFWEndcapTimebasedWaveforms::PndEmcFWEndcapTimebasedWaveforms(), PndEmcHitProducer::PndEmcHitProducer(), PndEmcHitsToWaveform::PndEmcHitsToWaveform(), PndEmcMakeBump::PndEmcMakeBump(), PndEmcMakeCluster::PndEmcMakeCluster(), PndEmcMakeClusterOnline::PndEmcMakeClusterOnline(), PndEmcMakeDigi::PndEmcMakeDigi(), PndEmcMakeRecoHit::PndEmcMakeRecoHit(), PndEmcMultiWaveformToCalibratedDigi::PndEmcMultiWaveformToCalibratedDigi(), PndEmcPhiBumpSplitter::PndEmcPhiBumpSplitter(), PndEmcTmpWaveformToDigi::PndEmcTmpWaveformToDigi(), PndEmcWaveformToCalibratedDigi::PndEmcWaveformToCalibratedDigi(), PndEmcWaveformToDigi::PndEmcWaveformToDigi(), PndFtofHitProducerIdeal::PndFtofHitProducerIdeal(), PndFtsCATracking::PndFtsCATracking(), PndFtsHitProducerIdeal::PndFtsHitProducerIdeal(), PndFtsHitProducerRealFast::PndFtsHitProducerRealFast(), PndFtsHitProducerRealFull::PndFtsHitProducerRealFull(), PndFtsHoughTrackerTask::PndFtsHoughTrackerTask(), PndGemDigitize::PndGemDigitize(), PndGemFindHits::PndGemFindHits(), PndIdealTrackFinder::PndIdealTrackFinder(), PndLmdPixelClusterTask::PndLmdPixelClusterTask(), PndLmdPixelHitProducerFast::PndLmdPixelHitProducerFast(), PndMdtClusterTask::PndMdtClusterTask(), PndMdtDigitization::PndMdtDigitization(), PndMdtHitProducerIdeal::PndMdtHitProducerIdeal(), PndMdtPointsToWaveform::PndMdtPointsToWaveform(), PndMdtTrkProducer::PndMdtTrkProducer(), PndMissingPzCleanerTask::PndMissingPzCleanerTask(), PndMvdGemTrackFinderOnHits::PndMvdGemTrackFinderOnHits(), PndMvdHitProducerIdeal::PndMvdHitProducerIdeal(), PndMvdPixelClusterTask::PndMvdPixelClusterTask(), PndMvdTimeWalkCorrTask::PndMvdTimeWalkCorrTask(), PndMvdToPix4ClusterTask::PndMvdToPix4ClusterTask(), PndRecoKalmanTask::PndRecoKalmanTask(), PndRecoKalmanTask2::PndRecoKalmanTask2(), PndRecoMultiKalmanTask::PndRecoMultiKalmanTask(), PndRecoMultiKalmanTask2::PndRecoMultiKalmanTask2(), PndRichHitFinder::PndRichHitFinder(), PndRichHitProducer::PndRichHitProducer(), PndSciTDigiTask::PndSciTDigiTask(), PndSciTHitProducerIdeal::PndSciTHitProducerIdeal(), PndSdsHitProducerIdeal::PndSdsHitProducerIdeal(), PndSdsHybridHitProducer::PndSdsHybridHitProducer(), PndSdsIdealClusterTask::PndSdsIdealClusterTask(), PndSdsIdealRecoTask::PndSdsIdealRecoTask(), PndSdsNoiseProducer::PndSdsNoiseProducer(), PndSdsPixelClusterTask::PndSdsPixelClusterTask(), PndSdsStripClusterTask::PndSdsStripClusterTask(), PndSdsStripHitProducer::PndSdsStripHitProducer(), PndSdsTimeWalkCorrTask::PndSdsTimeWalkCorrTask(), PndSttFindTracks::PndSttFindTracks(), PndSttHelixHitProducer::PndSttHelixHitProducer(), PndSttHitProducerIdeal::PndSttHitProducerIdeal(), PndSttHitProducerRealFast::PndSttHitProducerRealFast(), PndSttHitProducerRealFull::PndSttHitProducerRealFull(), PndSttMatchTracks::PndSttMatchTracks(), PndSttMvdGemTracking::PndSttMvdGemTracking(), PndTrackSmearTask::PndTrackSmearTask(), PndTrkTracking2::PndTrkTracking2(), reco(), reco_complete(), reco_complete_gf2(), reco_complete_newSTT(), reco_complete_sec(), recoideal_complete(), PndMvdClusterTask::SetPersistance(), PndMvdDigiTask::SetPersistance(), PndLmdPixelHitProducerFast::SetPersistance(), PndSdsHitProducerIdeal::SetPersistance(), PndSttMvdGemTracking::SetPersistenc(), PndMdtClusterTask::SetPersistence(), PndSttHelixHitProducer::SetPersistence(), PndMissingPzCleanerTask::SetPersistence(), PndFtsHitProducerRealFast::SetPersistence(), PndFtsHitProducerRealFull::SetPersistence(), PndSttHitProducerIdeal::SetPersistence(), PndSttHitProducerRealFull::SetPersistence(), PndSttHitProducerRealFast::SetPersistence(), PndFtsHitProducerIdeal::SetPersistence(), PndTrackSmearTask::SetPersistence(), PndSciTHitProducerIdeal::SetPersistence(), PndIdealTrackFinder::SetPersistence(), PndSttMatchTracks::SetPersistence(), PndSttFindTracks::SetPersistence(), PndFtsHoughTrackerTask::SetPersistence(), PndTrkTracking2::SetPersistence(), PndEmcMakeRecoHit::SetStorageOfData(), PndEmcMakeClusterOnline::SetStorageOfData(), PndEmcFWEndcapDigi::SetStorageOfData(), PndEmcFWEndcapTimebasedWaveforms::SetStorageOfData(), PndEmcMakeDigi::SetStorageOfData(), PndMdtPointsToWaveform::SetStorageOfData(), PndEmc2DLocMaxFinder::SetStorageOfData(), PndEmcMakeCluster::SetStorageOfData(), PndEmcHitsToWaveform::SetStorageOfData(), PndEmcMakeBump::SetStorageOfData(), PndEmcTmpWaveformToDigi::SetStorageOfData(), PndEmcWaveformToDigi::SetStorageOfData(), PndEmcWaveformToCalibratedDigi::SetStorageOfData(), PndEmcMultiWaveformToCalibratedDigi::SetStorageOfData(), SetStorageOfData(), PndEmcPhiBumpSplitter::SetStorageOfData(), standard_tracking(), and PndEmcFullDigiTask::StoreDigi().

31 { fPersistency = val; }
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
void PndEmcExpClusterSplitter::SetStorageOfData ( Bool_t  p = kTRUE)
inline

Definition at line 70 of file PndEmcExpClusterSplitter.h.

References p, and PndPersistencyTask::SetPersistency().

Referenced by digi_sttcombi().

70 {SetPersistency(p);};
Double_t p
Definition: anasim.C:58
void SetPersistency(Bool_t val=kTRUE)

Member Data Documentation

PndEmcDigiCalibrator PndEmcExpClusterSplitter::digiCalibrator
private

Definition at line 111 of file PndEmcExpClusterSplitter.h.

Referenced by Exec().

TClonesArray* PndEmcExpClusterSplitter::fBumpArray
private

Output array of PndEmcBumps

Definition at line 89 of file PndEmcExpClusterSplitter.h.

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

Double_t PndEmcExpClusterSplitter::fCentroidShift
private

Definition at line 103 of file PndEmcExpClusterSplitter.h.

Referenced by Exec(), and Init().

TClonesArray* PndEmcExpClusterSplitter::fClusterArray
private

Definition at line 86 of file PndEmcExpClusterSplitter.h.

Referenced by Exec(), and Init().

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

Definition at line 96 of file PndEmcExpClusterSplitter.h.

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

TClonesArray* PndEmcExpClusterSplitter::fDigiArray
private

Input array of PndEmcClusters

Definition at line 85 of file PndEmcExpClusterSplitter.h.

Referenced by Exec(), and Init().

PndEmcDigiPar* PndEmcExpClusterSplitter::fDigiPar
private

Digitisation parameter container.

Definition at line 93 of file PndEmcExpClusterSplitter.h.

Referenced by SetParContainers().

Double_t PndEmcExpClusterSplitter::fExponentialConstant
private

Definition at line 101 of file PndEmcExpClusterSplitter.h.

Referenced by Exec(), and Init().

PndEmcGeoPar* PndEmcExpClusterSplitter::fGeoPar
private

Geometry parameter container.

Definition at line 92 of file PndEmcExpClusterSplitter.h.

Referenced by Init(), and SetParContainers().

Int_t PndEmcExpClusterSplitter::fMaxBumps
private

Definition at line 104 of file PndEmcExpClusterSplitter.h.

Referenced by Exec(), and Init().

Int_t PndEmcExpClusterSplitter::fMaxIterations
private

Definition at line 102 of file PndEmcExpClusterSplitter.h.

Referenced by Init().

Double_t PndEmcExpClusterSplitter::fMinDigiEnergy
private

Definition at line 105 of file PndEmcExpClusterSplitter.h.

Referenced by Exec(), and Init().

Double_t PndEmcExpClusterSplitter::fMoliereRadius
private

Definition at line 99 of file PndEmcExpClusterSplitter.h.

Referenced by Exec(), and Init().

Double_t PndEmcExpClusterSplitter::fMoliereRadiusShashlyk
private

Definition at line 100 of file PndEmcExpClusterSplitter.h.

Referenced by Exec(), and Init().

PndEmcRecoPar* PndEmcExpClusterSplitter::fRecoPar
private

Reconstruction parameter container.

Definition at line 94 of file PndEmcExpClusterSplitter.h.

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

TClonesArray* PndEmcExpClusterSplitter::fSharedDigiArray
private

Definition at line 90 of file PndEmcExpClusterSplitter.h.

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

Int_t PndEmcExpClusterSplitter::HowManyDidis
private

Definition at line 112 of file PndEmcExpClusterSplitter.h.

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


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