fix in the interface
[u/mrichter/AliRoot.git] / STEER / AliQADataMaker.cxx
CommitLineData
421ab0fb 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
17/* $Id$ */
18
202374b1 19//
20// Base Class
21// Produces the data needed to calculate the quality assurance.
22// All data must be mergeable objects.
23// Y. Schutz CERN July 2007
24//
421ab0fb 25
26// --- ROOT system ---
27#include <TSystem.h>
28#include <TFile.h>
6c18591a 29#include <TList.h>
d76c31f4 30#include <TTree.h>
d5cf81bd 31#include <TClonesArray.h>
a2b64fbd 32#include <TParameter.h>
421ab0fb 33
34// --- Standard library ---
35
36// --- AliRoot header files ---
37#include "AliLog.h"
2e42b4d4 38#include "AliQADataMaker.h"
39#include "AliQAChecker.h"
d76c31f4 40#include "AliESDEvent.h"
d5cf81bd 41#include "AliRawReader.h"
421ab0fb 42
2e42b4d4 43ClassImp(AliQADataMaker)
312e6f8d 44
421ab0fb 45//____________________________________________________________________________
2e42b4d4 46AliQADataMaker::AliQADataMaker(const char * name, const char * title) :
421ab0fb 47 TNamed(name, title),
48 fOutput(0x0),
6c18591a 49 fDetectorDir(0x0),
312e6f8d 50 fDetectorDirName(""),
930e6e3e 51 fCurrentCycle(0),
5b188f2f 52 fCycle(9999999),
53 fCycleCounter(0),
b1af1125 54 fWriteExpert(kFALSE),
a2b64fbd 55 fParameterList(0x0),
5b188f2f 56 fRun(0)
421ab0fb 57{
58 // ctor
421ab0fb 59 fDetectorDirName = GetName() ;
60}
61
62//____________________________________________________________________________
2e42b4d4 63AliQADataMaker::AliQADataMaker(const AliQADataMaker& qadm) :
421ab0fb 64 TNamed(qadm.GetName(), qadm.GetTitle()),
65 fOutput(qadm.fOutput),
6c18591a 66 fDetectorDir(qadm.fDetectorDir),
312e6f8d 67 fDetectorDirName(qadm.fDetectorDirName),
5b188f2f 68 fCurrentCycle(qadm.fCurrentCycle),
69 fCycle(qadm.fCycle),
70 fCycleCounter(qadm.fCycleCounter),
b1af1125 71 fWriteExpert(qadm.fWriteExpert),
a2b64fbd 72 fParameterList(qadm.fParameterList),
a4976ef3 73 fRun(qadm.fRun)
421ab0fb 74{
75 //copy ctor
76 fDetectorDirName = GetName() ;
77}
78
421ab0fb 79//____________________________________________________________________________
6e65319c 80Int_t AliQADataMaker::Add2List(TH1 * hist, const Int_t index, TObjArray * list, const Bool_t expert, const Bool_t saveForCorr)
ba7aca7d 81{
04236e67 82 // Set histograms memory resident and add to the list
ab4351aa 83 // Maximm allowed is 10000
cb905b0f 84 TString className(hist->ClassName()) ;
7f8758be 85 if( ! className.BeginsWith("T") ) {
86 AliError(Form("QA data Object must be a generic ROOT object and not %s", className.Data())) ;
940d8e5f 87// return -1 ;
cb905b0f 88 }
ab4351aa 89 if ( index > 10000 ) {
90 AliError("Max number of authorized QA objects is 10000") ;
04236e67 91 return -1 ;
92 } else {
93 hist->SetDirectory(0) ;
6e65319c 94 if (expert) {
95 TString name(hist->GetTitle()) ;
96 name.Append(AliQA::GetExpert()) ;
97 hist->SetTitle(name) ;
98 }
04236e67 99 list->AddAtAndExpand(hist, index) ;
a2b64fbd 100 char * name = Form("%s_%s", list->GetName(), hist->GetName()) ;
101 TParameter<double> * p = new TParameter<double>(name, 9999.9999) ;
102 if(saveForCorr) {
103 if ( ! fParameterList )
104 fParameterList = new TList() ;
105 fParameterList->Add(p) ;
106 }
107 return list->GetLast() ;
108 }
421ab0fb 109}
110
96d67a8d 111//____________________________________________________________________________
112void AliQADataMaker::DefaultEndOfDetectorCycle(AliQA::TASKINDEX_t task)
113{
114 // this method must be oveloaded by detectors
115 // sets the QA result to Fatal
7c002d48 116 AliQA::Instance(AliQA::GetDetIndex(GetName())) ;
96d67a8d 117 AliQA * qa = AliQA::Instance(task) ;
118 qa->Set(AliQA::kFATAL) ;
119 AliQA::GetQAResultFile()->cd() ;
120 qa->Write(AliQA::GetQAName(), kWriteDelete) ;
121 AliQA::GetQAResultFile()->Close() ;
122}
123
421ab0fb 124//____________________________________________________________________________
c65c502a 125void AliQADataMaker::Finish() const
421ab0fb 126{
96d67a8d 127 // write to the output File
d9cbd8fd 128 if (fOutput)
129 fOutput->Close() ;
421ab0fb 130}
131
132//____________________________________________________________________________
04236e67 133TObject * AliQADataMaker::GetData(TObjArray * list, const Int_t index)
134{
135 // Returns the QA object at index. Limit is 100.
27773260 136 if (list) {
137 if ( index > 10000 ) {
138 AliError("Max number of authorized QA objects is 10000") ;
139 return NULL ;
140 } else {
141 return list->At(index) ;
142 }
04236e67 143 } else {
27773260 144 AliError("Data list is NULL !!") ;
145 return NULL ;
04236e67 146 }
27773260 147}