PandaRoot
PndEmcExpClusterSplitter.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
13 //--------------------------------------------------------------------------
14 // File and Version Information:
15 // $Id:$
16 //
17 // Description:
18 // Class PndEmcExpClusterSplitter.
19 // Concrete implementation of EmcAbsClusterSplitter which splits
20 // on the basis of exponential distance from the bump centroid.
21 //
22 // Environment:
23 // Software developed for the BaBar Detector at the SLAC B-Factory.
24 //
25 // Adapted for the PANDA experiment at GSI
26 //
27 // Author List:
28 // Phil Strother
29 //
30 // Copyright Information:
31 // Copyright (C) 1997 Imperial College
32 //
33 // Modified:
34 // M. Babai
35 //------------------------------------------------------------------------
36 //#pragma once
37 #ifndef PNDEMCEXPCLUSTERSPLITTER_H
38 #define PNDEMCEXPCLUSTERSPLITTER_H
39 
40 //---------------
41 // C++ Headers --
42 //---------------
43 #include <PndPersistencyTask.h>
44 #include <vector>
45 #include <map>
46 #include "TArrayD.h"
47 #include "TVector3.h"
48 
49 #include "TObject.h"
50 #include "PndEmcDataTypes.h"
51 #include "PndEmcDigiCalibrator.h"
52 //------------------------------------
53 // Collaborating Class Declarations --
54 //------------------------------------
55 
56 class PndEmcCluster;
57 class PndEmcBump;
58 class PndEmcDigi;
59 class PndEmcSharedDigi;
61 
62 class PndEmcGeoPar;
63 class PndEmcDigiPar;
64 class PndEmcRecoPar;
65 
66 
72 {
73 public:
74  // Constructor
75  PndEmcExpClusterSplitter(Int_t verbose=0);
76  // Destructor
77  virtual ~PndEmcExpClusterSplitter( );
78 
79  // Methods
80  virtual InitStatus Init();
81  virtual void Exec(Option_t* opt);
82  virtual void FinishTask();
83 
84  void SetStorageOfData(Bool_t p = kTRUE) {SetPersistency(p);};
86  PndEmcSharedDigi* AddSharedDigi(PndEmcDigi*, Double_t weight);
87  Double_t LateralDevelopment(const Double_t TotEnergy, const TVector3 *DetPos, const TVector3 *SeedPos, const TVector3 *ShowerCenter, const Double_t RM);
88 
89 protected:
91  virtual void SetParContainers();
92 
93 private:
94  // don't allow copying (-Weffc++)
95  PndEmcExpClusterSplitter(const PndEmcExpClusterSplitter&); // no implementation
96  PndEmcExpClusterSplitter& operator= (const PndEmcExpClusterSplitter&); // no implementation
97 
98 private:
100  TClonesArray* fDigiArray;
101  TClonesArray* fClusterArray;
102 
104  TClonesArray* fBumpArray;
105  TClonesArray* fSharedDigiArray;
106 
107  PndEmcGeoPar* fGeoPar;
108  PndEmcDigiPar* fDigiPar;
109  PndEmcRecoPar* fRecoPar;
110 
111  std::vector<Double_t> fClusterPosParam;
112 
113  Bool_t fPersistance; // switch to turn on/off storing the arrays to a file
114  // Data members
115  Double_t fMoliereRadius;
116  Double_t fMoliereRadiusShashlyk;
117  Double_t fExponentialConstant;
118  TArrayD fParArray1;
119  TArrayD fParArray2;
120  TArrayD fParArray3;
121  TArrayD fParArray4;
122 
123  Int_t fMaxIterations;
124  Double_t fCentroidShift;
125  Int_t fMaxBumps;
126  Double_t fMinDigiEnergy;
127 
128  /* Verbosity level */
129  // Int_t fVerbose; //do not shadow PndPersistencyTask::fVerbose
130 
131  //added for time information
132  PndEmcDigiCalibrator digiCalibrator;
133  Int_t HowManyDidis;
134 
135  ClassDef(PndEmcExpClusterSplitter,2);
136 };
137 #endif // EMCABSCLUSTERSPLITTER_HH
virtual void FinishTask()
PndEmcSharedDigi * AddSharedDigi(PndEmcDigi *, Double_t weight)
PndEmcExpClusterSplitter(Int_t verbose=0)
virtual InitStatus Init()
void SetPersistency(Bool_t val=kTRUE)
stores crystal index coordinates (x,y) or (theta,phi)
Double_t LateralDevelopment(const Double_t TotEnergy, const TVector3 *DetPos, const TVector3 *SeedPos, const TVector3 *ShowerCenter, const Double_t RM)
virtual ~PndEmcExpClusterSplitter()
virtual void SetParContainers()
PndEmcBump * AddBump()
used to share PndEmcDigis between bumps
splits clusters on the basis of exponential distance from the bump centroid
parameter set of Emc digitisation
Definition: PndEmcDigiPar.h:24
void SetStorageOfData(Bool_t p=kTRUE)
represents a reconstructed (splitted) emc cluster
Definition: PndEmcBump.h:46
Parameter set for Emc Reco.
Definition: PndEmcRecoPar.h:25
virtual void Exec(Option_t *opt)