6 #include "TClonesArray.h"
8 #include "TGeoManager.h"
10 #include "FairRootManager.h"
11 #include "FairRunAna.h"
12 #include "FairRuntimeDb.h"
13 #include "FairGeoNode.h"
14 #include "FairGeoVector.h"
15 #include "FairEventHeader.h"
32 #if (ROOT_VERSION_CODE >= ROOT_VERSION(5,34,10))
33 #include "FairMultiLinkedData_Interface.h"
39 fUseNoiseSuppression(kTRUE),
43 fChargeConverter(NULL),
63 fUseNoiseSuppression(kTRUE),
67 fChargeConverter(NULL),
95 LOG(INFO) <<
"********************************************** PixelFindHits::InitMQ()" << FairLogger::endl;
98 fHitArray =
new TClonesArray(
"PndSdsHit",10000);
100 fClusterArray =
new TClonesArray(
"PndSdsClusterPixel", 10000);
115 fDigiArray = (TClonesArray*) inputList->FindObject(
"PndSdsDigiPixels");
116 fEventHeader = (FairEventHeader*) inputList->FindObject(
"EventHeader.");
117 LOG(INFO) <<
"DigiArray: " <<
fDigiArray->GetEntriesFast() << FairLogger::endl;
133 if (
fGeoH == NULL ) {
137 if( !
fDigiPar) Fatal(
"SetParContainers",
"No digitization parameters specified");
138 if(
fVerbose>1) Info(
"SetParContainers",
"done.");
167 FairRootManager* ioman = FairRootManager::Instance();
171 std::cout <<
"-E- PndSdsPixelClusterTask::Init: "
172 <<
"RootManager not instantiated!" << std::endl;
182 std::cout <<
"-E- PndSdsPixelClusterTask::Init: "
183 <<
"No SDSDigi array!" << std::endl;
200 std::cout <<
"-I- PndSdsPixelClusterTask: Initialisation successfull" << std::endl;
210 std::vector<PndSdsDigiPixel> DigiPixelArray;
217 Int_t entryNumber = -1;
224 entryNumber = FairRootManager::Instance()->GetEntryNr();
228 std::cout <<
"-I- PndSdsPixelClusterTask::Exec EventNumber: " << entryNumber << std::endl;
230 if (FairRunAna::Instance() != 0 && FairRunAna::Instance()->IsTimeStamp()){
235 if ( !
fHitArray ) Fatal(
"Exec",
"No HitArray");
248 std::cout <<
" -I- PndSdsPixelClusterTask::Exec(): We have "<<clusters.size()<<
" pixel clusters" << std::endl;
252 UInt_t clusterSize = clusters.size();
253 for (UInt_t
i = 0 ;
i < clusterSize;
i++)
255 if (clusters[
i].size() == 1){
258 if (
fVerbose > 2) std::cout <<
"-I- PndSdsPixelClusterTask::Exec():Erased cluster with digi " << tempDigi << std::endl;
259 clusters.erase(clusters.begin() +
i);
261 clusterSize = clusters.size();
268 if(
fVerbose > 2) std::cout <<
"Cluster Size after Erase: " << clusters.size() << std::endl;
269 for (UInt_t
i = 0;
i < clusters.size();
i++)
274 if (FairRunAna::Instance() != 0 && FairRunAna::Instance()->IsTimeStamp()){
275 tempCluster->ResetLinks();
276 for (UInt_t j = 0; j < clusters[
i].size(); j++){
278 tempCluster->AddInterfaceData(tempDigi);
282 std::vector<PndSdsDigiPixel> clusterArray;
283 for (UInt_t j=0;j < clusters[
i].size();j++)
285 clusterArray.push_back(DigiPixelArray[clusters[i][j]]);
307 if(
fVerbose>1)std::cout << std::endl;
310 std::cout <<
"-I- PndSdsPixelClusterTask: " <<
fClusterArray->GetEntriesFast()
311 <<
" Sds Clusters and " <<
fHitArray->GetEntriesFast()<<
" Hits calculated." << std::endl;
321 std::vector<PndSdsDigiPixel> result;
322 for (Int_t iPoint = 0; iPoint < digidata->GetEntriesFast(); iPoint++){
324 result.push_back(myDigi);
virtual void ExecMQ(TList *inputList, TList *outputList)
PndSdsPixelBackMapping * fBackMapping
void SetClusterIndex(Int_t datasource, Int_t id, Int_t fileId=-1, Int_t evtId=-1)
ClassImp(PndSdsPixelClusterTask)
virtual InitStatus Init()
virtual void SetParContainers()
Double_t GetTimeStep() const
Time step of one clock cycle in ns.
TClonesArray * fClusterArray
Double_t GetCharge() const
void SetPersistency(Bool_t val=kTRUE)
virtual void FinishEvent()
virtual void SetParContainers()
virtual ~PndSdsPixelClusterTask()
BinaryFunctor * fStartFunctor
virtual void SetClusterFinder()=0
PndSdsPixelDigiPar * fDigiPar
FairEventHeader * fEventHeader
virtual void SetBranchNames()=0
Bool_t fUseNoiseSuppression
PndSdsPixelClusterFinder * fClusterFinder
TClonesArray * fDigiArray
virtual void InitMQ(TList *tempList)
virtual void SetBackMapping()=0
static PndGeoHandling * Instance()
virtual void SetInBranchId()
virtual void Print(std::ostream &out=std::cout) const
virtual std::vector< PndSdsDigiPixel > ConvertAndFilter(TClonesArray *digidata)
convert TClonesArray into std::vector and remove corrupted data (for test beam analysis) ...
Data class to store the digi output of a pixel module.
virtual void GetParList(TList *tempList)
virtual InitStatus ReInit()
virtual void SetClusterFinderMQ(TList *)
virtual PndSdsHit GetCluster(std::vector< PndSdsDigiPixel > pixelArray)=0
virtual void SetBackMappingMQ(TList *)
virtual std::vector< std::vector< Int_t > > GetClusters(std::vector< PndSdsDigiPixel > hits)=0