Test implementation of event pool based on TagAnalysis.
[u/mrichter/AliRoot.git] / ANALYSIS / AliEventPoolOTF.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /* $Id$ */
17  
18
19 // Realisation of an AliVEventPool via
20 // on the flight (OTF) generation of the bin using AliTagAnalysis.
21 // Author Andreas Morsch
22 // andreas.morsch@cern.ch
23
24 #include "AliEventPoolOTF.h"
25
26 #include "AliRunTagCuts.h"
27 #include "AliLHCTagCuts.h"
28 #include "AliDetectorTagCuts.h"
29 #include "AliEventTagCuts.h"
30 #include "AliTagAnalysis.h"
31
32 ClassImp(AliEventPoolOTF)
33
34
35 ////////////////////////////////////////////////////////////////////////
36
37 AliEventPoolOTF::AliEventPoolOTF():
38     AliVEventPool(),
39     fTagAnalysis(0),
40     fRunCuts(0),
41     fLHCCuts(0),
42     fDetectorCuts(0),
43     fEventCuts(0),
44     fTagDirectory(0),
45     fMultMin(0),
46     fMultMax(0),
47     fMultStep(0),
48     fMultiplicity()
49 {
50   // Default constructor
51 }
52
53 AliEventPoolOTF::AliEventPoolOTF(const char* name, const char* title):
54     AliVEventPool(name, title),
55     fTagAnalysis(new AliTagAnalysis("AOD")),
56     fRunCuts(new AliRunTagCuts()),
57     fLHCCuts(new AliLHCTagCuts()),
58     fDetectorCuts(new AliDetectorTagCuts()),
59     fEventCuts(new AliEventTagCuts()),
60     fTagDirectory("."),
61     fMultMin(0),
62     fMultMax(0),
63     fMultStep(0),
64     fMultiplicity()
65 {
66   // Constructor
67 }
68
69
70 AliEventPoolOTF::AliEventPoolOTF(const AliEventPoolOTF& obj):
71     AliVEventPool(obj),
72     fTagAnalysis(0),
73     fRunCuts(0),
74     fLHCCuts(0),
75     fDetectorCuts(0),
76     fEventCuts(0),
77     fTagDirectory(0),
78     fMultMin(0),
79     fMultMax(0),
80     fMultStep(0),
81     fMultiplicity()
82 {
83     // Copy constructor
84 }
85
86 AliEventPoolOTF& AliEventPoolOTF::operator=(const AliEventPoolOTF& other)
87 {
88 // Assignment operator
89     AliVEventPool::operator=(other);
90     return *this;
91 }
92
93
94 void AliEventPoolOTF::Init()
95 {
96     //
97     fTagAnalysis->ChainLocalTags(fTagDirectory);
98     fMultiplicity = fMultMin;
99 }
100
101 TChain* AliEventPoolOTF::GetNextChain()
102 {
103     //
104     TChain* chain = 0;
105     
106     Int_t mmax = fMultiplicity + fMultStep;
107     if (mmax > fMultMax) {
108         return 0;
109     } else {
110         fEventCuts->SetMultiplicityRange(fMultiplicity, mmax);
111         chain = fTagAnalysis->QueryTags(fRunCuts, fLHCCuts, fDetectorCuts, fEventCuts);
112         fMultiplicity += fMultStep;
113         return chain;
114     }
115 }
116
117 void  AliEventPoolOTF::GetCurrentBin(Float_t* /*bin*/)
118 {
119     //
120 }
121
122 Int_t AliEventPoolOTF::GetDimension()
123 {
124     //
125     return (1);
126 }
127