]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - STEER/AliRunDigitizer.h
First commit.
[u/mrichter/AliRoot.git] / STEER / AliRunDigitizer.h
... / ...
CommitLineData
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
11//
12// Author: Jiri Chudoba (CERN)
13//
14////////////////////////////////////////////////////////////////////////
15
16// --- ROOT system ---
17#include "TNamed.h"
18#include "TObjString.h"
19#include "TArrayI.h"
20#include "TClonesArray.h"
21#include "TTree.h"
22#include "TParticle.h"
23#include "TTask.h"
24
25const Int_t kMaxStreamsToMerge = 4;
26
27// --- AliRoot header files ---
28
29class AliDigitizer;
30class AliMergeCombi;
31
32class AliRunDigitizer: public TTask {
33
34public:
35 AliRunDigitizer();
36 AliRunDigitizer(Int_t nInputStreams, Int_t sperb=1);
37 virtual ~AliRunDigitizer();
38 void AddDigitizer(AliDigitizer *digitizer);
39 void SetOutputFile(TString fn);
40 TString GetOutputFile() const {return fOutputFileName;}
41 void SetOutputDir(TString dn) {fOutputDirName = dn;}
42 TString GetOutputDir() const {return fOutputDirName;}
43 void SetInputStream(Int_t stream, const char *inputName);
44 void SetFirstOutputEventNr(Int_t i) {fEvent = i;}
45 void SetNrOfEventsToWrite(Int_t i) {fNrOfEventsToWrite = i;}
46 void SetCopyTreesFromInput(Int_t i) {fCopyTreesFromInput = i;}
47 Int_t GetCopyTreesFromInput() {return fCopyTreesFromInput;}
48 Int_t GetOutputEventNr() const {return fEvent;}
49 void SetCombinationFileName(TString fn) {fCombinationFileName = fn;}
50 TString GetCombinationFileName() const {return fCombinationFileName;}
51 Int_t GetNinputs() const {return fNinputs;}
52 Int_t GetMask(Int_t i) const {return fkMASK[i];}
53 TTree* GetInputTreeS(Int_t i) const {return fArrayTreeS[i];}
54 TTree* GetInputTreeH(Int_t i) const {return fArrayTreeH[i];}
55 void SetInputTreeTPCSBaseName(char * name) {
56 fTreeTPCSBaseName = name;}
57 TTree* GetInputTreeTPCS(Int_t i) const {return fArrayTreeTPCS[i];}
58 TTree* GetInputTreeTRDS(Int_t i) const {return fArrayTreeTRDS[i];}
59 TTree* GetTreeD() const {return fTreeD;}
60 void SetTreeDTPCBaseName(char * name) {
61 fTreeDTPCBaseName = name;}
62 TTree* GetTreeDTPC() const {return fTreeDTPC;}
63 TTree* GetTreeDTRD() const {return fTreeDTRD;}
64 TTree* GetTreeR() const {return fTreeR;}
65 void Digitize(Option_t* option = 0);
66 void Exec(Option_t *option) {this->Digitize(option);}
67 void ExecuteTask(Option_t* option = 0);
68
69
70// Nr of particles in all input files for a given event
71// (as numbered in the output file)
72 Int_t GetNParticles(Int_t event) const;
73
74// Nr of particles in input file input for a given event
75// (as numbered in this input file)
76 Int_t GetNParticles(Int_t event, Int_t input) const;
77
78// return pointer to an int array with input event numbers which were
79// merged in the output event event
80 Int_t* GetInputEventNumbers(Int_t event) const;
81
82// return an event number of an eventInput from input file input
83// which was merged to create output event event
84 Int_t GetInputEventNumber(Int_t event, Int_t input) const;
85
86// return pointer to particle with index i (index with mask)
87 TParticle* GetParticle(Int_t i, Int_t event) const;
88
89// return pointer to particle with index i in the input file input
90// (index without mask)
91 TParticle* GetParticle(Int_t i, Int_t input, Int_t event) const;
92
93
94 Int_t GetDebug() const {return fDebug;}
95 void SetDebug(Int_t level) {fDebug = level;}
96
97private:
98 Int_t fkMASK[kMaxStreamsToMerge]; //! masks for track ids from
99 // different source files
100 Int_t fkMASKSTEP; // step to increase MASK for
101 // each input file
102 TString fOutputFileName; // output file name
103 TString fOutputDirName; // output dir name
104 TFile * fOutput; //! pointer to the output file
105 Int_t fEvent; // output event nr.
106 Int_t fNrOfEventsToWrite; // Nr of events to write
107 Int_t fNrOfEventsWritten; // Nr of events written
108 Int_t fCopyTreesFromInput; // from which input file the trees
109 // should be copied, -1 for no copies
110 TTree * fTreeD; //! output TreeD
111 TTree * fTreeDTPC; //! output TreeD for TPC
112 TTree * fTreeDTRD; //! output TreeD for TRD
113 TTree * fTreeR; //! output TreeR for ITS fast points
114 Int_t fNinputs; // nr of input streams - can be taken from the TClonesArray dimension
115 Int_t fNinputsGiven; // nr of input streams given by user
116 TClonesArray * fInputStreams; // input streams
117 TFile * fInputFiles[kMaxStreamsToMerge]; //! p. to current input files
118 TTree * fArrayTreeS[kMaxStreamsToMerge]; //! array with p. to TreeS
119 TTree * fArrayTreeTPCS[kMaxStreamsToMerge]; //! array with p. to TreeD_75x40_100x60_x (TPC Sdigits)
120 TTree * fArrayTreeTRDS[kMaxStreamsToMerge]; //! array with p. to TreeSx_TRD (TRD Sdigits)
121 TTree * fArrayTreeH[kMaxStreamsToMerge]; //! array with p. to TreeH
122 char * fTreeDTPCBaseName; //! basename of output TreeD for TPC
123 char * fTreeTPCSBaseName; //! basename of output TreeS for TPC
124 AliMergeCombi * fCombi; // pointer to the combination object
125 TArrayI fCombination; //! combination of events from
126 TString fCombinationFileName; // fn with combinations (used
127 // with type 2 of comb.)
128 Bool_t ConnectInputTrees();
129 Bool_t InitGlobal();
130 Bool_t InitOutputGlobal();
131 void InitEvent();
132 void FinishEvent();
133 void FinishGlobal();
134 Int_t fDebug; //! specifies debug level, 0 is min
135
136 ClassDef(AliRunDigitizer,4)
137};
138
139#endif // ALIRUNDIGITIZER_H