- a fast HLT version of the SSD clusterfinder created. The speed on pp mc is ~20kHz...
[u/mrichter/AliRoot.git] / ITS / AliITSQASDDChecker.cxx
CommitLineData
3647765c 1
5b716935 2/**************************************************************************
3 * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
4 * *
5 * Author: The ALICE Off-line Project. *
6 * Contributors are mentioned in the code where appropriate. *
7 * *
8 * Permission to use, copy, modify and distribute this software and its *
9 * documentation strictly for non-commercial purposes is hereby granted *
10 * without fee, provided that the above copyright notice appears in all *
11 * copies and that both the copyright notice and this permission notice *
12 * appear in the supporting documentation. The authors make no claims *
13 * about the suitability of this software for any purpose. It is *
14 * provided "as is" without express or implied warranty. *
15 **************************************************************************/
16
17/* $Id$ */
18
19// *****************************************
20// Checks the quality assurance
21// by comparing with reference data
22// P. Cerello Apr 2008
23// INFN Torino
24
25// --- ROOT system ---
3647765c 26#include "TH1.h"
27#include <TCanvas.h>
5b716935 28
29// --- AliRoot header files ---
30#include "AliITSQASDDChecker.h"
c71529b0 31#include "AliLog.h"
3647765c 32#include "AliCDBEntry.h"
fc7e0df2 33#include "AliQAManager.h"
3647765c 34#include "AliQACheckerBase.h"
35#include "TSystem.h"
5b716935 36
5b716935 37
3647765c 38ClassImp(AliITSQASDDChecker)
5b716935 39//__________________________________________________________________
40AliITSQASDDChecker& AliITSQASDDChecker::operator = (const AliITSQASDDChecker& qac )
41{
42 // Equal operator.
43 this->~AliITSQASDDChecker();
44 new(this) AliITSQASDDChecker(qac);
45 return *this;
46}
47
48//__________________________________________________________________
4e25ac79 49Double_t AliITSQASDDChecker::Check(AliQAv1::ALITASK_t index, TObjArray * list)
c71529b0 50{
3647765c 51 AliDebug(1,Form("AliITSQASDDChecker called with offset: %d\n", fSubDetOffset));
9075b42e 52 /* char * detOCDBDir = Form("ITS/%s/%s", AliQAv1::GetRefOCDBDirName(), AliQAv1::GetRefDataDirName()) ;
fc7e0df2 53 AliCDBEntry *QARefObj = AliQAManager::QAManager()->Get(detOCDBDir);
3647765c 54 if( !QARefObj){
55 AliError("Calibration object retrieval failed! SDD will not be processed");
56 return 1.;
5b716935 57 }
9075b42e 58 */
3647765c 59 Double_t test = 0.0;
60 Int_t offset = 0;
61
4e25ac79 62 if(index==AliQAv1::kRAW){ //analizing RAWS
3647765c 63 if (list->GetEntries() == 0){
64 test = 1. ; // nothing to check
65 }
66 else {
67 TIter next(list) ;
68 TH1 * hdata ;
69 for(offset =0;offset < fSubDetOffset; offset++){
fc7e0df2 70 hdata = dynamic_cast<TH1 *>(next());
5b716935 71 }
3647765c 72
9075b42e 73 while ( (hdata = dynamic_cast<TH1 *>(next())) ){
3647765c 74 if (hdata) {
75 if(offset == fSubDetOffset){ //ModPattern check
76 if ( hdata->Integral() == 0 ) {
77 AliWarning(Form("Spectrum %s is empty", hdata->GetName())) ;
78 return 0.5 ;
79 }
9075b42e 80 test = hdata->Chi2Test(hdata,"UU,p");
3647765c 81 } // ModPattern check
82 }
83 else{
84 AliError("Data type cannot be processed") ;
85 }
86 offset++;
87 } //SDD histo
88
89 while ( (hdata = dynamic_cast<TH1 *>(next()))) {
90 offset++;
5b716935 91 }
3647765c 92 } //else entries !=0
93 AliInfo(Form("Test Result for RAWS = %f", test)) ;
94 } // if(index==0)
5b716935 95
3647765c 96
4e25ac79 97 if( index==AliQAv1::kREC){ //analizing RECP
3647765c 98 //printf("analizing recp, offset %d \n",fSubDetOffset);
99 if (list->GetEntries() == 0){
100 test = 1. ; // nothing to check
5b716935 101 }
3647765c 102 else {
103 TIter next(list) ;
104 TH1 * hdata ;
105 for(offset =0;offset < fSubDetOffset; offset++){
106 hdata = dynamic_cast<TH1 *>(next()); // magari TIter++ ??
107 //printf("Skipping histo %s, offset %d \n",hdata->GetName(),fSubDetOffset);
5b716935 108 }
3647765c 109
9075b42e 110 while ( (hdata = dynamic_cast<TH1 *>(next())) ){
111 /*if (hdata) { // offset=9 ModPatternRP
3647765c 112 //printf("Treating histo %s, offset %d \n",hdata->GetName(),fSubDetOffset);
113 if( offset == 9 && hdata->GetEntries()>0)test = 0.1;
114 }
115 else{
116 AliError("Data type cannot be processed") ;
117 }
9075b42e 118 offset++;*/
5b716935 119 }
3647765c 120 } // GetEntries loop
121 AliInfo(Form("Test Result for RECP = %f", test)) ;
9075b42e 122
123 } // if(index==1) loop
5b716935 124
3647765c 125 return test;
5b716935 126}
127
3647765c 128//__________________________________________________________________
129void AliITSQASDDChecker::SetTaskOffset(Int_t TaskOffset)
130{
131 fSubDetOffset = TaskOffset;
132}