147 if ( !
fBumpArray ) Fatal(
"Exec",
"No Bump Array");
149 Double_t fEventTime = FairRootManager::Instance()->GetEventTime();
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()
160 cout<<
"********************************************************************"<<endl;
185 std::vector<PndEmcBump*> taggedBumpofToBeDeleted;
187 Double_t EnergyOfSeedDigi(-1.), fTimeError(0.), CalibTimeOfaDigi(0.), CalibTimeOfSeedDigi(0.);
188 Int_t TheIndexOfModule;
192 for(iBump=0; iBump<
fBumpArray->GetEntriesFast(); ++iBump)
194 EnergyOfSeedDigi = -1.;
198 const std::vector<Int_t>& listOfDigi = theBump->
DigiList();
199 for(
size_t id=0;
id <listOfDigi.size();++id){
201 if(theDigi->
GetEnergy() > EnergyOfSeedDigi){
208 cout<<
", CalibrationTimeOfEvent#"<<CalibTimeOfaDigi<<endl;
215 if( CalibTimeOfSeedDigi - fEventTime < 5.*fTimeError){
218 taggedBumpofToBeDeleted.push_back(theBump);
222 std::cout<<
"Bump["<<iBump<<
"], (Nd, E, Es, CalT, EvtT, TimeR, EvtNo)=("
225 <<
", "<<EnergyOfSeedDigi
226 <<
", "<<CalibTimeOfSeedDigi
229 <<
", "<<seedDigi->fEvtNo
231 cout<<(isBumpOK ?
"[ OK ]" :
"[ Veto ]")<<endl;
239 Bool_t DigiStatus = kTRUE;
240 for(
size_t id=0;
id <listOfDigi.size();++id){
244 if(CalibTimeOfaDigi - CalibTimeOfSeedDigi < 5.*fTimeError )
246 if(
TMath::Abs(CalibTimeOfaDigi - CalibTimeOfSeedDigi) < 3.*fTimeError){
247 WeightedFactor += 1./fTimeError/fTimeError;
254 new((*PndEmcDigi::fDigiArrayTBD)[iDigi++])
PndEmcDigi(*theDigi);
259 cout<<
"Digi["<<
id<<
"] of bump["<<iBump<<
"], (E, Mod, CalT, EvtT, SigmaT, EvtNO) = ("
261 <<
", "<<TheIndexOfModule
262 <<
", "<<CalibTimeOfaDigi
266 <<(DigiStatus == kTRUE ?
") ... [ OK ]":
") ... [ Veto ]")<<endl;
274 for(
size_t ix=0;ix <taggedBumpofToBeDeleted.size();++ix){
275 const std::vector<Int_t>& listOfDigi = taggedBumpofToBeDeleted[ix]->DigiList();
277 for(
size_t id=0;
id <listOfDigi.size();++id){
279 new((*PndEmcDigi::fDigiArrayTBD)[iDigi++])
PndEmcDigi(*theDigi);
281 fBumpArray->Remove(taggedBumpofToBeDeleted[ix]);
286 cout<<
"******************************************************"<<endl;
287 cout<<
"After correction, bumps#"<<
fBumpArray->GetEntriesFast()
290 cout<<
"**********************PndEmcCorrBump******************"<<endl;
299 tmpbump->
SetEnergy(clusterProperties.Energy());
303 tmpbump->
SetZ20(xClMoments.AbsZernikeMoment(2, 0, 15));
304 tmpbump->
SetZ53(xClMoments.AbsZernikeMoment(5, 3, 15));
314 cout <<
"PndEmcCorrBump, Real time " << rtime <<
" s, CPU time " << ctime <<
" s" << endl;
void SetEnergy(Double_t en)
static TClonesArray * fDigiArrayTBD
virtual Double_t GetEnergy() const
represents the reconstructed hit of one emc crystal
Double_t CalibrationEvtTimeByDigi(PndEmcDigi *theDigi, bool PrintOut=kFALSE) const
void SetEventNo(Int_t evtNo)
bool IsEnergyValid() const
const std::vector< Int_t > & DigiList() const
Short_t GetModule() const
TClonesArray * fDigiArray
PndEmcDigiCalibrator digiCalibrator
static Int_t fEventCounter
std::vector< Double_t > fClusterPosParam
virtual void removeDigi(const TClonesArray *digiArray, Int_t iDigi)
TClonesArray * fSharedDigiArray
void SetZ20(Double_t z20)
Int_t NumberOfDigis() const
void SetZ53(Double_t z53)
bool IsPositionValid() const
virtual Double_t energy() const
TClonesArray * fBumpArray
void SetPosition(TVector3 pos)
virtual void Print(const Option_t *opt="") const
Double_t GetTimeResolutionOfDigi(PndEmcDigi *theDigi) const
Text_t * GetEmcClusterPosMethod()
TClonesArray * fBumpArrayTBD
void SetLatMom(Double_t latMom)
represents a reconstructed (splitted) emc cluster