1 ///////////////////////////////////////////////////////////////////////////
3 // AliFemtoCutMonitorHandler: a handler for cut monitors //
4 // You add cut monitors to the collection which are stored in two //
5 // separate collections - one which stores characteristics of the //
6 // entities (tracks, particles, pairs, events) that pass the respective //
7 // cuts and the other for the ones that fail the cut. //
9 ///////////////////////////////////////////////////////////////////////////
12 #include "AliFemtoCutMonitorHandler.h"
13 #include "AliFemtoTypes.h"
16 ClassImp(AliFemtoCutMonitorHandler)
18 // ---------------------------------------------------------------------------
19 AliFemtoCutMonitorHandler::AliFemtoCutMonitorHandler():
20 fCollectionsEmpty(0), fPassColl(0), fFailColl(0)
22 // Default constructor
23 cout << " *** AliFemtoCutMonitorHandler::AliFemtoCutMonitorHandler() " << endl;
24 fCollectionsEmpty = 0;
25 fPassColl = new AliFemtoCutMonitorCollection();
26 fFailColl = new AliFemtoCutMonitorCollection();
28 // ---------------------------------------------------------------------------
29 AliFemtoCutMonitorHandler::AliFemtoCutMonitorHandler(const AliFemtoCutMonitorHandler& aHan):
30 fCollectionsEmpty(0), fPassColl(0), fFailColl(0)
33 fCollectionsEmpty = aHan.fCollectionsEmpty;
34 fPassColl = new AliFemtoCutMonitorCollection();
35 AliFemtoCutMonitorIterator iter;
36 for (iter=aHan.fPassColl->begin(); iter!=aHan.fPassColl->end(); iter++){
37 fPassColl->push_back(*iter);
39 fFailColl = new AliFemtoCutMonitorCollection();
40 for (iter=aHan.fFailColl->begin(); iter!=aHan.fFailColl->end(); iter++){
41 fFailColl->push_back(*iter);
45 // ---------------------------------------------------------------------------
46 AliFemtoCutMonitorHandler::~AliFemtoCutMonitorHandler() {
51 //__________________________
52 AliFemtoCutMonitorHandler& AliFemtoCutMonitorHandler::operator=(const AliFemtoCutMonitorHandler& aHan)
54 // assignment operator
58 AliFemtoCutMonitorIterator iter;
67 fPassColl = new AliFemtoCutMonitorCollection();
68 for (iter=aHan.fPassColl->begin(); iter!=aHan.fPassColl->end(); iter++){
69 fPassColl->push_back(*iter);
71 fFailColl = new AliFemtoCutMonitorCollection();
72 for (iter=aHan.fFailColl->begin(); iter!=aHan.fFailColl->end(); iter++){
73 fFailColl->push_back(*iter);
78 // ---------------------------------------------------------------------------
79 void AliFemtoCutMonitorHandler::FillCutMonitor(const AliFemtoEvent* event, bool pass) {
80 // fill event cut monitors
81 if (fCollectionsEmpty) return;
82 AliFemtoCutMonitorIterator iter;
83 AliFemtoCutMonitor* tCM;
85 for (iter=fPassColl->begin(); iter!=fPassColl->end(); iter++){
90 for (iter=fFailColl->begin(); iter!=fFailColl->end(); iter++){
96 // ---------------------------------------------------------------------------
97 void AliFemtoCutMonitorHandler::FillCutMonitor(const AliFemtoTrack* track, bool pass) {
98 // Fill track cut monitors
99 if (fCollectionsEmpty) return;
100 AliFemtoCutMonitorIterator iter;
101 AliFemtoCutMonitor* tCM;
103 for (iter=fPassColl->begin(); iter!=fPassColl->end(); iter++){
108 for (iter=fFailColl->begin(); iter!=fFailColl->end(); iter++){
114 // ---------------------------------------------------------------------------
115 void AliFemtoCutMonitorHandler::FillCutMonitor(const AliFemtoV0* v0, bool pass) {
116 // fill V0 cut monitors
117 if (fCollectionsEmpty) return;
118 AliFemtoCutMonitorIterator iter;
119 AliFemtoCutMonitor* tCM;
121 for (iter=fPassColl->begin(); iter!=fPassColl->end(); iter++){
126 for (iter=fFailColl->begin(); iter!=fFailColl->end(); iter++){
132 // ---------------------------------------------------------------------------
133 void AliFemtoCutMonitorHandler::FillCutMonitor(const AliFemtoKink* kink, bool pass) {
134 // fill kink cut monitors
135 if (fCollectionsEmpty) return;
136 AliFemtoCutMonitorIterator iter;
137 AliFemtoCutMonitor* tCM;
139 for (iter=fPassColl->begin(); iter!=fPassColl->end(); iter++){
144 for (iter=fFailColl->begin(); iter!=fFailColl->end(); iter++){
150 // ---------------------------------Gael/12/04/02-----------------------------
151 void AliFemtoCutMonitorHandler::FillCutMonitor(const AliFemtoPair* pair, bool pass) {
152 // fill pair cut monitors
153 if (fCollectionsEmpty) return;
154 AliFemtoCutMonitorIterator iter;
155 AliFemtoCutMonitor* tCM;
157 for (iter=fPassColl->begin(); iter!=fPassColl->end(); iter++){
162 for (iter=fFailColl->begin(); iter!=fFailColl->end(); iter++){
168 // ---------------------------------Gael/19/06/02-----------------------------
169 void AliFemtoCutMonitorHandler::FillCutMonitor(const AliFemtoParticleCollection* partColl) {
170 // fill particle collection cut monitor
171 if (fCollectionsEmpty) return;
172 AliFemtoCutMonitorIterator iter;
173 AliFemtoCutMonitor* tCM;
175 for (iter=fPassColl->begin(); iter!=fPassColl->end(); iter++){
180 // ------------------------------------Gael/19/06/02-------------------------
181 void AliFemtoCutMonitorHandler::FillCutMonitor(const AliFemtoEvent* event,const AliFemtoParticleCollection* partColl) {
182 // Fill event particle collection
183 //cout<<"In AliFemtoCutMonitorHandler::FillCutMonitor(const AliFemtoEvent* event, AliFemtoPicoEvent* picoEvent)"<<endl;
184 if (fCollectionsEmpty) return;
185 AliFemtoCutMonitorIterator iter;
186 AliFemtoCutMonitor* tCM;
188 for (iter=fPassColl->begin(); iter!=fPassColl->end(); iter++){
190 tCM->Fill(event,partColl);
194 void AliFemtoCutMonitorHandler::FillCutMonitor(const AliFemtoParticleCollection* partColl1, const AliFemtoParticleCollection* partColl2) {
195 // Fill event particle collection
196 //cout<<"***In AliFemtoCutMonitorHandler::FillCutMonitor(const AliFemtoEvent* event, AliFemtoPicoEvent* picoEvent)"<<endl;
197 if (fCollectionsEmpty) return;
198 AliFemtoCutMonitorIterator iter;
199 AliFemtoCutMonitor* tCM;
201 for (iter=fPassColl->begin(); iter!=fPassColl->end(); iter++){
203 tCM->Fill(partColl1,partColl2);
207 // ---------------------------------------------------------------------------
208 void AliFemtoCutMonitorHandler::Finish() {
209 // Perform finish operations on cut monitors
210 AliFemtoCutMonitorIterator iter;
211 for (iter=fPassColl->begin(); iter!=fPassColl->end(); iter++){
214 for (iter=fFailColl->begin(); iter!=fFailColl->end(); iter++){
218 // ---------------------------------------------------------------------------
219 void AliFemtoCutMonitorHandler::AddCutMonitor(AliFemtoCutMonitor* cutMoni1, AliFemtoCutMonitor* cutMoni2) {
220 // Add cut monitors to collections
221 fPassColl->push_back(cutMoni1);
222 fFailColl->push_back(cutMoni2);
223 fCollectionsEmpty=false;
225 // ---------------------------------------------------------------------------
226 void AliFemtoCutMonitorHandler::AddCutMonitor(AliFemtoCutMonitor* cutMoni) {
227 // make a copy of the cut monitor
228 cout << " make a copy of the cutmonitor and push both into the collections " << endl;
229 cout << " not yet implemented" << endl;
230 fPassColl->push_back(cutMoni);
231 cout << " only pass collection pushed" << endl;
232 fCollectionsEmpty=false;
234 // ---------------------------------------------------------------------------
235 void AliFemtoCutMonitorHandler::AddCutMonitorPass(AliFemtoCutMonitor* cutMoni) {
236 // add monitors to pass
237 fPassColl->push_back(cutMoni);
238 fCollectionsEmpty=false;
240 // ---------------------------------------------------------------------------
241 void AliFemtoCutMonitorHandler::AddCutMonitorFail(AliFemtoCutMonitor* cutMoni) {
242 // add monitors to fail
243 fFailColl->push_back(cutMoni);
244 fCollectionsEmpty=false;
246 // ---------------------------------------------------------------------------
247 AliFemtoCutMonitor* AliFemtoCutMonitorHandler::PassMonitor(int n) {
248 // return pass monitor number n
249 AliFemtoCutMonitorIterator iter = fPassColl->begin();
250 if ( (int)fPassColl->size() <= n ) return NULL;
251 for ( int i=0; i<n; i++)
255 // ---------------------------------------------------------------------------
256 AliFemtoCutMonitor* AliFemtoCutMonitorHandler::FailMonitor(int n) {
257 // return fail monitor number n
258 AliFemtoCutMonitorIterator iter = fFailColl->begin();
259 if ( (int)fFailColl->size() <= n ) return NULL;
260 for ( int i=0; i<n; i++)
264 //_____________________________________________________________________________
265 TList *AliFemtoCutMonitorHandler::GetOutputList()
267 TList *tOutputList = new TList();
269 for (unsigned int ipass=0; ipass<fPassColl->size(); ipass++) {
270 TList *tLp = PassMonitor(ipass)->GetOutputList();
273 while (TObject *obj = nextLp()) {
274 tOutputList->Add(obj);
280 for (unsigned int ipass=0; ipass<fFailColl->size(); ipass++) {
281 TList *tLf = FailMonitor(ipass)->GetOutputList();
284 while (TObject *obj = nextLf()) {
285 tOutputList->Add(obj);
293 //_____________________________________________________________________________
294 void AliFemtoCutMonitorHandler::EventBegin(const AliFemtoEvent* aEvent)
296 if (fCollectionsEmpty) return;
298 AliFemtoCutMonitorIterator iter;
299 AliFemtoCutMonitor* tCM;
301 for (iter=fPassColl->begin(); iter!=fPassColl->end(); iter++){
303 tCM->EventBegin(aEvent);
306 for (iter=fFailColl->begin(); iter!=fFailColl->end(); iter++){
308 tCM->EventBegin(aEvent);
311 //_____________________________________________________________________________
312 void AliFemtoCutMonitorHandler::EventEnd(const AliFemtoEvent* aEvent)
314 if (fCollectionsEmpty) return;
316 AliFemtoCutMonitorIterator iter;
317 AliFemtoCutMonitor* tCM;
319 for (iter=fPassColl->begin(); iter!=fPassColl->end(); iter++){
321 tCM->EventEnd(aEvent);
324 for (iter=fFailColl->begin(); iter!=fFailColl->end(); iter++){
326 tCM->EventEnd(aEvent);