]> git.uio.no Git - u/mrichter/AliRoot.git/blame - T0/AliT0QAChecker.cxx
add AliT0TriggerParameters
[u/mrichter/AliRoot.git] / T0 / AliT0QAChecker.cxx
CommitLineData
c03351ac 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 **************************************************************************/
c03351ac 15//...
16// Checks the quality assurance.
17// By comparing with reference data
18// Skeleton for T0
f6c2d5e2 19//---------------------------------------------
20//checkig without reference data:
21//for RAW QA all histograms should have approximatly the same
22//number of entries as RefPoint
23//for Rec Points checks
24// - amplitude measured by 2 methos
25// - online and offline T0 measurements
26// for ESD quality of reconstruction ( and measurements):
27// RMS of vertex and T0 less than 75ps
28//
29// Alla.Maevskaya@cern.ch
c03351ac 30//...
31
32// --- ROOT system ---
b09247a2 33#include <Riostream.h>
c03351ac 34#include <TClass.h>
35#include <TH1F.h>
0d849919 36#include <TH2.h>
c03351ac 37#include <TIterator.h>
38#include <TKey.h>
39#include <TFile.h>
446d6ec4 40#include <TMath.h>
0d849919 41#include <TString.h>
c03351ac 42
43// --- Standard library ---
44
45// --- AliRoot header files ---
46#include "AliLog.h"
4e25ac79 47#include "AliQAv1.h"
c03351ac 48#include "AliQAChecker.h"
49#include "AliT0QAChecker.h"
50
51ClassImp(AliT0QAChecker)
52
3685c21c 53
57acd2d2 54//____________________________________________________________________________
4e25ac79 55Double_t * AliT0QAChecker::Check(AliQAv1::ALITASK_t /*index*/)
57acd2d2 56{
57 Double_t * rv = new Double_t[AliRecoParam::kNSpecies] ;
58 for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++)
59 rv[specie] = 0.0 ;
60 return rv ;
61}
62
4e67e173 63//__________________________________________________________________
4e25ac79 64Double_t * AliT0QAChecker::Check(AliQAv1::ALITASK_t index,TObjArray ** list)
3685c21c 65{
66
67 // Super-basic check on the QA histograms on the input list:
68 // look whether they are empty!
446d6ec4 69
57acd2d2 70 Double_t * test = new Double_t[AliRecoParam::kNSpecies] ;
71 for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++)
72 test[specie] = 10.0 ;
c724dd64 73
0d849919 74 Double_t nent[250];
c4b97145 75 TString hname[250];
5ed41460 76 const char *cname;
c4b97145 77 memset(nent,0,250*sizeof(Double_t));
78 Double_t w[250];
79 memset(w,1,250*sizeof(Double_t));
0d849919 80 TH2 *fhRecDiff[3];
81 TH2 *fhRawEff[250];
57acd2d2 82 TH1 *fhESD[2];
83
84 for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
4e25ac79 85 // TString dataType = AliQAv1::GetAliTaskName(index);
57acd2d2 86 if (list[specie]->GetEntries() == 0){
87 test[specie] = 1. ; // nothing to check
88 }
89 else {
90 TIter next(list[specie]) ;
3685c21c 91 TH1 * hdata ;
0d849919 92 TH2 * h ;
5379c4a3 93 // AliDebug(AliQAv1::GetQADebugLevel(), Form(" data type %i %s nentries %i\n",
57acd2d2 94 // index,dataType.Data(),list->GetEntries()));
95 for (Int_t ir=0; ir<list[specie]->GetEntries(); ir++) {
96 //raw
97 if(index==0 ){
98 /*
99 if(ir < 205) {
100 hdata = (TH1*) list[specie]->UncheckedAt(ir);
101 if(hdata) {
102 cname = hdata->GetName();
103 hname[ir] = cname;
5379c4a3 104 AliDebug(AliQAv1::GetQADebugLevel(),Form("count %i %s \n",ir, hname[ir].Data())) ;
57acd2d2 105 fhRaw[ir] = hdata;
106 }
107 }*/
108 if(ir > 204) {
109 // else{
110 h = (TH2*) list[specie]->UncheckedAt(ir);
5379c4a3 111 AliDebug(AliQAv1::GetQADebugLevel(), Form(" index %i ir %i \n", index,ir));
57acd2d2 112 if(h) {
113 cname = h->GetName();
114 hname[ir] = cname;
5379c4a3 115 AliDebug(AliQAv1::GetQADebugLevel(),Form("count %i %s \n",ir, hname[ir].Data())) ;
57acd2d2 116 fhRawEff[ir] = h;
117 }
118 }
119 }
0d849919 120
57acd2d2 121 //rec
122 if(index==2){
123 h = (TH2*) list[specie]->UncheckedAt(ir);
124 if(h) {
125 cname = h->GetName();
126 hname[ir] = cname;
5379c4a3 127 AliDebug(AliQAv1::GetQADebugLevel(), Form("count %i %s \n",ir, hname[ir].Data())) ;
57acd2d2 128 fhRecDiff[ir] = h;
129 }
130 }
131 //esd
132 if(index==3){
5379c4a3 133 // cout<<" ir "<<ir<<endl;
57acd2d2 134 hdata = (TH1*) list[specie]->UncheckedAt(ir);
135 if(hdata){
136 fhESD[ir] = hdata;
5379c4a3 137 AliDebug(AliQAv1::GetQADebugLevel(), Form("count %i %s ",ir, hname[ir].Data()) );
57acd2d2 138 }
0d849919 139 }
57acd2d2 140 }
141 if (index == 0) {
142 //raw data
5ed41460 143
57acd2d2 144 for (Int_t icase=205; icase<207; icase++) {
145 for (Int_t idet=0; idet<24; idet++) {
146 Double_t mean = fhRawEff[icase]->ProjectionY(Form("%s_py_%i_%i",
147 fhRawEff[icase]->GetName(), idet,icase),
148 idet,idet+1)->GetMean();
149 Double_t rms= fhRawEff[icase]->ProjectionY(Form("%s_py%i_%i",
150 fhRawEff[icase]->GetName(), idet,icase),
151 idet,idet+1)->GetRMS();
5379c4a3 152 AliDebug(AliQAv1::GetQADebugLevel(), Form("name %s icase %i idet %i mean %f, rms %f\n",
57acd2d2 153 fhRawEff[icase]->GetName(), icase, idet, mean,rms));
154 if (mean<1.2 && mean> 0.8 ) {
155 test[specie] = 1;
5379c4a3 156 AliDebug(AliQAv1::GetQADebugLevel(), Form("All channels works meane efficieny %f with rms %f test %f", mean, rms, test[specie])) ;
57acd2d2 157 }
158 if (mean<=0.8 && mean>= 0.5 ){
159 test[specie] = 0.5;
5379c4a3 160 AliDebug(AliQAv1::GetQADebugLevel(), Form("%s problem in channel %i efficieny %f test %f",
57acd2d2 161 fhRawEff[icase]->GetName(), idet, mean, test[specie])) ;
162 }
163 if (mean<0.5 ) {
164 test[specie] = 0.25;
5379c4a3 165 AliDebug(AliQAv1::GetQADebugLevel(), Form("%s big problem in channel %i efficieny %f test %f",
57acd2d2 166 fhRawEff[icase]->GetName(), idet, mean, test[specie])) ;
167 }
168 }
169 }
3685c21c 170 }
57acd2d2 171 if(index == 2){
172 //rec points
173 for (Int_t icase=0; icase<2; icase++) {
174 for (Int_t idet=0; idet<24; idet++) {
175 Double_t mean = fhRecDiff[icase]->
176 ProjectionY(Form("%s_py", fhRecDiff[icase]->GetName()),
177 idet,idet+1)->GetMean();
178 Double_t rms= fhRecDiff[icase]->
179 ProjectionY(Form("%s_py", fhRecDiff[icase]->GetName()),
180 idet,idet+1)->GetRMS();
5379c4a3 181 AliDebug(AliQAv1::GetQADebugLevel(), Form("name %s icase %i idet %i mean %f, rms %f\n",
57acd2d2 182 fhRecDiff[icase]->GetName(), icase, idet, mean,rms));
0d849919 183
57acd2d2 184 if(TMath::Abs(mean) >1.5 || rms >1){
5379c4a3 185 AliDebug(AliQAv1::GetQADebugLevel(), Form(" calibration is nor perfect; test=%f", test)) ;
57acd2d2 186 test[specie]=0.25;
187 }
188 if(mean>3 || rms >5) {
189 test[specie] = 0.1;
5379c4a3 190 AliDebug(AliQAv1::GetQADebugLevel(), Form(" wrong calibration test=%f", test[specie])) ;
57acd2d2 191 }
192 }
193 }
3685c21c 194 }
57acd2d2 195 if (index == 3) {
196 //ESD
197 for (Int_t icase=0; icase<2; icase++) {
198 Double_t rmsVertex = fhESD[icase]->GetRMS();
199 Double_t meanVertex = fhESD[icase]->GetMean();
200 test[specie]=1;
5379c4a3 201 AliDebug(AliQAv1::GetQADebugLevel(), Form("numentries %d meanVertex %f rmsVertex %f", fhESD[icase]->GetEntries(), meanVertex, rmsVertex));
57acd2d2 202 if (TMath::Abs(rmsVertex)>3) {
203 test[specie]=0.25;
5379c4a3 204 AliDebug(AliQAv1::GetQADebugLevel(), Form("Vertex position resolution not good , rms= %f test=%f",
57acd2d2 205 rmsVertex, test[specie])) ;
206 }
207 if (TMath::Abs(meanVertex)>3) {
208 test[specie]=0.25;
5379c4a3 209 AliDebug(AliQAv1::GetQADebugLevel(), Form("Vertex position bad calibrated , Mean= %f test=%f",
57acd2d2 210 meanVertex, test[specie])) ;
211 }
212 }
213 }
214 } // if (list->GetEntries() != 0
5379c4a3 215 AliDebug(AliQAv1::GetQADebugLevel(), Form("Test Result = %f", test[specie])) ;
57acd2d2 216 }
3685c21c 217 return test ;
218}
5ed41460 219