PndEmcCluster* cluster = (PndEmcCluster*) fClusterArray->At(iClus); // add its corresponding digis to the digi array FairMultiLinkedData digiLinks = cluster->GetLinksWithType(FairRootManager::Instance()->GetBranchId("EmcDigiSorted")); for (Int_t iDigi=0; iDigi<digiLinks.GetNLinks(); iDigi++){ PndEmcDigi* myDigi = (PndEmcDigi*)FairRootManager::Instance()->GetCloneOfLinkData(digiLinks.GetLink(iDigi)); if(myDigi) { PndEmcDigi* newDigi = new((*fDigiArray)[fDigiArray->GetEntriesFast()]) PndEmcDigi(*myDigi); delete(myDigi); } else { std::cout << "-E in PndEmcMergePreclusters::Exec() FairLink " << digiLinks.GetLink(iDigi) << " to EmcDigi delivers null" << std::endl; } }
PndEmcDigi* newDigi = new((*fDigiArray)[fDigiArray->GetEntriesFast()]) PndEmcDigi(*myDigi);
PndEmcDigi* newDigi = new((*fDigiArray)[ind++]) PndEmcDigi(*myDigi);
for (int tc=0; tc<fDigiArray->GetEntriesFast(); tc++) { cout << "\tEntry " << tc << " "; PndEmcDigi* theDigi = (PndEmcDigi*)fDigiArray->At(tc); theDigi->Print(); }cout << "\n " << endl;
fDigiArray->Delete(); Double_t fevtTime = FairRootManager::Instance()->GetEventTime(); if(fTimeOrderedDigi){ if(FairRunAna::Instance()->IsTimeStamp()){ fWaveformArray->Delete(); Double_t time_length = 40.;//99.98% if(fVerbose >0) cout<<"--I-- time-based simulation, read data to later #"<<time_length<<" ns"<<endl; fWaveformArray = FairRootManager::Instance()->GetData("EmcSortedWaveform" , fFunctor , fevtTime + time_length); } if(fVerbose>0) std::cout<<"fDigiArrayTBD size #"<<PndEmcDigi::fDigiArrayTBD->GetEntriesFast()<<std::endl; } Int_t nWaveforms = fWaveformArray->GetEntriesFast(); ...
fDigiArray->Delete(); Int_t nWaveforms = fWaveformArray->GetEntriesFast(); ...
(Init) ... // Create and activiate output Buffer....choose between PndEmcWaveform and PndEmcMultiWaveform #ifndef MULTI fWaveformBuffer = new PndEmcWaveformBuffer("EmcWaveform", "PndEmcWaveform", "Emc", fStoreWaves); #else fWaveformBuffer = new PndEmcWaveformBuffer("EmcWaveform", "PndEmcMultiWaveform", "Emc", fStoreWaves); #endif fWaveformBuffer = (PndEmcWaveformBuffer*) ioman ->RegisterWriteoutBuffer("EmcTimebasedWaveform", fWaveformBuffer); ...etc (Exec) ... // construct corresponding waveform data Object PndEmcWaveformData wfData(theHit->GetDetectorID(), wfSimulator); //register hit...timebased framework uses ns, whereas emc deals with seconds as time unit FairLink linkToHit(-1, ioman->GetEntryNr(), "EmcHit", iHit, 1.0); wfData.AddHit(linkToHit, ioman->GetEventTime() + theHit->GetTime()*1.0e9, theHit->GetEnergy()); fWaveformBuffer->FillNewData(&wfData); ...etc
(Init) ... // Get input array fWaveformArray = (TClonesArray*) ioman->GetObject("EmcMultiWaveform"); if (!fWaveformArray) { //check if EmcWaveform contains MultiWaveforms fWaveformArray = (TClonesArray*) ioman->GetObject("EmcWaveform"); if((!fWaveformArray) || (!fWaveformArray->GetClass()->InheritsFrom("PndEmcMultiWaveform"))){ cout << "-W- PndEmcFWEndcapDigi::Init: " << "No PndEmcWaveform array containing multi waveforms!" << endl; return kERROR; } } // Create and register output array fDigiArray = ioman->Register("EmcDigi","PndEmcDigi", "Emc", fStoreDigis); ...etc