]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliQADataMaker.cxx
Addition of gaussian truncated at different left and right distances (useful for...
[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
ba7aca7d 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) ;
750730d8 94
95 if (expert)
96 hist->SetBit(AliQA::GetExpertBit()) ;
97
98 list->AddAtAndExpand(hist, index) ;
a2b64fbd 99 char * name = Form("%s_%s", list->GetName(), hist->GetName()) ;
100 TParameter<double> * p = new TParameter<double>(name, 9999.9999) ;
101 if(saveForCorr) {
102 if ( ! fParameterList )
103 fParameterList = new TList() ;
104 fParameterList->Add(p) ;
105 }
106 return list->GetLast() ;
107 }
421ab0fb 108}
109
96d67a8d 110//____________________________________________________________________________
111void AliQADataMaker::DefaultEndOfDetectorCycle(AliQA::TASKINDEX_t task)
112{
113 // this method must be oveloaded by detectors
114 // sets the QA result to Fatal
7c002d48 115 AliQA::Instance(AliQA::GetDetIndex(GetName())) ;
96d67a8d 116 AliQA * qa = AliQA::Instance(task) ;
117 qa->Set(AliQA::kFATAL) ;
118 AliQA::GetQAResultFile()->cd() ;
119 qa->Write(AliQA::GetQAName(), kWriteDelete) ;
120 AliQA::GetQAResultFile()->Close() ;
121}
122
421ab0fb 123//____________________________________________________________________________
c65c502a 124void AliQADataMaker::Finish() const
421ab0fb 125{
96d67a8d 126 // write to the output File
d9cbd8fd 127 if (fOutput)
128 fOutput->Close() ;
421ab0fb 129}
130
131//____________________________________________________________________________
04236e67 132TObject * AliQADataMaker::GetData(TObjArray * list, const Int_t index)
133{
134 // Returns the QA object at index. Limit is 100.
27773260 135 if (list) {
136 if ( index > 10000 ) {
137 AliError("Max number of authorized QA objects is 10000") ;
138 return NULL ;
139 } else {
140 return list->At(index) ;
141 }
04236e67 142 } else {
27773260 143 AliError("Data list is NULL !!") ;
144 return NULL ;
04236e67 145 }
27773260 146}