42    double timeCut = 10000, timeMin = 0, timeMax = 10000, gradientCut = 0.03, thresholdSeedEnergy = 0.1, thresholdCellEnergy = 0.05;
 
   46    mClusterizer.initialize(timeCut, timeMin, timeMax, gradientCut, doEnergyGradientCut, thresholdSeedEnergy, thresholdCellEnergy);
 
   83  LOG(
debug) << 
"[EMCALClusterizer - run] called";
 
   84  updateTimeDependentParams(ctx);
 
   85  std::string inputname;
 
   88  if constexpr (std::is_same<InputType, o2::emcal::Digit>::value) {
 
   90    TrigName = 
"digitstrgr";
 
   91  } 
else if constexpr (std::is_same<InputType, o2::emcal::Cell>::value) {
 
   93    TrigName = 
"cellstrgr";
 
   96  auto Inputs = ctx.
inputs().
get<gsl::span<InputType>>(inputname.c_str());
 
   97  LOG(
debug) << 
"[EMCALClusterizer - run]  Received " << 
Inputs.size() << 
" Cells/digits, running clusterizer ...";
 
   99  auto InputTriggerRecord = ctx.
inputs().
get<gsl::span<TriggerRecord>>(TrigName.c_str());
 
  100  LOG(
debug) << 
"[EMCALClusterizer - run]  Received " << InputTriggerRecord.size() << 
" Trigger Records, running clusterizer ...";
 
  102  mOutputAnaClusters->clear();
 
  104  std::vector<o2::emcal::Cluster> outputClusters;
 
  105  std::vector<int> outputCellDigitIndices;
 
  106  std::vector<o2::emcal::TriggerRecord> outputTriggerRecord;
 
  107  std::vector<o2::emcal::TriggerRecord> outputTriggerRecordIndices;
 
  109  int currentStartClusters = 0;
 
  110  int currentStartIndices = 0;
 
  112  for (
auto iTrgRcrd : InputTriggerRecord) {
 
  114    mClusterizer.findClusters(gsl::span<const InputType>(&
Inputs[iTrgRcrd.getFirstEntry()], iTrgRcrd.getNumberOfObjects())); 
 
  120    auto outputClustersTemp = mClusterizer.getFoundClusters();
 
  121    auto outputCellDigitIndicesTemp = mClusterizer.getFoundClustersInputIndices();
 
  123    std::copy(outputClustersTemp->begin(), outputClustersTemp->end(), std::back_inserter(outputClusters));
 
  124    std::copy(outputCellDigitIndicesTemp->begin(), outputCellDigitIndicesTemp->end(), std::back_inserter(outputCellDigitIndices));
 
  126    outputTriggerRecord.emplace_back(iTrgRcrd.getBCData(), currentStartClusters, outputClustersTemp->size());
 
  127    outputTriggerRecordIndices.emplace_back(iTrgRcrd.getBCData(), currentStartIndices, outputCellDigitIndicesTemp->size());
 
  129    currentStartClusters = outputClusters.size();
 
  130    currentStartIndices = outputCellDigitIndices.size();
 
  133  mEventHandler->setClusterData(outputClusters, outputCellDigitIndices, outputTriggerRecord, outputTriggerRecordIndices);
 
  134  mEventHandler->setCellData(
Inputs, InputTriggerRecord);
 
  137  for (
int iev = 0; iev < mEventHandler->getNumberOfEvents(); iev++) {
 
  138    auto inputEvent = mEventHandler->buildEvent(iev);
 
  140    mClusterFactory->reset();
 
  141    mClusterFactory->setContainer(inputEvent.mClusters, 
Inputs, inputEvent.mCellIndices);
 
  144    for (
int icl = 0; icl < mClusterFactory->getNumberOfClusters(); icl++) {
 
  145      auto analysisCluster = mClusterFactory->buildCluster(icl);
 
  146      mOutputAnaClusters->push_back(analysisCluster);
 
  150  LOG(
debug) << 
"[EMCALClusterizer - run] Writing " << mOutputAnaClusters->size() << 
" clusters ...";
 
 
  156  std::vector<o2::framework::InputSpec> inputs;
 
  157  std::vector<o2::framework::OutputSpec> outputs;
 
  166  auto ggRequest = std::make_shared<o2::base::GRPGeomRequest>(
false,                             
 
  181                                            o2::framework::adaptFromTask<o2::emcal::reco_workflow::AnalysisClusterSpec<o2::emcal::Digit>>(ggRequest)};
 
  186                                            o2::framework::adaptFromTask<o2::emcal::reco_workflow::AnalysisClusterSpec<o2::emcal::Cell>>(ggRequest)};
 
 
ServiceRegistryRef services()
DataAllocator & outputs()
The data allocator is used to allocate memory for the output data.
InputRecord & inputs()
The inputs associated with this processing context.