Select Git revision
CbmMvdSensorClusterfinderTask.cxx
CbmMCDataManager.h 3.23 KiB
/* Copyright (C) 2015-2020 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
SPDX-License-Identifier: GPL-3.0-only
Authors: Mikhail Prokudin, Volker Friese [committer], Florian Uhlig */
/** @file CbmMCDataManager
** @brief An entry point for time-based analysis
** @author //Dr.Sys <mikhail.prokudin@cern.ch>
**/
#ifndef CBMMCDATAMANAGER_H
#define CBMMCDATAMANAGER_H 1
#include <FairTask.h> // for FairTask, InitStatus
#include <Rtypes.h> // for THashConsistencyHolder, ClassDef
#include <RtypesCore.h> // for Int_t, Option_t
#include <TString.h> // for TString
#include <list> // for list
#include <map> // for map
#include <vector> // for vector
class CbmMCDataArray;
class CbmMCDataObject;
/** @class CbmMCDataManager
** @brief Task class creating and managing CbmMCDataArray objects
** @author //Dr.Sys <mikhail.prokudin@cern.ch>
** @date 31 March 2015
**/
class CbmMCDataManager : public FairTask {
public:
/** Default constructor **/
CbmMCDataManager();
/** Standard constructor
** @param name Task name
** @param legacy If true, run in legacy mode (using FairRootManager)
**/
CbmMCDataManager(const char* name, Int_t legacy = 0);
/** Destructor **/
~CbmMCDataManager();
/** Add a MC input file
** @param fileName Input file name
** @value Running number of input (chain)
**
** A new input chain will be started with this file.
**/
Int_t AddFile(const char* fileName);
/** Add a MC file to an existing input chain
** @param fileName Input file name
** @param chainNumber Number of input chain to which the file will be added
** @value Size of input chain (number of files in chain)
**/
Int_t AddFileToChain(const char* fileName, Int_t chainNumber);
/** Make TChain number chainNum2 friend of TChain number chainNum2
** @param chainNum1 a number of chain for which AddFriend is called
** @param chainNum2 number of chain which became a friend
**/
void AddFriend(Int_t chainNum1, Int_t chainNum2) { fFriends[chainNum1] = chainNum2; }
/** Execution (empty; just to match FairTask structure) **/ virtual void Exec(Option_t* /*option*/) {};
/** End of event action **/
virtual void FinishEvent();
/** Initialisation **/
virtual InitStatus Init();
/** Create a CbmMCDataArray for a given branch name
** @param branchName Name of data branch
** @value Pointer to CbmMCDataArray object for this branch
**/
CbmMCDataArray* InitBranch(const char* name);
/** Create a CbmMCDataObject for a given branch name
** @param branchName Name of data branch
** @value Pointer to CbmMCDataObject object for this branch
**/
CbmMCDataObject* GetObject(const char* name);
private:
Int_t fLegacy; ///< If true, use FairRootManager in event-by-event mode
/** Array of chains, each with a list of file names **/
std::vector<std::list<TString>> fFileList; //! Array of filename chains
/** List of created CbmMCDataArrays **/
std::map<TString, CbmMCDataArray*> fActive; //!
/** List of created CbmMCDataObjects **/
std::map<TString, CbmMCDataObject*> fActiveObj; //!
/** Map of friends **/
std::map<Int_t, Int_t> fFriends; //!
ClassDef(CbmMCDataManager, 1);
};
#endif