#ifndef ALIDIGITIZATIONINPUT_H #define ALIDIGITIZATIONINPUT_H /* Copyright(c) 1998-2000, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ /* $Id$ */ //////////////////////////////////////////////////////////////////////// // // Manager Class for Merging/Digitization // This handles Merging and Digitisation of AliRoot events // Author: Jiri Chudoba (CERN) // //////////////////////////////////////////////////////////////////////// // --- ROOT system --- #include "TArrayI.h" #include "TNamed.h" #include "TClonesArray.h" class TFile; class TParticle; class TTree; // --- AliRoot header files --- #include "AliStream.h" class AliDigitizer; class AliMergeCombi; class AliRunLoader; #define MAXSTREAMSTOMERGE 4 class AliDigitizationInput: public TNamed { public: AliDigitizationInput(); AliDigitizationInput(Int_t nInputStreams, Int_t sperb=1); virtual ~AliDigitizationInput(); void SetOutputFile(TString fn); TString GetOutputFile() const {return fOutputFileName;} void SetOutputDir(TString dn) {fOutputDirName = dn;} TString GetOutputDir() const {return fOutputDirName;} void SetInputStream(Int_t stream, const char *inputName, TString foldername = ""); void SetFirstOutputEventNr(Int_t i) {fEvent = i;} void SetNrOfEventsToWrite(Int_t i) {fNrOfEventsToWrite = i;} void SetCopyTreesFromInput(Int_t i) {fCopyTreesFromInput = i;} Int_t GetCopyTreesFromInput() const {return fCopyTreesFromInput;} Int_t GetOutputEventNr() const {return fEvent;} void SetCombinationFileName(TString fn) {fCombinationFileName = fn;} TString GetCombinationFileName() const {return fCombinationFileName;} Int_t GetMask(Int_t i) const {return fkMASK[i];} void SetRegionOfInterest(Bool_t flag) {fRegionOfInterest = flag;}; Bool_t GetRegionOfInterest() const {return fRegionOfInterest;}; Int_t GetNinputs() const {return fNinputs;} const TString& GetInputFolderName(Int_t i) const; const char* GetOutputFolderName(); // Nr of particles in all input files for a given event // (as numbered in the output file) Int_t GetNParticles(Int_t event) const; // Nr of particles in input file input for a given event // (as numbered in this input file) Int_t GetNParticles(Int_t event, Int_t input) const; // return pointer to an int array with input event numbers which were // merged in the output event event Int_t* GetInputEventNumbers(Int_t event) const; // return an event number of an eventInput from input file input // which was merged to create output event event Int_t GetInputEventNumber(Int_t event, Int_t input) const; AliStream * GetInputStream(Int_t index) const { return dynamic_cast(fInputStreams->At(index)) ; } // return pointer to particle with index i (index with mask) TParticle* GetParticle(Int_t i, Int_t event) const; // return pointer to particle with index i in the input file input // (index without mask) TParticle* GetParticle(Int_t i, Int_t input, Int_t event) const; // return TString with input file name TString GetInputFileName(Int_t input, Int_t order) const; AliRunLoader* GetOutRunLoader(); // Bool_t ConnectInputTrees(); Bool_t InitOutputGlobal(); void InitEvent(); void FinishEvent(); void FinishGlobal(); private: AliDigitizationInput(const AliDigitizationInput& dig); // not implemented AliDigitizationInput& operator=(const AliDigitizationInput& dig); // not implemented void Copy(TObject& dig) const; Int_t fkMASK[MAXSTREAMSTOMERGE]; //! masks for track ids from // different source files Int_t fkMASKSTEP; // step to increase MASK for // each input file TString fOutputFileName; // output file name TString fOutputDirName; // output dir name Int_t fEvent; // output event nr. Int_t fNrOfEventsToWrite; // Nr of events to write Int_t fNrOfEventsWritten; // Nr of events written Int_t fCopyTreesFromInput; // from which input file the trees // should be copied, -1 for no copies Int_t fNinputs; // nr of input streams - can be taken from the TClonesArray dimension Int_t fNinputsGiven; // nr of input streams given by user Bool_t fRegionOfInterest; // digitization in region of interest TClonesArray * fInputStreams; // input signal streams // AliStream* fOutputStream; AliRunLoader* fOutRunLoader; //! Bool_t fOutputInitialized; //indicates if outout was initialized // AliMergeCombi * fCombi; // pointer to the combination object TArrayI fCombination; //! combination of events from TString fCombinationFileName; // fn with combinations (used // with type 2 of comb.) static const TString fgkDefOutFolderName;//default name for output foler static const TString fgkBaseInFolderName;//default name for input foler ClassDef(AliDigitizationInput,2) }; #endif // ALIRUNDIGITIZER_H