1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 // --- MUON header files ---
19 #include "AliMUONQADataMakerRec.h"
21 //-----------------------------------------------------------------------------
22 /// \class AliMUONQADataMakerRec
24 /// MUON base class for quality assurance data (histo) maker
26 /// It is now only a steering class for the two subclasses AliMUONTrackerQADataMakerRec
27 /// and AliMUONTriggerQADataMakerRec
29 /// \author C. Finck, D. Stocco, L. Aphecetche, A. Blanc
31 #include "AliMUONTrackerQADataMakerRec.h"
32 #include "AliMUONTriggerQADataMakerRec.h"
33 #include "AliQAChecker.h"
34 #include "AliRawReader.h"
35 #include "AliRawEventHeaderBase.h"
38 ClassImp(AliMUONQADataMakerRec)
41 //____________________________________________________________________________
42 AliMUONQADataMakerRec::AliMUONQADataMakerRec(Bool_t tracker, Bool_t trigger) :
43 AliQADataMakerRec(AliQAv1::GetDetName(AliQAv1::kMUON), "MUON Quality Assurance Data Maker"),
44 fTracker(tracker ? new AliMUONTrackerQADataMakerRec(this) : 0x0),
45 fTrigger(trigger ? new AliMUONTriggerQADataMakerRec(this) : 0x0)
50 //__________________________________________________________________
51 AliMUONQADataMakerRec::~AliMUONQADataMakerRec()
58 //____________________________________________________________________________
59 Int_t AliMUONQADataMakerRec::Add2List(TH1 * hist, const Int_t index, AliQAv1::TASKINDEX_t task, const Bool_t expert, const Bool_t image, const Bool_t saveForCorr)
61 TObjArray** list = GetList(task);
64 return Add2List(hist,index,list,expert,image,saveForCorr);
69 //____________________________________________________________________________
70 void AliMUONQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray** list)
72 /// Detector specific actions at end of cycle
74 for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++)
76 if (! IsValidEventSpecie(specie, list) ) continue;
78 SetEventSpecie(AliRecoParam::ConvertIndex(specie)); // needed by the GetXXXData methods
80 if ( task == AliQAv1::kRAWS )
82 if ( fTracker ) fTracker->EndOfDetectorCycleRaws(specie,list);
83 if ( fTrigger ) fTrigger->EndOfDetectorCycleRaws(specie,list);
85 else if ( task == AliQAv1::kRECPOINTS )
87 // normalize recpoints histograms
88 if ( fTracker ) fTracker->EndOfDetectorCycleRecPoints(specie,list);
89 if ( fTrigger ) fTrigger->EndOfDetectorCycleRecPoints(specie,list);
91 else if ( task == AliQAv1::kESDS )
93 // normalize esds histograms
94 if ( fTracker ) fTracker->EndOfDetectorCycleESDs(specie,list);
95 if ( fTrigger ) fTrigger->EndOfDetectorCycleESDs(specie,list);
97 else if ( task == AliQAv1::kDIGITSR )
99 if ( fTracker ) fTracker->EndOfDetectorCycleDigits(specie,list);
100 if ( fTrigger ) fTrigger->EndOfDetectorCycleDigits(specie,list);
104 AliFatal(Form("Not implemented for task %s",AliQAv1::GetTaskName(task).Data()));
108 // do the QA checking
109 AliQAChecker::Instance()->Run(AliQAv1::kMUON,task,list,const_cast<AliDetectorRecoParam*>(GetRecoParam()));
112 //____________________________________________________________________________
113 TObject* AliMUONQADataMakerRec::GetData(AliQAv1::TASKINDEX_t task, const Int_t index)
115 TObjArray** list = GetList(task);
116 if (list) return GetData(list,index);
120 //____________________________________________________________________________
121 TObjArray** AliMUONQADataMakerRec::GetList(AliQAv1::TASKINDEX_t task)
123 // enum TASKINDEX_t {
124 // kNULLTASKINDEX=-1, kRAWS, kHITS, kSDIGITS, kDIGITS, kDIGITSR, kRECPOINTS, kTRACKSEGMENTS, kRECPARTICLES, kESDS, kNTASKINDEX };
125 if ( task == AliQAv1::kRAWS )
129 else if ( task == AliQAv1::kDIGITS || task == AliQAv1::kDIGITSR )
131 return fDigitsQAList;
133 else if ( task == AliQAv1::kRECPOINTS )
135 return fRecPointsQAList;
139 AliFatal(Form("task %s not supported here yet",AliQAv1::GetTaskName(task).Data()));
144 //____________________________________________________________________________
145 void AliMUONQADataMakerRec::InitRaws()
147 /// create Raws histograms in Raws subdir
149 if ( fTracker ) fTracker->InitRaws();
150 if ( fTrigger ) fTrigger->InitRaws();
153 //__________________________________________________________________
154 void AliMUONQADataMakerRec::InitDigits()
156 /// Initialized Digits spectra
157 if ( fTracker ) fTracker->InitDigits();
158 if ( fTrigger ) fTrigger->InitDigits();
161 //____________________________________________________________________________
162 void AliMUONQADataMakerRec::InitRecPoints()
164 /// create Reconstructed Points histograms in RecPoints subdir
165 if ( fTracker ) fTracker->InitRecPoints();
166 if ( fTrigger ) fTrigger->InitRecPoints();
170 //____________________________________________________________________________
171 void AliMUONQADataMakerRec::InitESDs()
173 ///create ESDs histograms in ESDs subdir
174 if ( fTracker ) fTracker->InitESDs();
175 if ( fTrigger ) fTrigger->InitESDs();
178 //____________________________________________________________________________
179 void AliMUONQADataMakerRec::MakeRaws(AliRawReader* rawReader)
181 /// make QA for rawdata
183 // Check id histograms already created for this Event Specie
185 if ( fTracker && rawReader->GetType() == AliRawEventHeaderBase::kPhysicsEvent )
188 fTracker->MakeRaws(rawReader);
191 if ( fTrigger && (rawReader->GetType() == AliRawEventHeaderBase::kPhysicsEvent ||
192 rawReader->GetType() == AliRawEventHeaderBase::kCalibrationEvent ) )
195 fTrigger->MakeRaws(rawReader);
199 //__________________________________________________________________
200 void AliMUONQADataMakerRec::MakeDigits()
202 /// makes data from Digits
204 AliFatal("Not implemented");
207 //__________________________________________________________________
208 void AliMUONQADataMakerRec::MakeDigits(TTree* digitsTree)
210 /// makes data from Digits
212 // Do nothing in case of calibration event
213 if ( GetEventSpecie() == AliRecoParam::kCalib ) return;
215 if ( fTracker ) fTracker->MakeDigits(digitsTree);
216 if ( fTrigger ) fTrigger->MakeDigits(digitsTree);
219 //____________________________________________________________________________
220 void AliMUONQADataMakerRec::MakeRecPoints(TTree* clustersTree)
222 /// Fill histograms from treeR
224 // Do nothing in case of calibration event
225 if ( GetEventSpecie() == AliRecoParam::kCalib ) return;
227 if ( fTracker ) fTracker->MakeRecPoints(clustersTree);
228 if ( fTrigger ) fTrigger->MakeRecPoints(clustersTree);
231 //____________________________________________________________________________
232 void AliMUONQADataMakerRec::MakeESDs(AliESDEvent* esd)
234 /// make QA data from ESDs
236 // Do nothing in case of calibration event
237 if ( GetEventSpecie() == AliRecoParam::kCalib ) return;
239 if ( fTracker ) fTracker->MakeESDs(esd);
240 if ( fTrigger ) fTrigger->MakeESDs(esd);
244 //____________________________________________________________________________
245 void AliMUONQADataMakerRec::ResetDetector(AliQAv1::TASKINDEX_t task)
249 for (int spec = 0; spec < AliRecoParam::kNSpecies; ++spec)
251 if (!AliQAv1::Instance()->IsEventSpecieSet(AliRecoParam::ConvertIndex(spec)))
254 if ( task == AliQAv1::kRAWS )
256 if (fTracker) fTracker->ResetDetectorRaws(fRawsQAList[spec]);
257 if (fTrigger) fTrigger->ResetDetectorRaws(fRawsQAList[spec]);
259 else if ( task == AliQAv1::kRECPOINTS )
261 if (fTracker) fTracker->ResetDetectorRecPoints(fRecPointsQAList[spec]);
262 if (fTrigger) fTrigger->ResetDetectorRecPoints(fRecPointsQAList[spec]);
264 else if ( task == AliQAv1::kESDS )
266 if (fTracker) fTracker->ResetDetectorESDs(fESDsQAList[spec]);
267 if (fTrigger) fTrigger->ResetDetectorESDs(fESDsQAList[spec]);
269 else if ( task == AliQAv1::kDIGITS )
271 if (fTracker) fTracker->ResetDetectorDigits(fDigitsQAList[spec]);
272 if (fTrigger) fTrigger->ResetDetectorDigits(fDigitsQAList[spec]);
276 AliFatal(Form("Not implemented for task %s",AliQAv1::GetTaskName(task).Data()));
281 //____________________________________________________________________________
282 void AliMUONQADataMakerRec::StartOfDetectorCycle()
284 /// Detector specific actions at start of cycle