]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/STEER/AliRunDigitizer.h
Adding processing of Data Quality Flag coming from LHC Data File.
[u/mrichter/AliRoot.git] / STEER / STEER / AliRunDigitizer.h
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 //  This handles Merging and Digitisation of AliRoot events                
12 //  Author: Jiri Chudoba (CERN)
13 //
14 ////////////////////////////////////////////////////////////////////////
15
16 // --- ROOT system ---
17
18 #include "TArrayI.h"
19 #include "TTask.h"
20 #include "TClonesArray.h"
21 class TFile;
22 class TParticle;
23 class TTree;
24
25 // --- AliRoot header files ---
26
27 #include "AliStream.h" 
28 class AliDigitizer;
29 class AliMergeCombi;
30 class AliRunLoader;
31
32 #define MAXSTREAMSTOMERGE 4
33
34 class AliRunDigitizer: public TTask {
35
36 public:
37   AliRunDigitizer();
38   AliRunDigitizer(Int_t nInputStreams, Int_t sperb=1);
39
40   virtual ~AliRunDigitizer();
41
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);
46
47   void      SetOutputFile(TString fn);
48   TString   GetOutputFile() const {return fOutputFileName;}
49   
50   void      SetOutputDir(TString dn) {fOutputDirName = dn;}
51   TString   GetOutputDir() const {return fOutputDirName;}
52   
53   void      SetInputStream(Int_t stream, const char *inputName, TString foldername = "");
54   
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];}
63
64
65   Int_t     GetNinputs() const {return fNinputs;}
66   const TString& GetInputFolderName(Int_t i) const;
67   const char* GetOutputFolderName();
68
69
70     
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;
74
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;
78
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;
82
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;
86   
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;
90
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;
94
95 // return TString with input file name  
96   TString GetInputFileName(Int_t input, Int_t order) const;
97   
98 private:
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();
103   Bool_t            InitGlobal();
104   Bool_t            InitOutputGlobal();
105   void              InitEvent();
106   void              FinishEvent();
107   void              FinishGlobal();
108
109   Int_t             fkMASK[MAXSTREAMSTOMERGE];  //! masks for track ids from
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
115
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
124
125 //  AliStream*        fOutputStream;
126   AliRunLoader*     fOutRunLoader;        //!
127   Bool_t            fOutputInitialized;   //indicates if outout was initialized 
128                                           // 
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.)
133
134   AliRunLoader*     GetOutRunLoader();
135   
136   static const TString fgkDefOutFolderName;//default name for output foler 
137   static const TString fgkBaseInFolderName;//default name for input foler
138   ClassDef(AliRunDigitizer,6)
139 };
140
141 #endif // ALIRUNDIGITIZER_H