ClassImp(AliITSQASDDChecker)
-//__________________________________________________________________
-AliITSQASDDChecker& AliITSQASDDChecker::operator = (const AliITSQASDDChecker& qac )
+
+
+
+//_____________________________________________________________________
+
+AliITSQASDDChecker::AliITSQASDDChecker():
+fSubDetOffset(0),
+ fStepBitSDD(NULL),
+ fLowSDDValue(NULL),
+ fHighSDDValue(NULL),
+ fCalibration(NULL),
+ fThresholdForRelativeOccupancy(0.01),
+ fThresholdForRecToRawRatio(0.04),
+fImage(NULL),
+ fESforCheck(0)
{
- // Equal operator.
- this->~AliITSQASDDChecker();
- new(this) AliITSQASDDChecker(qac);
- return *this;
-}
+// Default constructor
+ fStepBitSDD=new Double_t[AliQAv1::kNBIT];
+ fLowSDDValue=new Float_t[AliQAv1::kNBIT];
+ fHighSDDValue=new Float_t[AliQAv1::kNBIT];
+
+ for(Int_t ibit=0;ibit<AliQAv1::kNBIT;ibit++)
+ {
+ fStepBitSDD[ibit]=0.;
+ fLowSDDValue[ibit]=0.;
+ fHighSDDValue[ibit]=0.;
+ }
+ for(Int_t i=0;i<AliRecoParam::kNSpecies;i++) fPaveText[i] = NULL;
+} // ctor
+
+
AliITSQASDDChecker::~AliITSQASDDChecker()
{
delete fCalibration;
fCalibration=NULL;
}
- if(fImage)
+ if(fImage)
{
- delete []fImage;
- fImage=NULL;
+ delete []fImage;
+ fImage=NULL;
}
+ for(Int_t i=0;i<AliRecoParam::kNSpecies;i++) {
+ if(fPaveText[i])
+ {
+ delete fPaveText[i];
+ fPaveText[i]=NULL;
+ }
+ }
} // dtor
//__________________________________________________________________
Double_t AliITSQASDDChecker::Check(AliQAv1::ALITASK_t index, const TObjArray * list, const AliDetectorRecoParam * /*recoparam*/)
{
//check histograms of the different lists
- AliInfo(Form("AliITSQASDDChecker called with offset: %d\n", fSubDetOffset) );
+ AliInfo(Form("AliITSQASDDChecker called with offset: %d \t and specie %d\n", fSubDetOffset,fESforCheck));
AliDebug(1,Form("AliITSQASDDChecker called with offset: %d\n", fSubDetOffset));
TIter next(list);
TString results1;
TString results2;
- Int_t color=1;
+ Int_t color=kBlack;
+ Int_t textcolor=kBlack;
switch(index) {
case AliQAv1::kRAW:{
next.Begin();
while( (hdata = dynamic_cast<TH1* >(next())) ){
- if (hdata){TString hname=hdata->GetName();
+ if (hdata){
+ TString hname=hdata->GetName();
if(hname.Contains("SDDchargeMap"))continue;
if(hname.Contains("SDDDDLPattern"))continue;
if(hname.Contains("SDDEventSize"))continue;
Int_t layer1=0;
if(hname.Contains("3"))layer1=0;
else if(hname.Contains("4"))layer1=1;
- TH2* htemp=dynamic_cast<TH2*>(hdata);
- if(htemp){
- hlayer[layer1]=(TH2*)htemp->Clone();
- hlayer[layer1]->SetName(Form("%s_copy",hname.Data()));
- //hlayer[layer1]->RebinX(2);
- int modmay=hlayer[layer1]->GetNbinsY();
- TH1D* hproj= hlayer[layer1]->ProjectionY();
- Double_t ladcontent=0;
- for(Int_t i=1;i<=modmay;i++) {//loop on the ladders
- ladcontent=hproj->GetBinContent(i);
- if(AliITSQADataMakerRec::AreEqual(ladcontent,0.)) emptyladders[layer1]++;
- else filledladders[layer1]++;}//end for
- AliInfo(Form(" %s : empty ladders %i \t filled ladders %i\n",hname.Data(), emptyladders[layer1], filledladders[layer1]));//end else layer 3
- delete hproj;
- hproj=NULL;
- }//end if htemp
+ TH2* htemp=dynamic_cast<TH2*>(hdata);
+ if(htemp){
+ hlayer[layer1]=(TH2*)htemp->Clone();
+ hlayer[layer1]->SetName(Form("%s_copy",hname.Data()));
+ int modmay=hlayer[layer1]->GetNbinsY();
+ TH1D* hproj= hlayer[layer1]->ProjectionY();
+ Double_t ladcontent=0;
+ for(Int_t i=1;i<=modmay;i++) {//loop on the ladders
+ ladcontent=hproj->GetBinContent(i);
+ if(AliITSQADataMakerRec::AreEqual(ladcontent,0.)) emptyladders[layer1]++;
+ else filledladders[layer1]++;}//end for
+ AliInfo(Form(" %s : empty ladders %i \t filled ladders %i\n",hname.Data(), emptyladders[layer1], filledladders[layer1]));//end else layer 3
+ delete hproj;
+ hproj=NULL;
+ }//end if htemp
}//end else entries !=0
}//end check on phiz
+
}//end if hdata
- }//end while
+
+ }//end while
for(Int_t ii=0;ii<2;ii++)
{
filledmodules[ii]=0;
excluded++;
excludedmoduleperlayer[lay-3]++;
Double_t content=0.;
- Double_t contentlayer[2];
- for(Int_t i=0;i<2;i++)contentlayer[i]=0.;
+ //Double_t contentlayer[2];
+ //for(Int_t i=0;i<2;i++)contentlayer[i]=0.;
if(hmodule)content=hmodule->GetBinContent(imod+1);//if expert bit is active the histogram will be stored in the QA file otherwise the histogram will not be written on the logbook
// if(hlayer[lay-3]) contentlayer[lay-3]=hlayer[lay-3]->GetBinContent(det,lad);
if(AliITSQADataMakerRec::AreEqual(content,0.)== kFALSE) {
AliWarning(Form(" Layer 3: %i good module(s) and %i good single drift regions didn't take data! \n",emptyactivemoduleperlayer[0] ,emptyactivedrperlayer[0] ));
AliWarning(Form(" Layer 4: %i good module(s) and %i good single drift regions didn't take data! \n",emptyactivemoduleperlayer[1] ,emptyactivedrperlayer[1] ));
//printf("========================= %d",AliQAv1::Instance(AliQAv1::GetDetIndex(GetName()))->IsEventSpecieSet(AliRecoParam::kCosmic));
- if((AliQAv1::Instance(AliQAv1::GetDetIndex("ITS")))->IsEventSpecieSet(AliRecoParam::kCosmic)==kFALSE){
+ // if((AliQAv1::Instance(AliQAv1::GetDetIndex("ITS")))->IsEventSpecieSet(AliRecoParam::kCosmic)==kFALSE){
+ if(AliRecoParam::ConvertIndex(GetEventSpecieForCheck())!=AliRecoParam::kCosmic){
results1.Form("%i good module(s) and %i good drift regions didn't take data!",emptydiff,emptydrdiff);
- if(neventsraw<numlimit)
- {
- results2.Form(" Events %d .Too few events.DO NOT CALL the Expert ",neventsraw);
- color=5;
- sddQACheckerValue=fHighSDDValue[AliQAv1::kWARNING];
- }
- else
- {
- results2.Form(" Events %d .Follow the TWiki instruction and call the Expert ",neventsraw);
- color=2;
- sddQACheckerValue=fHighSDDValue[AliQAv1::kERROR];
- }
+ if(neventsraw<numlimit) {
+ results2.Form(" Events %d .Too few events.DO NOT CALL the Expert ",neventsraw);
+ color=kYellow;
+ textcolor=kBlack;
+ sddQACheckerValue=fHighSDDValue[AliQAv1::kWARNING];
+ } else {
+ results2.Form(" Events %d. If PHYSICS, follow the TWiki instruction and call the Expert ",neventsraw);
+ color=kRed;
+ textcolor=kWhite;
+ sddQACheckerValue=fHighSDDValue[AliQAv1::kERROR];
+ }
}
else
- if((AliQAv1::Instance(AliQAv1::GetDetIndex("ITS")))->IsEventSpecieSet(AliRecoParam::kCosmic)==kTRUE)
- {
+ // if((AliQAv1::Instance(AliQAv1::GetDetIndex("ITS")))->IsEventSpecieSet(AliRecoParam::kCosmic)==kTRUE)
+ if(AliRecoParam::ConvertIndex(GetEventSpecieForCheck())==AliRecoParam::kCosmic)
+ {
numlimit=10000;
if(neventsraw<numlimit)
{
AliWarning(Form("This is a cosmic run. Some module and drift region are empty but all is OK. "));
- results1.Form("OK. Thi is a cosmic run. you need a lot of events");
+ results1.Form("OK. This is a cosmic run. you need a lot of events. Events %i",neventsraw);
results2.Form("%i good module(s) and %i good drift are empty! DO NOT CALL THE EXPERT",emptydiff,emptydrdiff);
- color=5;
+ color=kYellow;
+ textcolor=kBlack;
sddQACheckerValue=fHighSDDValue[AliQAv1::kWARNING];
}
else
{
- results1.Form("%i good module(s) and %i good drift region(s) have not recpoints!",emptydiff,emptydrdiff);
- results2.Form(" Events %d .Follow the TWiki instruction and call the Expert ",neventsraw);
- color=2;
+ results1.Form("%i good module(s) and %i good drift region(s) have no data!",emptydiff,emptydrdiff);
+ results2.Form(" Cosmic Events %d .Follow the TWiki instruction and call the Expert ",neventsraw);
+ color=kRed;
+ textcolor=kWhite;
sddQACheckerValue=fHighSDDValue[AliQAv1::kERROR];
}
}
AliInfo(Form("All the active modules (%i) and single drift regions (%i) are in acquisition. The number of excluded modules are %i and the excluded single drift regions are %i\n",active,activedriftregion,excluded,excludeddriftregion));
results1.Form("OK.");
results2.Form(" All active modules and drift regions in acquisition");
- color=3;
+ color=kGreen;
+ textcolor=kBlack;
sddQACheckerValue=fHighSDDValue[AliQAv1::kINFO];
}
if(exactive!=0||exactivedriftregion!=0){
AliError(Form("Layer 3: %i modules and %i single drift regions excluded from the acquisition took data. Active modules%i single drift region %i \n ",exactivemoduleperlayer[1],exactivedrperlayer[1],activemoduleperlayer[1],activedrperlayer[1]));
results1.Form("%i modules and %i drift region excluded from the acquisition took data",exactive,exactivedriftregion);
results2.Form("Follow the TWiki instructions and Call the SDD expert ");
- color=2;
+ color=kRed;
+ textcolor=kWhite;
sddQACheckerValue=fHighSDDValue[AliQAv1::kERROR];
}
if(excluded==exactive||excludeddriftregion==exactivedriftregion){
AliError(Form("All the modules (%d) or single drift regions (%d) excluded from the acquisition took data!\n Active modules %i \t Active drfift regions %i\n",excluded,excludeddriftregion,active,activedriftregion));
results1.Form("All the modules (%d) or drift regions (%d) excluded from the acquisition took data!",excluded,excludeddriftregion );
results2.Form("Follow the TWiki instructions and Call the SDD expert ");
- color=6;
+ color=kRed;
+ textcolor=kWhite;
sddQACheckerValue=fHighSDDValue[AliQAv1::kFATAL];
}
if(active==0||activedriftregion==0){
AliError(Form("No modules or single drift regions took data: excluded %i \t excluded active %i \n\t\t excluded single drift regions %i \t excluded active drift regions %i \n", excluded, exactive, excludeddriftregion, exactivedriftregion));
results1.Form("No modules or drift region took data: excluded modules %i excluded drift regions %i ", excluded, excludeddriftregion );
results2.Form("Follow the TWiki instructions and Call the SDD expert ");
- color=6;
+ color=kRed;
+ textcolor=kWhite;
sddQACheckerValue=fHighSDDValue[AliQAv1::kFATAL];
}
- TPaveText *pave[2];
+ //TPaveText *pave[2]={0,0};
next.Begin();
- while( (hdata=dynamic_cast<TH1* >(next())) )
- {
+ while( (hdata=dynamic_cast<TH1* >(next())) ) {
if (hdata){
- TString hname=hdata->GetName();
- if(hname.Contains("SDDphizL3") || hname.Contains("SDDphizL4")){
- if(hname.Contains("NORM"))continue;
- //AliInfo("========================================Found histo 11\n");
- Int_t lay=0;
- if(hname.Contains("3"))lay=0;
- else if(hname.Contains("4"))lay=1;
- pave[lay]=new TPaveText(0.3,0.88,0.9,0.99,"NDC");
- pave[lay]->AddText(results1.Data());
- pave[lay]->AddText(results2.Data());
- pave[lay]->SetFillColor(color);
- pave[lay]->SetBorderSize(1);
- pave[lay]->SetLineWidth(1);
- hdata->GetListOfFunctions()->Add(pave[lay]);
- }
- else
- if(hname.Contains("SDDRawDataCheck"))
- {
+ TString hname=hdata->GetName();
+ if(hname.Contains("SDDphizL3") || hname.Contains("SDDphizL4")){
+ if(hname.Contains("NORM"))continue;
+ //AliInfo("========================================Found histo 11\n");
+ TPaveText *ptext = ((TPaveText *)hdata->GetListOfFunctions()->FindObject("TPave"));
+ if(ptext) {
+ ptext->Clear();
+ ptext->AddText(results1.Data());
+ ptext->AddText(results2.Data());
+ ptext->SetFillColor(color);
+ ptext->SetTextColor(textcolor);
+ }
+ } else if(hname.Contains("SDDRawDataCheck")) {
- //AliInfo("========================================Found histo\n");
- ((TH1F*)hdata)->SetBinContent(5,active);
- ((TH1F*)hdata)->SetBinContent(6,filled);
- ((TH1F*)hdata)->SetBinContent(7,activedriftregion);
- ((TH1F*)hdata)->SetBinContent(8,filleddr);
- ((TH1F*)hdata)->SetBinContent(9,excluded);
- ((TH1F*)hdata)->SetBinContent(10,empty);
- ((TH1F*)hdata)->SetBinContent(11,excludeddriftregion);
- ((TH1F*)hdata)->SetBinContent(12,emptydr);
- ((TH1F*)hdata)->SetBinContent(13,exactive);
- ((TH1F*)hdata)->SetBinContent(14,emptydiff);
- ((TH1F*)hdata)->SetBinContent(15,exactivedriftregion);
- ((TH1F*)hdata)->SetBinContent(16,emptydr);
+ //AliInfo("========================================Found histo\n");
+ ((TH1F*)hdata)->SetBinContent(5,active);
+ ((TH1F*)hdata)->SetBinContent(6,filled);
+ ((TH1F*)hdata)->SetBinContent(7,activedriftregion);
+ ((TH1F*)hdata)->SetBinContent(8,filleddr);
+ ((TH1F*)hdata)->SetBinContent(9,excluded);
+ ((TH1F*)hdata)->SetBinContent(10,empty);
+ ((TH1F*)hdata)->SetBinContent(11,excludeddriftregion);
+ ((TH1F*)hdata)->SetBinContent(12,emptydr);
+ ((TH1F*)hdata)->SetBinContent(13,exactive);
+ ((TH1F*)hdata)->SetBinContent(14,emptydiff);
+ ((TH1F*)hdata)->SetBinContent(15,exactivedriftregion);
+ ((TH1F*)hdata)->SetBinContent(16,emptydrdiff);
- //layer 3
- ((TH1F*)hdata)->SetBinContent(19,activemoduleperlayer[0]);
- ((TH1F*)hdata)->SetBinContent(20,filledmodules[0]);
- ((TH1F*)hdata)->SetBinContent(21,activedrperlayer[0]);
- ((TH1F*)hdata)->SetBinContent(22,filleddriftregion[0]);
- ((TH1F*)hdata)->SetBinContent(23,excludedmoduleperlayer[0]);
- ((TH1F*)hdata)->SetBinContent(24,emptymodules[0]);
- ((TH1F*)hdata)->SetBinContent(25,excludeddrperlayer[0]);
- ((TH1F*)hdata)->SetBinContent(26,emptydriftregion[0]);
- ((TH1F*)hdata)->SetBinContent(27,exactivemoduleperlayer[0]);
- ((TH1F*)hdata)->SetBinContent(28,emptyactivemoduleperlayer[0]);
- ((TH1F*)hdata)->SetBinContent(29,activedrperlayer[0]);
- ((TH1F*)hdata)->SetBinContent(30,emptyactivedrperlayer[0]);
+ //layer 3
+ ((TH1F*)hdata)->SetBinContent(19,activemoduleperlayer[0]);
+ ((TH1F*)hdata)->SetBinContent(20,filledmodules[0]);
+ ((TH1F*)hdata)->SetBinContent(21,activedrperlayer[0]);
+ ((TH1F*)hdata)->SetBinContent(22,filleddriftregion[0]);
+ ((TH1F*)hdata)->SetBinContent(23,excludedmoduleperlayer[0]);
+ ((TH1F*)hdata)->SetBinContent(24,emptymodules[0]);
+ ((TH1F*)hdata)->SetBinContent(25,excludeddrperlayer[0]);
+ ((TH1F*)hdata)->SetBinContent(26,emptydriftregion[0]);
+ ((TH1F*)hdata)->SetBinContent(27,exactivemoduleperlayer[0]);
+ ((TH1F*)hdata)->SetBinContent(28,emptyactivemoduleperlayer[0]);
+ ((TH1F*)hdata)->SetBinContent(29,exactivedrperlayer[0]);
+ ((TH1F*)hdata)->SetBinContent(30,emptyactivedrperlayer[0]);
- //layer 4
- ((TH1F*)hdata)->SetBinContent(33,activemoduleperlayer[1]);
- ((TH1F*)hdata)->SetBinContent(34,filledmodules[1]);
- ((TH1F*)hdata)->SetBinContent(35,activedrperlayer[1]);
- ((TH1F*)hdata)->SetBinContent(36,filleddriftregion[1]);
- ((TH1F*)hdata)->SetBinContent(37,excludedmoduleperlayer[1]);
- ((TH1F*)hdata)->SetBinContent(38,emptymodules[1]);
- ((TH1F*)hdata)->SetBinContent(39,excludeddrperlayer[1]);
- ((TH1F*)hdata)->SetBinContent(40,emptydriftregion[1]);
- ((TH1F*)hdata)->SetBinContent(41,exactivemoduleperlayer[1]);
- ((TH1F*)hdata)->SetBinContent(42,emptyactivemoduleperlayer[1]);
- ((TH1F*)hdata)->SetBinContent(43,activedrperlayer[1]);
- ((TH1F*)hdata)->SetBinContent(44,emptyactivedrperlayer[1]);
- //break;
- }
- }//if hdata
+ //layer 4
+ ((TH1F*)hdata)->SetBinContent(33,activemoduleperlayer[1]);
+ ((TH1F*)hdata)->SetBinContent(34,filledmodules[1]);
+ ((TH1F*)hdata)->SetBinContent(35,activedrperlayer[1]);
+ ((TH1F*)hdata)->SetBinContent(36,filleddriftregion[1]);
+ ((TH1F*)hdata)->SetBinContent(37,excludedmoduleperlayer[1]);
+ ((TH1F*)hdata)->SetBinContent(38,emptymodules[1]);
+ ((TH1F*)hdata)->SetBinContent(39,excludeddrperlayer[1]);
+ ((TH1F*)hdata)->SetBinContent(40,emptydriftregion[1]);
+ ((TH1F*)hdata)->SetBinContent(41,exactivemoduleperlayer[1]);
+ ((TH1F*)hdata)->SetBinContent(42,emptyactivemoduleperlayer[1]);
+ ((TH1F*)hdata)->SetBinContent(43,exactivedrperlayer[1]);
+ ((TH1F*)hdata)->SetBinContent(44,emptyactivedrperlayer[1]);
+ //break;
+ }
+ }//if hdata
- }//end while
+ }//end while
}//end else
delete hmodule;
excluded++;
excludedmoduleperlayer[lay-3]++;
Double_t content=0.;
- Double_t contentlayer[2];
- for(Int_t i=0;i<2;i++)contentlayer[i]=0.;
+ //Double_t contentlayer[2];
+ //for(Int_t i=0;i<2;i++)contentlayer[i]=0.;
if(hmodule)content=hmodule->GetBinContent(imod+1);//if expert bit is active the histogram will be stored in the QA file otherwise the histogram will not be written on the logbook
// if(hlayer[lay-3]) contentlayer[lay-3]=hlayer[lay-3]->GetBinContent(det,lad);
if(AliITSQADataMakerRec::AreEqual(content,0.)== kFALSE) {
Int_t numlimits=1000;
results1.Form("%i good module(s) and %i good drift region(s) have not recpoints!",emptydiff,emptydrdiff);
- if((AliQAv1::Instance(AliQAv1::GetDetIndex("ITS")))->IsEventSpecieSet(AliRecoParam::kCosmic)==kFALSE)
- {
+ // if((AliQAv1::Instance(AliQAv1::GetDetIndex("ITS")))->IsEventSpecieSet(AliRecoParam::kCosmic)==kFALSE)
+ if(AliRecoParam::ConvertIndex(GetEventSpecieForCheck())!=AliRecoParam::kCosmic){
+
if(neventsrecpoints<numlimits)
{
results2.Form(" Events %d .Too few events.DO NOT CALL the Expert ",neventsrecpoints);
- color=5;
+ color=kYellow;
+ textcolor=kBlack;
sddQACheckerValue=fHighSDDValue[AliQAv1::kWARNING];
}
else
{
- results2.Form(" Events %d .Follow the TWiki instruction and call the Expert ",neventsrecpoints);
- color=2;
+ results2.Form(" Events %d .If PHYSICS, follow the TWiki instruction and call the Expert ",neventsrecpoints);
+ color=kRed;
+ textcolor=kWhite;
sddQACheckerValue=fHighSDDValue[AliQAv1::kERROR];
}
}
else
- if((AliQAv1::Instance(AliQAv1::GetDetIndex("ITS")))->IsEventSpecieSet(AliRecoParam::kCosmic)==kTRUE)
- {
+ //if((AliQAv1::Instance(AliQAv1::GetDetIndex("ITS")))->IsEventSpecieSet(AliRecoParam::kCosmic)==kTRUE)
+ if(AliRecoParam::ConvertIndex(GetEventSpecieForCheck())==AliRecoParam::kCosmic){
numlimit=10000;
- if(neventsrecpoints<numlimit)
+ if( neventsrecpoints<numlimit)
{
AliWarning(Form("This is a cosmic run. Some module and drift region are empty but all is OK. "));
- results1.Form("OK. Thi is a cosmic run. You need a lot of events");
+ results1.Form("OK. Thi is a cosmic run. You need a lot of events. Events %i",neventsrecpoints);
results2.Form("%i good module(s) and %i good drift are empty! DO NOT CALL THE EXPERT",emptydiff,emptydrdiff);
- color=5;
+ color=kYellow;
+ textcolor=kBlack;
sddQACheckerValue=fHighSDDValue[AliQAv1::kWARNING];
}
else
{
results1.Form("%i good module(s) and %i good drift region(s) have not recpoints!",emptydiff,emptydrdiff);
- results2.Form(" Events %d .Follow the TWiki instruction and call the Expert ",neventsrecpoints);
- color=2;
+ results2.Form("Cosmic Events %d .Follow the TWiki instruction and call the Expert ",neventsrecpoints);
+ color=kRed;
+ textcolor=kWhite;
sddQACheckerValue=fHighSDDValue[AliQAv1::kERROR];
}
}
AliInfo(Form("All the active modules (%i) and single drift regions (%i) are in acquisition. The number of excluded modules are %i and the excluded single drift regions are %i\n",active,activedriftregion,excluded,excludeddriftregion));
results1.Form("OK.");
results2.Form(" All active modules have recpoints");
- color=3;
+ color=kGreen;
+ textcolor=kBlack;
sddQACheckerValue=fHighSDDValue[AliQAv1::kINFO];
}
if(exactive!=0||exactivedriftregion!=0){
AliError(Form("Layer 3: %i modules and %i single drift regions excluded from the acquisition have recpoints. Active modules %i single drift region %i \n ",exactivemoduleperlayer[1],exactivedrperlayer[1],activemoduleperlayer[1],activedrperlayer[1]));
results1.Form("%i modules and %i drift region excluded from the acquisition have recpoints",exactive,exactivedriftregion);
results2.Form("Follow the TWiki instructions and Call the SDD expert ");
- color=2;
+ color=kRed;
+ textcolor=kWhite;
sddQACheckerValue=fHighSDDValue[AliQAv1::kERROR];
}
if(excluded==exactive||excludeddriftregion==exactivedriftregion){
AliError(Form("All the modules (%d) or single drift regions (%d) excluded from the acquisition have recpoints!\n Active modules %i \t Active drfift regions %i\n",excluded,excludeddriftregion,active,activedriftregion));
results1.Form("All the modules (%d) or drift regions (%d) excluded from the acquisition have recpoints!",excluded,excludeddriftregion );
results2.Form("Follow the TWiki instructions and Call the SDD expert ");
- color=6;
+ color=kRed;
+ textcolor=kWhite;
sddQACheckerValue=fHighSDDValue[AliQAv1::kFATAL];
}
if(active==0||activedriftregion==0){
AliError(Form("No modules or single drift regions have recpoints: excluded %i \t excluded active %i \n\t\t excluded single drift regions %i \t excluded active drift regions %i \n", excluded, exactive, excludeddriftregion, exactivedriftregion));
results1.Form("No modules or drift region have recpoints: excluded modules %i excluded drift regions %i ", excluded, excludeddriftregion );
results2.Form("Follow the TWiki instructions and Call the SDD expert ");
- color=6;
+ color=kRed;
+ textcolor=kWhite;
sddQACheckerValue=fHighSDDValue[AliQAv1::kFATAL];
}
- TPaveText *pave[2];
+ //TPaveText *pave[2]={0,0};
next.Begin();
while( (hdata=dynamic_cast<TH1* >(next())) )
if(hname.Contains("SDDModPatternL3RP") || hname.Contains("SDDModPatternL4RP")){
if(hname.Contains("NORM"))continue;
//AliInfo("========================================Found histo 11\n");
- Int_t lay=0;
- if(hname.Contains("3"))lay=0;
- else if(hname.Contains("4"))lay=1;
- pave[lay]=new TPaveText(0.3,0.88,0.9,0.99,"NDC");
- pave[lay]->AddText(results1.Data());
- pave[lay]->AddText(results2.Data());
- pave[lay]->SetFillColor(color);
- pave[lay]->SetBorderSize(1);
- pave[lay]->SetLineWidth(1);
- hdata->GetListOfFunctions()->Add(pave[lay]);
- }
+ TPaveText *ptext = ((TPaveText *)hdata->GetListOfFunctions()->FindObject("TPave"));
+ if(ptext) {
+ ptext->Clear();
+ ptext->AddText(results1.Data());
+ ptext->AddText(results2.Data());
+ ptext->SetFillColor(color);
+ ptext->SetTextColor(textcolor);
+ }
+ }
else
if(hname.Contains("SDDRecPointCheck"))
{
((TH1F*)hdata)->SetBinContent(13,exactive);
((TH1F*)hdata)->SetBinContent(14,emptydiff);
((TH1F*)hdata)->SetBinContent(15,exactivedriftregion);
- ((TH1F*)hdata)->SetBinContent(16,emptydr);
+ ((TH1F*)hdata)->SetBinContent(16,emptydrdiff);
//layer 3
((TH1F*)hdata)->SetBinContent(19,activemoduleperlayer[0]);
((TH1F*)hdata)->SetBinContent(26,emptydriftregion[0]);
((TH1F*)hdata)->SetBinContent(27,exactivemoduleperlayer[0]);
((TH1F*)hdata)->SetBinContent(28,emptyactivemoduleperlayer[0]);
- ((TH1F*)hdata)->SetBinContent(29,activedrperlayer[0]);
+ ((TH1F*)hdata)->SetBinContent(29,exactivedrperlayer[0]);
((TH1F*)hdata)->SetBinContent(30,emptyactivedrperlayer[0]);
//layer 4
((TH1F*)hdata)->SetBinContent(42,emptydriftregion[1]);
((TH1F*)hdata)->SetBinContent(43,exactivemoduleperlayer[1]);
((TH1F*)hdata)->SetBinContent(44,emptyactivemoduleperlayer[1]);
- ((TH1F*)hdata)->SetBinContent(45,activedrperlayer[1]);
+ ((TH1F*)hdata)->SetBinContent(45,exactivedrperlayer[1]);
((TH1F*)hdata)->SetBinContent(46,emptyactivedrperlayer[1]);
+ //hdata->GetListOfFunctions()->Add(pave[0]);
}
}//if hadata
//sddQACheckerValue=1.;
}//end recpoint list uid = 20
- else if(uidrec==40)
+ if(uidrec==40)
{
//digitsr
if (list->GetEntries() == 0){
sddQACheckerValue += fStepBitSDD[AliQAv1::kINFO];
}//end adc counts bindistribution
}//end entries !=0
+
}//end hdata
}//end while
}//end else
}//end switch
fCalibration=NULL;
- if(hdata) delete hdata;
-
-
return sddQACheckerValue;
}
void AliITSQASDDChecker::SetStepBit(const Double_t *steprange)
{
//set the values of the step bit for each QA bit range calculated in the AliITSQAChecker class
- fStepBitSDD = new Double_t[AliQAv1::kNBIT];
+ //if(fStepBitSDD){/*delete fStepBitSDD;*/ fStepBitSDD=NULL;}
+ //fStepBitSDD = new Double_t[AliQAv1::kNBIT];
for(Int_t bit=0;bit<AliQAv1::kNBIT;bit++)
{
fStepBitSDD[bit]=steprange[bit];
void AliITSQASDDChecker::SetSDDLimits(const Float_t *lowvalue, const Float_t * highvalue)
{
//set the low and high values in for each QA bit range calculated in the AliITSQAChecker class
- fLowSDDValue = new Float_t[AliQAv1::kNBIT];
- fHighSDDValue= new Float_t[AliQAv1::kNBIT];
+ // fLowSDDValue = new Float_t[AliQAv1::kNBIT];
+ // fHighSDDValue= new Float_t[AliQAv1::kNBIT];
for(Int_t bit=0;bit<AliQAv1::kNBIT;bit++)
{
{
//create the image for raws and recpoints. In the other case, the default methodof CheckerBase class will be used
//
- Bool_t rval=kFALSE;
- fImage=(TCanvas**)AliQAChecker::Instance()->GetDetQAChecker(0)->GetImage();
-
+ Bool_t rval=kFALSE;
+ fImage=(TCanvas**)AliQAChecker::Instance()->GetDetQAChecker(0)->GetImage();
switch(task)
{
case AliQAv1::kRAWS:{
}
break;
case AliQAv1::kNULLTASKINDEX:; case AliQAv1::kNTASKINDEX:
- {AliWarning(Form("No histograms for this task ( %s ) \n", AliQAv1::GetTaskName(task).Data())); rval=kFALSE;}
+ {
+ Int_t ts=(Int_t)task;
+ AliWarning(Form("No histograms for this task number %d \n", ts));
+ rval=kFALSE;
+ }
break;
}
return rval;
{
// MakeSDDRawsImage: raw data QA plots
- for (Int_t esIndex = 0 ; esIndex < AliRecoParam::kNSpecies ; esIndex++) {
- //printf("-------------------------> %i \n", esIndex);
- if (! AliQAv1::Instance(AliQAv1::GetDetIndex(GetName()))->IsEventSpecieSet(AliRecoParam::ConvertIndex(esIndex)) || list[esIndex]->GetEntries() == 0)
- {//printf ("Nothing for %s \n", AliRecoParam::GetEventSpecieName(esIndex));
- continue;
- }
- else{
- const Char_t * title = Form("QA_%s_%s_%s", GetName(), AliQAv1::GetTaskName(task).Data(), AliRecoParam::GetEventSpecieName(esIndex)) ;
- if ( !fImage[esIndex] ) {
- fImage[esIndex] = new TCanvas(title, title,1280,980) ;
- }
-
- fImage[esIndex]->Clear() ;
- fImage[esIndex]->SetTitle(title) ;
- fImage[esIndex]->cd();
-
- TPaveText someText(0.015, 0.015, 0.98, 0.98);
- someText.AddText(title);
- someText.Draw();
- fImage[esIndex]->Print(Form("%s%s%d.%s", AliQAv1::GetImageFileName(), AliQAv1::GetModeName(mode), AliQAChecker::Instance()->GetRunNumber(), AliQAv1::GetImageFileFormat()), "ps") ;
- fImage[esIndex]->Clear() ;
- Int_t nx =2; //TMath::Nint(TMath::Sqrt(nImages));
- Int_t ny =2; // nx ;
- //if (nx < TMath::Sqrt(nImages))
- //ny++ ;
- fImage[esIndex]->Divide(nx, ny) ;
- TIter nexthist(list[esIndex]) ;
- TH1* hist = NULL ;
- Int_t npad = 1 ;
- fImage[esIndex]->cd(npad);
- fImage[esIndex]->cd(npad)->SetBorderMode(0) ;
- while ( (hist=static_cast<TH1*>(nexthist())) ) {
- //gPad=fImage[esIndex]->cd(npad)->GetPad(npad);
- TString cln(hist->ClassName()) ;
- if ( ! cln.Contains("TH") )
- continue ;
+ for (Int_t esIndex = 0 ; esIndex < AliRecoParam::kNSpecies ; esIndex++) {
+ //printf("-------------------------> %i \n", esIndex);
+ if (! AliQAv1::Instance(AliQAv1::GetDetIndex(GetName()))->IsEventSpecieSet(AliRecoParam::ConvertIndex(esIndex)) || list[esIndex]->GetEntries() == 0) {
+ //printf ("Nothing for %s \n", AliRecoParam::GetEventSpecieName(esIndex));
+ continue;
+ } else {
+ const Char_t * title = Form("QA_%s_%s_%s", GetName(), AliQAv1::GetTaskName(task).Data(), AliRecoParam::GetEventSpecieName(esIndex)) ;
+ if ( !fImage[esIndex] ) {
+ fImage[esIndex] = new TCanvas(title, title,1280,980) ;
+ }
+ fImage[esIndex]->Clear() ;
+ fImage[esIndex]->SetTitle(title) ;
+ fImage[esIndex]->cd();
+ fPaveText[esIndex] = new TPaveText(0.015, 0.015, 0.98, 0.98);
+ fPaveText[esIndex]->AddText(title);
+ fPaveText[esIndex]->Draw();
+ fImage[esIndex]->Print(Form("%s%s%d.%s", AliQAv1::GetImageFileName(), AliQAv1::GetModeName(mode), AliQAChecker::Instance()->GetRunNumber(), AliQAv1::GetImageFileFormat()), "ps") ;
+ fImage[esIndex]->Clear() ;
+ Int_t nx =2;//TMath::Nint(TMath::Sqrt(nImages));//2
+ Int_t ny =3;//nx ; //2
+ // if (nx < TMath::Sqrt(nImages))
+ // ny++ ;
+ fImage[esIndex]->Divide(nx, ny) ;
+ TIter nexthist(list[esIndex]) ;
+ Int_t npad = 1 ;
+ fImage[esIndex]->cd(npad);
+ fImage[esIndex]->cd(npad)->SetBorderMode(0) ;
+ Int_t nhist = 0;
+ while ( 1 ) {
+ TH1* hist = static_cast<TH1*>(nexthist());
+ if(hist == NULL) break;
+ nhist++;
+ TString hname(hist->GetName());
+
+ //gPad=fImage[esIndex]->cd(npad)->GetPad(npad);
+ TString cln(hist->ClassName()) ;
+ if ( ! cln.Contains("TH") )
+ continue ;
- if(hist->TestBit(AliQAv1::GetImageBit())) {
- hist->GetXaxis()->SetTitleSize(0.02);
- hist->GetYaxis()->SetTitleSize(0.02);
- hist->GetXaxis()->SetLabelSize(0.02);
- hist->GetYaxis()->SetLabelSize(0.02);
- if(cln.Contains("TH2"))
- {
- gPad->SetRightMargin(0.15);
- gPad->SetLeftMargin(0.05);
- hist->SetStats(0);
- hist->SetOption("colz") ;
- //hist->GetListOfFunctions()->FindObject("palette")->SetLabelSize(0.025);
- //gPad->Update();
- }
- hist->DrawCopy() ;
- fImage[esIndex]->cd(++npad) ;
- fImage[esIndex]->cd(npad)->SetBorderMode(0) ;
- }
+ if(hist->TestBit(AliQAv1::GetImageBit())) {
+ hist->GetXaxis()->SetTitleSize(0.04);
+ hist->GetYaxis()->SetTitleSize(0.04);
+ hist->GetXaxis()->SetLabelSize(0.02);
+ hist->GetYaxis()->SetLabelSize(0.02);
+ if(cln.Contains("TH2")) {
+ gPad->SetRightMargin(0.15);
+ gPad->SetLeftMargin(0.05);
+ hist->SetStats(0);
+ hist->SetOption("colz") ;
+
+ ////hist->GetListOfFunctions()->FindObject("palette")->SetLabelSize(0.025);
+ //gPad->Update();
+ }
+ hist->DrawCopy();
+ fImage[esIndex]->cd(++npad) ;
+ fImage[esIndex]->cd(npad)->SetBorderMode(0) ;
+ }
+ }
+ fImage[esIndex]->Print(Form("%s%s%d.%s", AliQAv1::GetImageFileName(), AliQAv1::GetModeName(mode), AliQAChecker::Instance()->GetRunNumber(), AliQAv1::GetImageFileFormat()), "ps") ;
+ }
}
- fImage[esIndex]->Print(Form("%s%s%d.%s", AliQAv1::GetImageFileName(), AliQAv1::GetModeName(mode), AliQAChecker::Instance()->GetRunNumber(), AliQAv1::GetImageFileFormat()), "ps") ;
- }
- }
- return kTRUE;
+ return kTRUE;
}
fImage[esIndex]->Print(Form("%s%s%d.%s", AliQAv1::GetImageFileName(), AliQAv1::GetModeName(mode), AliQAChecker::Instance()->GetRunNumber(), AliQAv1::GetImageFileFormat()), "ps") ;
fImage[esIndex]->Clear() ;
Int_t nx =2; //TMath::Nint(TMath::Sqrt(nImages));
- Int_t ny =4; // nx ;
+ Int_t ny =6; // nx ;
//if (nx < TMath::Sqrt(nImages))
//ny++ ;
fImage[esIndex]->Divide(nx, ny) ;
while ( (hist=static_cast<TH1*>(nexthist())) ) {
//gPad=fImage[esIndex]->cd(npad)->GetPad(npad);
TString cln(hist->ClassName()) ;
- //printf("=====================> Class name %s \n",cln.Data());
+
+ TString hname(hist->GetName());
+
+ //printf("=====================> Class name %s \n",cln.Data());
if ( ! cln.Contains("TH") )
continue ;
if(hist->TestBit(AliQAv1::GetImageBit())) {
- hist->GetXaxis()->SetTitleSize(0.02);
- hist->GetYaxis()->SetTitleSize(0.02);
+ hist->GetXaxis()->SetTitleSize(0.04);
+ hist->GetYaxis()->SetTitleSize(0.04);
hist->GetXaxis()->SetLabelSize(0.02);
hist->GetYaxis()->SetLabelSize(0.02);
if(cln.Contains("TH1"))
{
- hist->SetFillColor(kOrange+7);
+ if(!hname.Contains("Check")) hist->SetFillColor(kOrange+7);
//SetFrameFillColor(kAzure-9);
//hist->DrawCopy() ;
}
gPad->SetLeftMargin(0.05);
hist->SetStats(0);
hist->SetOption("colz") ;
- // TPaletteAxis *paletta =(TPaletteAxis*)hist->GetListOfFunctions()->FindObject("palette");
+ //// TPaletteAxis *paletta =(TPaletteAxis*)hist->GetListOfFunctions()->FindObject("palette");
//paletta->SetLabelSize(0.025);
//gPad->Update();
}
- hist->DrawCopy();
- fImage[esIndex]->cd(++npad) ;
- fImage[esIndex]->cd(npad)->SetBorderMode(0) ;
- }
+
+ hist->DrawCopy();
+ fImage[esIndex]->cd(++npad) ;
+ fImage[esIndex]->cd(npad)->SetBorderMode(0) ;
+ }
}
fImage[esIndex]->Print(Form("%s%s%d.%s", AliQAv1::GetImageFileName(), AliQAv1::GetModeName(mode), AliQAChecker::Instance()->GetRunNumber(), AliQAv1::GetImageFileFormat()), "ps") ;
}
- // }
return kTRUE;
}
+