Completely Updated (Mario Sitta)
[u/mrichter/AliRoot.git] / STEER / AliRunDigitizer.h
CommitLineData
9ce40367 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 */
5
6/* $Id$ */
7
8////////////////////////////////////////////////////////////////////////
9//
10// Manager Class for Merging/Digitization
1bb2a43c 11// This handles Merging and Digitisation of AliRoot events
9ce40367 12// Author: Jiri Chudoba (CERN)
13//
14////////////////////////////////////////////////////////////////////////
15
16// --- ROOT system ---
e2afb3b6 17
9ce40367 18#include "TArrayI.h"
8d5e6345 19#include "TTask.h"
88cb7938 20#include "TClonesArray.h"
e2afb3b6 21class TFile;
22class TParticle;
23class TTree;
9ce40367 24
25// --- AliRoot header files ---
26
88cb7938 27#include "AliStream.h"
9ce40367 28class AliDigitizer;
a90ecf3c 29class AliMergeCombi;
88cb7938 30class AliRunLoader;
9ce40367 31
af7ba10c 32#define MAXSTREAMSTOMERGE 4
e2afb3b6 33
8d5e6345 34class AliRunDigitizer: public TTask {
9ce40367 35
36public:
314558d7 37 AliRunDigitizer();
38 AliRunDigitizer(Int_t nInputStreams, Int_t sperb=1);
e2afb3b6 39 AliRunDigitizer(const AliRunDigitizer& dig);
40 AliRunDigitizer& operator=(const AliRunDigitizer& dig)
41 {dig.Copy(*this); return (*this);}
9ce40367 42 virtual ~AliRunDigitizer();
88cb7938 43
44 void ExecuteTask(Option_t* option = 0);
45 void Exec(Option_t *option) {this->Digitize(option);}
46 void Digitize(Option_t* option = 0);
9ce40367 47 void AddDigitizer(AliDigitizer *digitizer);
88cb7938 48
8d5e6345 49 void SetOutputFile(TString fn);
9ae76683 50 TString GetOutputFile() const {return fOutputFileName;}
88cb7938 51
9ce40367 52 void SetOutputDir(TString dn) {fOutputDirName = dn;}
9ae76683 53 TString GetOutputDir() const {return fOutputDirName;}
88cb7938 54
55 void SetInputStream(Int_t stream, const char *inputName, TString foldername = "");
56
9ce40367 57 void SetFirstOutputEventNr(Int_t i) {fEvent = i;}
58 void SetNrOfEventsToWrite(Int_t i) {fNrOfEventsToWrite = i;}
59 void SetCopyTreesFromInput(Int_t i) {fCopyTreesFromInput = i;}
116cbefd 60 Int_t GetCopyTreesFromInput() const {return fCopyTreesFromInput;}
9ae76683 61 Int_t GetOutputEventNr() const {return fEvent;}
9ce40367 62 void SetCombinationFileName(TString fn) {fCombinationFileName = fn;}
9ae76683 63 TString GetCombinationFileName() const {return fCombinationFileName;}
9ce40367 64 Int_t GetMask(Int_t i) const {return fkMASK[i];}
9ce40367 65
88cb7938 66
67 Int_t GetNinputs() const {return fNinputs;}
68 const TString& GetInputFolderName(Int_t i) const;
69 const char* GetOutputFolderName();
70
71
72
9ce40367 73// Nr of particles in all input files for a given event
74// (as numbered in the output file)
9ae76683 75 Int_t GetNParticles(Int_t event) const;
9ce40367 76
77// Nr of particles in input file input for a given event
78// (as numbered in this input file)
9ae76683 79 Int_t GetNParticles(Int_t event, Int_t input) const;
9ce40367 80
81// return pointer to an int array with input event numbers which were
82// merged in the output event event
9ae76683 83 Int_t* GetInputEventNumbers(Int_t event) const;
9ce40367 84
85// return an event number of an eventInput from input file input
86// which was merged to create output event event
9ae76683 87 Int_t GetInputEventNumber(Int_t event, Int_t input) const;
9ce40367 88
d0f1ee3b 89 AliStream * GetInputStream(Int_t index) const { return dynamic_cast<AliStream *>(fInputStreams->At(index)) ; }
9ce40367 90// return pointer to particle with index i (index with mask)
9ae76683 91 TParticle* GetParticle(Int_t i, Int_t event) const;
9ce40367 92
93// return pointer to particle with index i in the input file input
94// (index without mask)
9ae76683 95 TParticle* GetParticle(Int_t i, Int_t input, Int_t event) const;
9ce40367 96
2e3dd5e5 97// return TString with input file name
d0f1ee3b 98 TString GetInputFileName(Int_t input, Int_t order) const;
9ce40367 99
9ce40367 100private:
6c4904c2 101 void Copy(TObject& dig) const;
e2afb3b6 102 Bool_t ConnectInputTrees();
103 Bool_t InitGlobal();
104 Bool_t InitOutputGlobal();
105 void InitEvent();
106 void FinishEvent();
107 void FinishGlobal();
108
af7ba10c 109 Int_t fkMASK[MAXSTREAMSTOMERGE]; //! masks for track ids from
9ce40367 110 // different source files
111 Int_t fkMASKSTEP; // step to increase MASK for
112 // each input file
113 TString fOutputFileName; // output file name
114 TString fOutputDirName; // output dir name
88cb7938 115
9ce40367 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
a90ecf3c 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
88cb7938 123 TClonesArray * fInputStreams; // input signal streams
124
125// AliStream* fOutputStream;
126 AliRunLoader* fOutRunLoader; //!
127 Bool_t fOutputInitialized; //indicates if outout was initialized
128 //
a90ecf3c 129 AliMergeCombi * fCombi; // pointer to the combination object
9ce40367 130 TArrayI fCombination; //! combination of events from
9ce40367 131 TString fCombinationFileName; // fn with combinations (used
132 // with type 2 of comb.)
88cb7938 133
134 AliRunLoader* GetOutRunLoader();
9ce40367 135
88cb7938 136 static const TString fgkDefOutFolderName;//default name for output foler
137 static const TString fgkBaseInFolderName;//default name for input foler
594d8990 138 ClassDef(AliRunDigitizer,6)
9ce40367 139};
140
141#endif // ALIRUNDIGITIZER_H