1 #ifndef ALIRUNDIGITIZER_H
2 #define ALIRUNDIGITIZER_H
3 /* Copyright(c) 1998-2000, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 ////////////////////////////////////////////////////////////////////////
10 // Manager Class for Merging/Digitization
11 // This handles Merging and Digitisation of AliRoot events
12 // Author: Jiri Chudoba (CERN)
14 ////////////////////////////////////////////////////////////////////////
16 // --- ROOT system ---
20 #include "TClonesArray.h"
25 // --- AliRoot header files ---
27 #include "AliStream.h"
32 #define MAXSTREAMSTOMERGE 4
34 class AliRunDigitizer: public TTask {
38 AliRunDigitizer(Int_t nInputStreams, Int_t sperb=1);
40 virtual ~AliRunDigitizer();
42 void ExecuteTask(Option_t* option = 0);
43 void Exec(Option_t *option) {this->Digitize(option);}
44 void Digitize(Option_t* option = 0);
45 void AddDigitizer(AliDigitizer *digitizer);
47 void SetOutputFile(TString fn);
48 TString GetOutputFile() const {return fOutputFileName;}
50 void SetOutputDir(TString dn) {fOutputDirName = dn;}
51 TString GetOutputDir() const {return fOutputDirName;}
53 void SetInputStream(Int_t stream, const char *inputName, TString foldername = "");
55 void SetFirstOutputEventNr(Int_t i) {fEvent = i;}
56 void SetNrOfEventsToWrite(Int_t i) {fNrOfEventsToWrite = i;}
57 void SetCopyTreesFromInput(Int_t i) {fCopyTreesFromInput = i;}
58 Int_t GetCopyTreesFromInput() const {return fCopyTreesFromInput;}
59 Int_t GetOutputEventNr() const {return fEvent;}
60 void SetCombinationFileName(TString fn) {fCombinationFileName = fn;}
61 TString GetCombinationFileName() const {return fCombinationFileName;}
62 Int_t GetMask(Int_t i) const {return fkMASK[i];}
65 Int_t GetNinputs() const {return fNinputs;}
66 const TString& GetInputFolderName(Int_t i) const;
67 const char* GetOutputFolderName();
71 // Nr of particles in all input files for a given event
72 // (as numbered in the output file)
73 Int_t GetNParticles(Int_t event) const;
75 // Nr of particles in input file input for a given event
76 // (as numbered in this input file)
77 Int_t GetNParticles(Int_t event, Int_t input) const;
79 // return pointer to an int array with input event numbers which were
80 // merged in the output event event
81 Int_t* GetInputEventNumbers(Int_t event) const;
83 // return an event number of an eventInput from input file input
84 // which was merged to create output event event
85 Int_t GetInputEventNumber(Int_t event, Int_t input) const;
87 AliStream * GetInputStream(Int_t index) const { return dynamic_cast<AliStream *>(fInputStreams->At(index)) ; }
88 // return pointer to particle with index i (index with mask)
89 TParticle* GetParticle(Int_t i, Int_t event) const;
91 // return pointer to particle with index i in the input file input
92 // (index without mask)
93 TParticle* GetParticle(Int_t i, Int_t input, Int_t event) const;
95 // return TString with input file name
96 TString GetInputFileName(Int_t input, Int_t order) const;
99 AliRunDigitizer(const AliRunDigitizer& dig); // not implemented
100 AliRunDigitizer& operator=(const AliRunDigitizer& dig); // not implemented
101 void Copy(TObject& dig) const;
102 Bool_t ConnectInputTrees();
104 Bool_t InitOutputGlobal();
109 Int_t fkMASK[MAXSTREAMSTOMERGE]; //! masks for track ids from
110 // different source files
111 Int_t fkMASKSTEP; // step to increase MASK for
113 TString fOutputFileName; // output file name
114 TString fOutputDirName; // output dir name
116 Int_t fEvent; // output event nr.
117 Int_t fNrOfEventsToWrite; // Nr of events to write
118 Int_t fNrOfEventsWritten; // Nr of events written
119 Int_t fCopyTreesFromInput; // from which input file the trees
120 // should be copied, -1 for no copies
121 Int_t fNinputs; // nr of input streams - can be taken from the TClonesArray dimension
122 Int_t fNinputsGiven; // nr of input streams given by user
123 TClonesArray * fInputStreams; // input signal streams
125 // AliStream* fOutputStream;
126 AliRunLoader* fOutRunLoader; //!
127 Bool_t fOutputInitialized; //indicates if outout was initialized
129 AliMergeCombi * fCombi; // pointer to the combination object
130 TArrayI fCombination; //! combination of events from
131 TString fCombinationFileName; // fn with combinations (used
132 // with type 2 of comb.)
134 AliRunLoader* GetOutRunLoader();
136 static const TString fgkDefOutFolderName;//default name for output foler
137 static const TString fgkBaseInFolderName;//default name for input foler
138 ClassDef(AliRunDigitizer,6)
141 #endif // ALIRUNDIGITIZER_H