Select Git revision
CbmRoot_test.cmake
Forked from
Computing / cbmroot
Source project has a limited visibility.
CbmDigitizeBase.cxx 3.00 KiB
/* Copyright (C) 2018-2020 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
SPDX-License-Identifier: GPL-3.0-only
Authors: Volker Friese [committer] */
/** @file CbmDigitizeBase.cxx
** @author Volker Friese <v.friese@gsi.de>
** @date 01.06.2018
**/
#include "CbmDigitizeBase.h"
#include <FairEventHeader.h> // for FairEventHeader
#include <FairRootManager.h> // for FairRootManager
#include <FairRunAna.h> // for FairRunAna
#include <FairTask.h> // for FairTask
#include <TGenericClassInfo.h> // for TGenericClassInfo
#include <cassert> // for assert
#include <cstdio>
// ----- Default constructor --------------------------------------------
CbmDigitizeBase::CbmDigitizeBase()
: FairTask("Digitizer")
, fEventMode(kFALSE)
, fProduceNoise(kTRUE)
, fCreateMatches(kTRUE)
, fCurrentInput(-1)
, fCurrentEvent(-1)
, fCurrentMCEntry(-1)
, fCurrentEventTime(0.)
{
}
// --------------------------------------------------------------------------
// ----- Default constructor --------------------------------------------
CbmDigitizeBase::CbmDigitizeBase(const char* name)
: FairTask(name)
, fEventMode(kFALSE)
, fProduceNoise(kTRUE)
, fCreateMatches(kTRUE)
, fCurrentInput(-1)
, fCurrentEvent(-1)
, fCurrentMCEntry(-1)
, fCurrentEventTime(0.)
{
}
// --------------------------------------------------------------------------
// ----- Destructor -----------------------------------------------------
CbmDigitizeBase::~CbmDigitizeBase() {}
// --------------------------------------------------------------------------
// ----- Get event information ------------------------------------------
void CbmDigitizeBase::GetEventInfo()
{
// --- The event number is taken from the FairRootManager
fCurrentEvent = FairRootManager::Instance()->GetEntryNr();
if (FairRunAna::Instance()) {
FairEventHeader* event = FairRunAna::Instance()->GetEventHeader();
assert(event);
fCurrentInput = event->GetInputFileId();
fCurrentMCEntry = event->GetMCEntryNumber();
fCurrentEventTime = event->GetEventTime();
} //? FairRunAna
else { // no FairRunAna fCurrentInput = -1;
fCurrentMCEntry = -1;
fCurrentEventTime = 0.;
} //? not FairRunAna
}
// --------------------------------------------------------------------------
// ----- Read list of inactive channels ---------------------------------
std::pair<size_t, bool> CbmDigitizeBase::ReadInactiveChannels()
{
if (fInactiveChannelFileName.IsNull()) return std::make_pair(0, true);
FILE* channelFile = fopen(fInactiveChannelFileName.Data(), "r");
if (channelFile == nullptr) return std::make_pair(0, false);
size_t nLines = 0;
uint32_t channel = 0;
while (fscanf(channelFile, "%u", &channel) == 1) {
fInactiveChannels.insert(channel);
nLines++;
}
bool success = feof(channelFile);
fclose(channelFile);
return std::make_pair(nLines, success);
}
// --------------------------------------------------------------------------
ClassImp(CbmDigitizeBase)