]>
Commit | Line | Data |
---|---|---|
ece56eb9 | 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 | // $Id$ | |
17 | ||
18 | #include "AliMUONTriggerQAChecker.h" | |
19 | ||
20 | /// \class AliMUONTriggerQAChecker | |
21 | /// | |
22 | /// Implementation of QAChecker for MTR | |
23 | /// | |
24 | /// For the moment we only implement the checking of raw data QA for the trigger | |
25 | /// by looking at the local structure and trigger response errors. | |
26 | /// | |
a026ce9e | 27 | /// \author Diego Stocco, Subatech |
ece56eb9 | 28 | |
29 | ||
30 | #include "AliRecoParam.h" | |
6482f70b | 31 | #include "AliMUONQAIndices.h" |
ffaafee5 | 32 | #include "AliQAv1.h" |
ece56eb9 | 33 | #include "TH1.h" |
34 | #include "TPaveText.h" | |
35 | #include "TString.h" | |
36 | #include "TObjArray.h" | |
37 | #include "TList.h" | |
38 | ||
39 | /// \cond CLASSIMP | |
40 | ClassImp(AliMUONTriggerQAChecker) | |
41 | /// \endcond | |
42 | ||
43 | //__________________________________________________________________ | |
44 | AliMUONTriggerQAChecker::AliMUONTriggerQAChecker() : AliMUONVQAChecker() | |
45 | { | |
46 | /// ctor | |
47 | } | |
48 | ||
49 | //__________________________________________________________________ | |
50 | AliMUONTriggerQAChecker::~AliMUONTriggerQAChecker() | |
51 | { | |
52 | /// dtor | |
53 | } | |
54 | ||
55 | //______________________________________________________________________________ | |
56 | AliMUONVQAChecker::ECheckCode | |
57 | AliMUONTriggerQAChecker::MarkHisto(TH1& histo, AliMUONVQAChecker::ECheckCode value) const | |
58 | { | |
59 | /// Mark histo as originator of some QA error/warning | |
60 | ||
61 | if ( value != AliMUONVQAChecker::kInfo ) | |
62 | { | |
63 | histo.SetBit(AliQAv1::GetQABit()); | |
64 | } | |
65 | ||
66 | return value; | |
67 | } | |
68 | ||
69 | //__________________________________________________________________ | |
70 | AliMUONVQAChecker::ECheckCode* | |
486788fc | 71 | AliMUONTriggerQAChecker::CheckRaws(TObjArray** list, const AliMUONRecoParam* ) |
ece56eb9 | 72 | { |
73 | /// Check raw data | |
74 | ||
75 | AliMUONVQAChecker::ECheckCode * rv = new AliMUONVQAChecker::ECheckCode[AliRecoParam::kNSpecies] ; | |
76 | ||
77 | for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) { | |
78 | rv[specie] = AliMUONVQAChecker::kInfo; | |
79 | } | |
80 | ||
81 | Int_t histoRawsPercentIndex[] = { | |
6482f70b | 82 | AliMUONQAIndices::kTriggerErrorSummaryNorm, |
83 | AliMUONQAIndices::kTriggerCalibSummaryNorm, | |
84 | AliMUONQAIndices::kTriggerReadOutErrorsNorm | |
ece56eb9 | 85 | }; |
86 | const Int_t kNrawsHistos = sizeof(histoRawsPercentIndex)/sizeof(histoRawsPercentIndex[0]); | |
87 | ||
88 | // MOVE THESE TO REFERENCE HISTOS | |
ab057e42 | 89 | // START WITH THOSE COMMENTED OUT UNTIL WE GAIN CONFIDENCE... |
90 | // Float_t safeFactor = 5.; | |
91 | // Float_t alarmPercentTrigAlgo[AliMUONTriggerQADataMakerRec::kNtrigAlgoErrorBins] = {safeFactor*1., safeFactor*1., safeFactor*1., 100., 100., 100., 100., safeFactor*1., safeFactor*1., safeFactor*1.}; | |
92 | // Float_t alarmPercentCalib[AliMUONTriggerQADataMakerRec::kNtrigCalibSummaryBins] = {safeFactor*0.4, safeFactor*1., 6.2, 0.0001, safeFactor*0.4}; | |
93 | // Float_t alarmPercentReadout[AliMUONTriggerQADataMakerRec::kNtrigStructErrorBins] = {safeFactor*1., safeFactor*1., safeFactor*1., safeFactor*1.}; | |
94 | // | |
95 | // Float_t* alarmPercent[kNrawsHistos] = {alarmPercentTrigAlgo, alarmPercentCalib, alarmPercentReadout}; | |
96 | // END OF COWARD COMMENTING... | |
97 | ||
ece56eb9 | 98 | TH1* currHisto = 0x0; |
99 | for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) { | |
100 | for(Int_t ihisto = 0; ihisto<kNrawsHistos; ihisto++){ | |
101 | currHisto = AliQAv1::GetData(list,histoRawsPercentIndex[ihisto],AliRecoParam::ConvertIndex(specie)); | |
102 | if ( currHisto ){ | |
103 | currHisto->SetBarWidth(0.5); | |
104 | currHisto->SetBarOffset(0.25); | |
105 | TPaveText* text = new TPaveText(0.65,0.65,0.99,0.99,"NDC"); | |
106 | TString binName; | |
107 | Bool_t isOk = kTRUE; | |
108 | Int_t nbins = currHisto->GetXaxis()->GetNbins(); | |
109 | for (Int_t ibin = 1; ibin<=nbins; ibin++){ | |
110 | binName = currHisto->GetXaxis()->GetBinLabel(ibin); | |
111 | binName.ReplaceAll("#splitline",""); | |
112 | binName.ReplaceAll("{",""); | |
113 | binName.ReplaceAll("}",""); | |
114 | Float_t binContent = currHisto->GetBinContent(ibin); | |
115 | // if (binContent > alarmPercent[ihisto][ibin-1]) isOk = kFALSE; | |
116 | text->AddText(Form("%5.2f %% in %s", binContent, binName.Data())); | |
117 | //text->AddText(Form("%5.2f %% in %s (limit %5.2f %%)", binContent, binName.Data(), alarmPercent[ihisto][ibin-1])); | |
118 | } | |
119 | if ( ! isOk ) { | |
120 | text->SetFillColor(kRed); | |
121 | rv[specie] = MarkHisto(*currHisto, AliMUONVQAChecker::kError); | |
122 | } | |
123 | else text->SetFillColor(kGreen); | |
124 | currHisto->GetListOfFunctions()->Add(text); | |
125 | currHisto->SetStats(kFALSE); | |
126 | currHisto->GetYaxis()->SetRangeUser(0., 110.); | |
127 | } | |
128 | } // loop on histos | |
129 | } // loop on species | |
130 | ||
131 | return rv; | |
132 | } | |
133 | ||
134 | //__________________________________________________________________ | |
135 | AliMUONVQAChecker::ECheckCode* | |
486788fc | 136 | AliMUONTriggerQAChecker::CheckRecPoints(TObjArray** , const AliMUONRecoParam* ) |
ece56eb9 | 137 | { |
138 | /// Check rec points | |
139 | return 0x0; | |
140 | } | |
141 | ||
142 | //__________________________________________________________________ | |
143 | AliMUONVQAChecker::ECheckCode* | |
486788fc | 144 | AliMUONTriggerQAChecker::CheckESD(TObjArray** , const AliMUONRecoParam* ) |
ece56eb9 | 145 | { |
146 | /// Check esd | |
147 | return 0x0; | |
148 | } |