#include "AliLog.h"
#include "AliCDBEntry.h"
#include "AliCDBManager.h"
-//#include "AliQAManager.h"
-//#include "AliQACheckerBase.h"
-//#include "TSystem.h"
#include "AliITSCalibrationSDD.h"
#include "AliITSgeomTGeo.h"
-//#include "AliITSQAChecker.h"
ClassImp(AliITSQASDDChecker)
AliDebug(1,Form("AliITSQASDDChecker called with offset: %d\n", fSubDetOffset));
- Double_t test = 0.;
+ Double_t SDDQACheckerValue = 0.;
TH1 *hdata=NULL;
Double_t entries=0.;
Double_t entries2[2];
{
AliError("Calibration object retrieval failed! SDD will not be processed");
fCalibration = NULL;
- test= fHighSDDValue[AliQAv1::kWARNING];
+ SDDQACheckerValue= fHighSDDValue[AliQAv1::kWARNING];
}
fCalibration = (TObjArray *)calibSDD->GetObject();
}
}
- AliInfo("Calib SDD Created\n ");
+ AliInfo("Calib SDD Created\n ");
- switch(index)
+ TIter next(list);
+ TH1 *hmodule=NULL;
+ TH2 *hlayer[2];
+
+ switch(index)
{
case AliQAv1::kRAW:
AliInfo(Form("Check on %s\n",AliQAv1::GetAliTaskName(index)));
-
- if (list->GetEntries() == 0){ //check if the list is empty
- //printf("test = %f \t value %f\n",test,fHighSDDValue[AliQAv1::kFATAL]);
- test=test+fHighSDDValue[AliQAv1::kFATAL];
+ if(fRawModulePattern) { delete fRawModulePattern; fRawModulePattern = 0; }
+ if(fRawL3Pattern) { delete fRawL3Pattern; fRawL3Pattern = 0; }
+ if(fRawL4Pattern) { delete fRawL4Pattern; fRawL4Pattern = 0; }
+ if (list->GetEntries() == 0){
+ SDDQACheckerValue += fHighSDDValue[AliQAv1::kFATAL];
break;
- }//end if getentries
- else{
- TIter next(list);
- Int_t offset = 0;
- for(offset =0;offset < fSubDetOffset; offset++){hdata = dynamic_cast<TH1*>(next());}//end for
- Int_t emptymodules[2];
- Int_t filledmodules[2];
- Int_t emptyladders[2];
- Int_t filledladders[2];
- for(Int_t i=0;i<2;i++){
- emptymodules[i]=0;
- filledmodules[i]=0;
- emptyladders[i]=0;
- filledladders[i]=0;
- }
- TH1 *hmodule=NULL;
- TH2 *hlayer[2];
- for(Int_t i=0;i<2;i++)hlayer[i]=NULL;
- while( (hdata = dynamic_cast<TH1* >(next())) ){
- if (hdata){
- TString hname=hdata->GetName();
- if(hname.Contains("SDDchargeMap"))continue;
- if(hname.Contains("SDDModPattern")){
- if(hname.Contains("NORM")) continue;
- else{
- hmodule=hdata;
- entries= hdata->GetEntries();
- if(AliITSQADataMakerRec::AreEqual(entries,0.)){
- AliWarning(Form("===================>>>>>> No entries in %s \n",hname.Data()));
- //printf("test = %f \t value %f\n",test,fHighSDDValue[AliQAv1::kFATAL]);
- test=test+fStepBitSDD[AliQAv1::kFATAL];
- }//endif entries
- else{
- int modmax=hdata->GetNbinsX();
- Int_t empty=0;
- Int_t filled=0;
- Double_t content=0;
- for(Int_t i=1;i<=modmax;i++){
- content=hdata->GetBinContent(i);
- if(AliITSQADataMakerRec::AreEqual(content,0.)){empty++;}
- else if((AliITSQADataMakerRec::AreEqual(content,0.)==kFALSE)){filled++;}
- }//end for
- AliInfo(Form(" %s : empty modules %i \t filled modules %i",hname.Data(), empty, filled));
- }//end else pattern entries !=0
- }//end if norm
- }//end if modpattern
- else if(hname.Contains("SDDphizL3")||hname.Contains("SDDphizL4")){
- if(hname.Contains("NORM")) continue;
+ }
+ Int_t emptymodules[2];
+ Int_t filledmodules[2];
+ Int_t emptyladders[2];
+ Int_t filledladders[2];
+ for(Int_t i=0;i<2;i++){
+ emptymodules[i]=0;
+ filledmodules[i]=0;
+ emptyladders[i]=0;
+ filledladders[i]=0;
+ }
+ for(Int_t i=0;i<2;i++)hlayer[i]=NULL;
+ while( (hdata = dynamic_cast<TH1* >(next())) ){
+ if (hdata){
+ TString hname=hdata->GetName();
+ if(hname.Contains("SDDchargeMap"))continue;
+ if(hname.Contains("SDDModPattern")){
+ if(hname.Contains("NORM")) {
+
+ hmodule=hdata;
+ entries= hdata->GetEntries();
+ if(AliITSQADataMakerRec::AreEqual(entries,0.)){
+ AliWarning(Form("===================>>>>>> No entries in %s \n",hname.Data()));
+ SDDQACheckerValue += fStepBitSDD[AliQAv1::kFATAL];
+ }//endif entries
else{
- Int_t layer=0;
- if(hname.Contains("3"))layer=0;
- else if(hname.Contains("4"))layer=1;
- entries2[layer]=hdata->GetEntries();
- if(entries2[layer]==0){
- AliWarning(Form("===================>>>>>> No entries in %s \n",hname.Data()));
- //printf("test = %f \t value %f\n",test,fStepBitSDD[AliQAv1::kFATAL]);
- test=test+fStepBitSDD[AliQAv1::kFATAL];
- if(AliITSQADataMakerRec::AreEqual(entries,0.)){
- //return test;
- //break;
- }
- }//end if getentries
- else{
- Int_t layer1=0;
- if(hname.Contains("3"))layer1=0;
- else if(hname.Contains("4"))layer1=1;
- TH2* htemp=dynamic_cast<TH2*>(hdata);
- hlayer[layer1]=(TH2*)htemp->Clone();
- char newname[50];
- sprintf(newname,"%s_copy",hname.Data());
- hlayer[layer1]->SetName(newname);
- 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[layer], filledladders[layer]));//end else layer 3
- delete hproj;
- hproj=NULL;
- //delete htemp;
- //htemp=NULL;
- }//end else entries !=0
- }//end check on norm
- }//end if layer 3
- }//end if hdata
- }//end while
- if(AliITSQADataMakerRec::AreEqual(entries,0.)&&AliITSQADataMakerRec::AreEqual(entries2[0],0.)&&AliITSQADataMakerRec::AreEqual(entries2[1],0.)) break;
- else{
- if(hmodule||(hlayer[0]&&hlayer[1])){
- Int_t excluded=0;
- Int_t active=0;
- Int_t exactive=0;//excluded but taking data
- //AliITSCalibrationSDD *cal;
- for(Int_t imod=0;imod<fgknSDDmodules;imod++){
- Int_t lay=0;
- Int_t lad=0;
- Int_t det=0;
- Int_t module=0;
- module=imod+fgkmodoffset;
- AliITSCalibrationSDD * cal=(AliITSCalibrationSDD*)fCalibration->At(imod);
- if(cal==0) { delete cal; continue;}
- AliITSgeomTGeo::GetModuleId(module,lay,lad,det);
- if (cal->IsBad()){
- excluded++;
- Double_t content=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 has been created
- contentlayer[lay-3]=hlayer[lay-3]->GetBinContent(det,lad);
- if(AliITSQADataMakerRec::AreEqual(content,0.)==kFALSE||AliITSQADataMakerRec::AreEqual(contentlayer[lay-3],0.)==kFALSE)
- {
- filledmodules[lay-3]++;
- AliWarning(Form("The module %d (layer %i, ladder %i det %i ) excluded from the acquisition, took data \n ",module,lay,lad,det));
- exactive++;
- }
- else if(AliITSQADataMakerRec::AreEqual(content,0.)&&AliITSQADataMakerRec::AreEqual(contentlayer[lay-3],0.))emptymodules[lay-3]++;
- //AliInfo(Form("The module %d (layer %i, ladder %i det %i ) is bad, content %f content layer %f filled modules position %d ",module,lay,lad,det,contentlayer[lay-3],content,lay-3) );
- }//end if bad
- else
- {
- Double_t contentgood=0.;
- active++;
- //printf("lay: %i\t det %i \t lad %i \n",lay,det,lad );
- contentgood=hlayer[lay-3]->GetBinContent(det,lad);
- if(AliITSQADataMakerRec::AreEqual(contentgood,0.)){emptymodules[lay-3]++;}
- else {filledmodules[lay-3]++;}
- }
-
- //delete cal;
- //cal=NULL;
- }//end for
- for(Int_t i=0;i<2;i++){AliInfo(Form("Layer %i \tempty modules %i \t filled modules %i\n", i+3,emptymodules[i], filledmodules[i]));}//end else layers
- if(exactive==0){
- AliInfo(Form("All the active modules (%i) are in acquisition. The number of excluded modules are %i \n",active,excluded));
- test=fHighSDDValue[AliQAv1::kINFO];}
- if(exactive!=0){
- AliWarning(Form("%i modules excluded from the acquisition took data. Active modules%i \n ",exactive,active));
- test=fHighSDDValue[AliQAv1::kWARNING];
- }
- if(excluded==exactive){
- AliWarning(Form("All the modules exluded from the acquisition (%d) took data! Active modules %i\n",excluded,active));
- test=fHighSDDValue[AliQAv1::kWARNING];
+ int modmax=hdata->GetNbinsX();
+ Int_t empty=0;
+ Int_t filled=0;
+ Double_t content=0;
+ for(Int_t i=1;i<=modmax;i++){
+ content=hdata->GetBinContent(i);
+ if(AliITSQADataMakerRec::AreEqual(content,0.)) empty++;
+ else filled++;
+ }//end for
+ AliInfo(Form(" %s : empty modules %i \t filled modules %i",hname.Data(), empty, filled));
+ }//end else pattern entries !=0
+ }
+ }
+
+ if(hname.Contains("_RelativeOccupancy")) {
+ fRawModulePattern = (TH1F *) hdata;
+ Float_t threshold = fRawModulePattern->GetMean() + 4*fRawModulePattern->GetRMS();
+ if(hname.Contains("L3")) AliInfo(Form("SDD check number 1: L3 mean: %f, rms: ,%f",fRawModulePattern->GetMean(),fRawModulePattern->GetRMS()));
+ if(hname.Contains("L4")) AliInfo(Form("SDD check number 2: L4 mean: %f, rms: ,%f",fRawModulePattern->GetMean(),fRawModulePattern->GetRMS()));
+ Int_t aboveThreshold = 0;
+ for(Int_t k=0; k<= fRawModulePattern->GetNbinsX(); k++) {
+ if(fRawModulePattern->GetBinLowEdge(k) > threshold) aboveThreshold += (int)(fRawModulePattern->GetBinContent(k));
}
- if(active==0){
- AliWarning(Form("No modules took data: excluded %i \t exactive %i \n", excluded, exactive));
- test=fHighSDDValue[AliQAv1::kFATAL];
+ Float_t fractionAboveThreshold = ((Float_t) aboveThreshold)/fRawModulePattern->GetEntries();
+ if(hname.Contains("L3")) AliInfo(Form("SDD check number 1, L3: Raw fractionAboveThreshold: %f",fractionAboveThreshold));
+ if(hname.Contains("L4")) AliInfo(Form("SDD check number 2, L4: Raw fractionAboveThreshold: %f",fractionAboveThreshold));
+ if(fractionAboveThreshold > fThresholdForRelativeOccupancy) {
+ SDDQACheckerValue=fHighSDDValue[AliQAv1::kWARNING];
+ if(hname.Contains("L3")) AliInfo(Form("SDD check number 1: Set Warning (L3 Raw)"));
+ if(hname.Contains("L4")) AliInfo(Form("SDD check number 2: Set Warning (L4 Raw)"));
}
- for(Int_t i=0;i<2;i++)
- {
- delete hlayer[i];
- hlayer[i]=NULL;
+ }
+
+ if(hname.Contains("SDDphizL3") || hname.Contains("SDDphizL4")){
+ if(!hname.Contains("NORM")) {
+ if(hname.Contains("L3")) {
+ fRawL3Pattern = (TH2F *) hdata;
}
- }//end else
+ if(hname.Contains("L4")) {
+ fRawL4Pattern = (TH2F *) hdata;
+ }
+ } else{
+ Int_t layer=0;
+ if(hname.Contains("3"))layer=0;
+ else if(hname.Contains("4"))layer=1;
+ entries2[layer]=hdata->GetEntries();
+ if(entries2[layer]==0){
+ AliWarning(Form("===================>>>>>> No entries in %s \n",hname.Data()));
+ SDDQACheckerValue += fStepBitSDD[AliQAv1::kFATAL];
+ if(AliITSQADataMakerRec::AreEqual(entries,0.)){
+ }
+ }//end if getentries
+ else{
+ Int_t layer1=0;
+ if(hname.Contains("3"))layer1=0;
+ else if(hname.Contains("4"))layer1=1;
+ TH2* htemp=dynamic_cast<TH2*>(hdata);
+ hlayer[layer1]=(TH2*)htemp->Clone();
+ char newname[50];
+ sprintf(newname,"%s_copy",hname.Data());
+ hlayer[layer1]->SetName(newname);
+ 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[layer], filledladders[layer]));//end else layer 3
+ delete hproj;
+ hproj=NULL;
+ }//end else entries !=0
+ }//end check on norm
+ }//end if layer 3
+ }//end if hdata
+ }//end while
+ if(AliITSQADataMakerRec::AreEqual(entries,0.)&&AliITSQADataMakerRec::AreEqual(entries2[0],0.)&&AliITSQADataMakerRec::AreEqual(entries2[1],0.)) break;
+ //else{
+ if(hmodule || (hlayer[0] && hlayer[1])){
+ Int_t excluded=0;
+ Int_t active=0;
+ Int_t exactive=0;//excluded but taking data
+ for(Int_t imod=0;imod<fgknSDDmodules;imod++){
+ Int_t lay=0;
+ Int_t lad=0;
+ Int_t det=0;
+ Int_t module=0;
+ module=imod+fgkmodoffset;
+ AliITSCalibrationSDD * cal=(AliITSCalibrationSDD*)fCalibration->At(imod);
+ if(cal==0) { delete cal; continue;}
+ AliITSgeomTGeo::GetModuleId(module,lay,lad,det);
+ if (cal->IsBad()){
+ excluded++;
+ Double_t content=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 has been created
+ contentlayer[lay-3]=hlayer[lay-3]->GetBinContent(det,lad);
+ if(AliITSQADataMakerRec::AreEqual(content,0.)== kFALSE || AliITSQADataMakerRec::AreEqual(contentlayer[lay-3],0.)==kFALSE) {
+ filledmodules[lay-3]++;
+ AliWarning(Form("The module %d (layer %i, ladder %i det %i ) excluded from the acquisition, took data \n ",module,lay,lad,det));
+ exactive++;
+ } else if(AliITSQADataMakerRec::AreEqual(content,0.) && AliITSQADataMakerRec::AreEqual(contentlayer[lay-3],0.))
+ emptymodules[lay-3]++;
+ } else {
+ Double_t contentgood=0.;
+ active++;
+ contentgood=hlayer[lay-3]->GetBinContent(det,lad);
+ if(AliITSQADataMakerRec::AreEqual(contentgood,0.))
+ emptymodules[lay-3]++;
+ else
+ filledmodules[lay-3]++;
+ }
+ }//end for
+ for(Int_t i=0;i<2;i++){AliInfo(Form("Layer %i \tempty modules %i \t filled modules %i\n", i+3,emptymodules[i], filledmodules[i]));}//end else layers
+ if(exactive==0){
+ AliInfo(Form("All the active modules (%i) are in acquisition. The number of excluded modules are %i \n",active,excluded));
+ SDDQACheckerValue=fHighSDDValue[AliQAv1::kINFO];
}
- }//end getentries !=0
- //delete calSDD;
+ if(exactive!=0){
+ AliWarning(Form("%i modules excluded from the acquisition took data. Active modules%i \n ",exactive,active));
+ SDDQACheckerValue=fHighSDDValue[AliQAv1::kWARNING];
+ }
+ if(excluded==exactive){
+ AliWarning(Form("All the modules excluded from the acquisition (%d) took data! Active modules %i\n",excluded,active));
+ SDDQACheckerValue=fHighSDDValue[AliQAv1::kWARNING];
+ }
+ if(active==0){
+ AliWarning(Form("No modules took data: excluded %i \t exactive %i \n", excluded, exactive));
+ SDDQACheckerValue=fHighSDDValue[AliQAv1::kFATAL];
+ }
+ for(Int_t i=0;i<2;i++) {
+ delete hlayer[i];
+ hlayer[i]=NULL;
+ }
+ }//end else
+ //}
- //delete calibSDD;
- //delete calSDD;
-
break;
+
case AliQAv1::kNULLTASK:
AliInfo(Form("No Check on %s\n",AliQAv1::GetAliTaskName(index)));
- test=1.;
+ SDDQACheckerValue=1.;
break;
+
case AliQAv1::kREC:
- /*
AliInfo(Form("Check on %s\n",AliQAv1::GetAliTaskName(index)));
- //TH1*hdata=NULL;
- if(list->GetUniqueID()==40){
- if (list->GetEntries() == 0){ //check if the list is empty
- //printf("test = %f \t value %f\n",test,fHighSDDValue[AliQAv1::kFATAL]);
- test=fHighSDDValue[AliQAv1::kFATAL];
-
- }//end if getentries
- else{
+ if(fRecModulePattern) { delete fRecModulePattern; fRecModulePattern = 0; }
+ if(fRecL3Pattern) { delete fRecL3Pattern; fRecL3Pattern = 0; }
+ if(fRecL4Pattern) { delete fRecL4Pattern; fRecL4Pattern = 0; }
+ if(fModulePatternRatio) { delete fModulePatternRatio; fModulePatternRatio = 0; }
+ if (list->GetEntries() == 0){ //check if the list is empty
+ //printf("SDDQACheckerValue = %f \t value %f\n",SDDQACheckerValue,fHighSDDValue[AliQAv1::kFATAL]);
+ SDDQACheckerValue=fHighSDDValue[AliQAv1::kFATAL];
+
+ }//end if getentries
- TIter next(list);
-
- while( hdata = dynamic_cast<TH1* >(next()) ){
- if (hdata){
- if(AliITSQADataMakerRec::AreEqual(hdata->GetEntries(),0.))test=test+fStepBitSDD[AliQAv1::kFATAL];
- else
- {
- TString hname=hdata->GetName();
- if(hname.Contains("FSE"))continue;
- else if(hname.Contains("SDDLay3TotCh")||hname.Contains("SDDLay4TotCh")){
- Double_t meancharge=hdata->GetMean();
- Double_t rmscharge=hdata->GetRMS();
- AliInfo(Form("%s : Mean value:%f RMS value%f \n ",hname.Data(),meancharge,rmscharge));
- test=test+fStepBitSDD[AliQAv1::kINFO];
- }//end if name charge
- else if(hname.Contains("SDDGlobalCoordDistribYX" ))
- {
- test=test+fStepBitSDD[AliQAv1::kINFO];
- }//end xy
- else if(hname.Contains("SDDGlobalCoordDistribRZ"))
- {
-
- test=test+fStepBitSDD[AliQAv1::kINFO];
- } //end rz
- else if(hname.Contains("SDDGlobalCoordDistribL3PHIZ" )||hname.Contains("SDDGlobalCoordDistribL3PHIZ"))
- {
-
- }//end phiz
- else if(hname.Contains("SDDModPatternRP"))
- {
-
- //to do :se raws
-
- }//modpattern
- else if(hname.Contains("SDDModPatternL3RP")||hname.Contains("SDDModPatternL4RP") )
- {
- //to do: see raws
- }//end ladpattern
- else if(hname.Contains("SDDLocalCoordDistrib"))
- {
- test=test+fStepBitSDD[AliQAv1::kINFO];
- }//end local coord
- else if(hname.Contains("SDDrdistrib_Layer3")||hname.Contains("SDDrdistrib_Layer4"))
- {
-
- }//end r distribution
- else if(hname.Contains("SDDphidistrib_Layer3")||hname.Contains("SDDphidistrib_Layer4"))
- {
-
- }//end phi distribution
- else if(hname.Contains("SDDdrifttime_Layer3")||hname.Contains("SDDdrifttime_Layer4"))
- {
-
- }//end drift time
- }
- }//end if hdata
-
- }//end while
- }//end else geentries
- }//end uniqueid
- */
- test=1.;
+ while((hdata=dynamic_cast<TH1* >(next()))){
+ if (hdata){
+ TString hname=hdata->GetName();
+ if(hname.Contains("_RelativeOccupancy")) {
+ fRecModulePattern = (TH1F *) hdata;
+ Float_t threshold = fRecModulePattern->GetMean() + 4*fRecModulePattern->GetRMS();
+ if(hname.Contains("L3")) AliInfo(Form("SDD check number 3: L3 mean: %f, rms: ,%f",fRecModulePattern->GetMean(),fRecModulePattern->GetRMS()));
+ if(hname.Contains("L4")) AliInfo(Form("SDD check number 4: L4 mean: %f, rms: ,%f",fRecModulePattern->GetMean(),fRecModulePattern->GetRMS()));
+ Int_t aboveThreshold = 0;
+ for(Int_t k=0; k<= ((Int_t)fRecModulePattern->GetNbinsX()); k++) {
+ if(fRecModulePattern->GetBinLowEdge(k) > threshold) aboveThreshold += (Int_t)(fRecModulePattern->GetBinContent(k));
+ }
+ Float_t fractionAboveThreshold = ((Float_t) aboveThreshold)/fRecModulePattern->GetEntries();
+ if(hname.Contains("L3")) AliInfo(Form("SDD check number 3, L3: RecPoints fractionAboveThreshold: %f",fractionAboveThreshold));
+ if(hname.Contains("L4")) AliInfo(Form("SDD check number 4, L4: RecPoints fractionAboveThreshold: %f",fractionAboveThreshold));
+ if(fractionAboveThreshold > fThresholdForRelativeOccupancy) {
+ SDDQACheckerValue=fHighSDDValue[AliQAv1::kWARNING];
+ if(hname.Contains("L3")) AliInfo(Form("SDD check number 3: Set Warning (L3 RecPoints)"));
+ if(hname.Contains("L4")) AliInfo(Form("SDD check number 4: Set Warning (L4 RecPoints)"));
+ }
+ }
+ if(hname.Contains("Rec2Raw") && !hname.Contains("2D")) {
+ //Float_t threshold = 0.;
+ if(hname.Contains("L3")) AliInfo(Form("SDD check number 5: L3 R2R mean: %f, rms: ,%f",((TH1F *) hdata)->GetMean(),((TH1F *) hdata)->GetRMS()));
+ if(hname.Contains("L4")) AliInfo(Form("SDD check number 6: L4 R2R mean: %f, rms: ,%f",((TH1F *) hdata)->GetMean(),((TH1F *) hdata)->GetRMS()));
+ Int_t belowThreshold = 0;
+ for(Int_t k=0; k<=((TH1F *)hdata)->GetNbinsX(); k++) {
+ if(((TH1F *) hdata)->GetBinLowEdge(k) < fThresholdForRecToRawRatio) belowThreshold += ((Int_t)((TH1F *) hdata)->GetBinContent(k));
+ }
+ Double_t fractionBelowThreshold =0.;
+ Double_t entries=((TH1F *)hdata)->GetEntries();
+ if(entries!=0.)fractionBelowThreshold = ((Double_t)(belowThreshold))/entries;
+ else{ AliWarning(Form("No entries on %s. The check will retuns zero.\n",hdata->GetName() )); }
+ if(hname.Contains("L3")) AliInfo(Form("SDD check number 5, L3: RecPoints2Raws fractionBelowThreshold: %f",fractionBelowThreshold));
+ if(hname.Contains("L4")) AliInfo(Form("SDD check number 6, L4: RecPoints2Raws fractionBelowThreshold: %f",fractionBelowThreshold));
+ if(fractionBelowThreshold > fThresholdForRelativeOccupancy) {
+ SDDQACheckerValue=fHighSDDValue[AliQAv1::kWARNING];
+ if(hname.Contains("L3")) AliInfo(Form("SDD check number 5: Set Warning (L3 RecPoints2Raws)"));
+ if(hname.Contains("L4")) AliInfo(Form("SDD check number 6: Set Warning (L4 RecPoints2Raws)"));
+ }
+ }
+ if(hname.Contains("dedx")) {
+ if(hname.Contains("L3")) AliInfo(Form("SDD check number 7: L3 average charge: %f, rms: ,%f",hdata->GetMean(),hdata->GetRMS()));
+ if(hname.Contains("L4")) AliInfo(Form("SDD check number 8: L4 average charge: %f, rms: ,%f",hdata->GetMean(),hdata->GetRMS()));
+ }
+ }
+ }
+
+ SDDQACheckerValue=1.;
break;
case AliQAv1::kANA:
AliInfo(Form("===================> No Check on %s\n",AliQAv1::GetAliTaskName(index)));
- test=1.;
+ SDDQACheckerValue=1.;
break;
case AliQAv1::kESD:
AliInfo(Form("==================> No Check on %s\n",AliQAv1::GetAliTaskName(index)));
- test=1.;
+ SDDQACheckerValue=1.;
break;
case AliQAv1::kNTASK:
AliInfo(Form("==================> No Check on %s\n",AliQAv1::GetAliTaskName(index)));
- test=1.;
+ SDDQACheckerValue=1.;
break;
case AliQAv1::kSIM:
AliInfo(Form("Check on %s\n",AliQAv1::GetAliTaskName(index)));
Int_t uid=list->GetUniqueID();
- if(uid==60)
- {
- //digits
- if (list->GetEntries() == 0){ //check if the list is empty
- //printf("test = %f \t value %f\n",test,fHighSDDValue[AliQAv1::kFATAL]);
- test=fHighSDDValue[AliQAv1::kFATAL];
-
- }//end if getentries
- else{
+ if(uid==60) {
+ //digits
+ if (list->GetEntries() == 0){
+ SDDQACheckerValue=fHighSDDValue[AliQAv1::kFATAL];
- TIter next(list);
+ } else{
- while( (hdata = dynamic_cast<TH1* >(next())) ){
- if (hdata){
- if(hdata->GetEntries()==0)test=test+fStepBitSDD[AliQAv1::kFATAL];
- else
- {
- TString hname=hdata->GetName();
- if(hname.Contains("SDDDIGITSModulePattern"))
- {
- //see raws
-
- test=test+fStepBitSDD[AliQAv1::kINFO];
- }//end modpattern
- else if(hname.Contains("SDDAnodeDistribution"))
- {
-
- test=test+fStepBitSDD[AliQAv1::kINFO];
- }//end anode distribution
- else if(hname.Contains("SDDTbinDistribution"))
- {
+ while( (hdata = dynamic_cast<TH1* >(next())) ){
+ if (hdata){
+ if(hdata->GetEntries()==0)SDDQACheckerValue += fStepBitSDD[AliQAv1::kFATAL];
+ else {
+ TString hname=hdata->GetName();
+ if(hname.Contains("SDDDIGITSModulePattern")) {
+ //see raws
- //to do as rp
- test=test+fStepBitSDD[AliQAv1::kINFO];
- }//end timebindistribution
- else if(hname.Contains("SDDADCCountsDistribution"))
- {
- test=test+fStepBitSDD[AliQAv1::kINFO];
- }//end adc counts
+ SDDQACheckerValue += fStepBitSDD[AliQAv1::kINFO];
+ } else if(hname.Contains("SDDAnodeDistribution")) {
+ SDDQACheckerValue += fStepBitSDD[AliQAv1::kINFO];
+ } else if(hname.Contains("SDDTbinDistribution")) {
+ //to do as rp
+ SDDQACheckerValue += fStepBitSDD[AliQAv1::kINFO];
+ } else if(hname.Contains("SDDADCCountsDistribution")) {
+ SDDQACheckerValue += fStepBitSDD[AliQAv1::kINFO];
+ }//end adc counts
- }//end entries !=0
- }//end hdata
- }//end while
- }//end else
- }//end digits
- else if(uid==50)
+ }//end entries !=0
+ }//end hdata
+ }//end while
+ }//end else
+ } else if(uid==50)
{
//hits
- if (list->GetEntries() == 0){ //check if the list is empty
- //printf("test = %f \t value %f\n",test,fHighSDDValue[AliQAv1::kFATAL]);
- test=fHighSDDValue[AliQAv1::kFATAL];
-
- }//end if getentries
+ if (list->GetEntries() == 0){
+ SDDQACheckerValue=fHighSDDValue[AliQAv1::kFATAL];
+ }
else{
- TIter next(list);
-
while( (hdata = dynamic_cast<TH1* >(next())) ){
if (hdata){
- if(hdata->GetEntries()==0)test=test+fStepBitSDD[AliQAv1::kFATAL];
- else
- {
- TString hname=hdata->GetName();
- if(hname.Contains("SDDHITSModulePattern"))
- {
- //to do as raws
- test=test+fStepBitSDD[AliQAv1::kINFO];
- }//end modpattern
- else if(hname.Contains("SDDHITlenghtalonglocalYCoord"))
- {
- test=test+fStepBitSDD[AliQAv1::kINFO];
- }//end hit lenght
- else if(hname.Contains("SDDHITlenghtalonglocalYCoordZoom"))
- {
- test=test+fStepBitSDD[AliQAv1::kINFO];
- }//end hit lenght
- else if(hname.Contains("SDDDepositedEnergyDistribution"))
- {
- test=test+fStepBitSDD[AliQAv1::kINFO];
- }//end deposited energy
+ if(hdata->GetEntries()==0)SDDQACheckerValue += fStepBitSDD[AliQAv1::kFATAL];
+ else {
+ TString hname=hdata->GetName();
+ if(hname.Contains("SDDHITSModulePattern")) {
+ //to do as raws
+ SDDQACheckerValue += fStepBitSDD[AliQAv1::kINFO];
+ } else if(hname.Contains("SDDHITlenghtalonglocalYCoord")) {
+ SDDQACheckerValue += fStepBitSDD[AliQAv1::kINFO];
+ } else if(hname.Contains("SDDHITlenghtalonglocalYCoordZoom")) {
+ SDDQACheckerValue += fStepBitSDD[AliQAv1::kINFO];
+ } else if(hname.Contains("SDDDepositedEnergyDistribution")) {
+ SDDQACheckerValue += fStepBitSDD[AliQAv1::kINFO];
+ }//end deposited energy
- }//end entries !=0
+ }//end entries !=0
}//end hdata
}//end while
}//end else
- }//end hits
- else if(uid==70)
+ } else if(uid==70)
{
//sdigits
- if (list->GetEntries() == 0){ //check if the list is empty
- //printf("test = %f \t value %f\n",test,fHighSDDValue[AliQAv1::kFATAL]);
- test=fHighSDDValue[AliQAv1::kFATAL];
-
- }//end if getentries
- else{
-
- TIter next(list);
+ if (list->GetEntries() == 0){
+ SDDQACheckerValue=fHighSDDValue[AliQAv1::kFATAL];
+ } else{
while( (hdata = dynamic_cast<TH1* >(next())) ){
if (hdata){
- if(hdata->GetEntries()==0)test=test+fStepBitSDD[AliQAv1::kFATAL];
- else
- {
- TString hname=hdata->GetName();
- if(hname.Contains("SDDSDIGITSModulePattern"))
- {
- //to do as raws
- test=test+fStepBitSDD[AliQAv1::kINFO];
- }//end modpattern
- else if(hname.Contains("SDDAnodeDistribution"))
- {
- test=test+fStepBitSDD[AliQAv1::kINFO];
- }//end anode bindistribution
- else if(hname.Contains("SDDTbinDistribution"))
- {
- //to do as rp
- test=test+fStepBitSDD[AliQAv1::kINFO];
- }//end timebindistribution
- else if(hname.Contains("SDDADCCountsDistribution"))
- {
- test=test+fStepBitSDD[AliQAv1::kINFO];
- }//end adc counts bindistribution
-
- }//end entries !=0
+ if(hdata->GetEntries()==0)SDDQACheckerValue += fStepBitSDD[AliQAv1::kFATAL];
+ else {
+ TString hname=hdata->GetName();
+ if(hname.Contains("SDDSDIGITSModulePattern")) {
+ //to do as raws
+ SDDQACheckerValue += fStepBitSDD[AliQAv1::kINFO];
+ } else if(hname.Contains("SDDAnodeDistribution")) {
+ SDDQACheckerValue += fStepBitSDD[AliQAv1::kINFO];
+ } else if(hname.Contains("SDDTbinDistribution")) {
+ //to do as rp
+ SDDQACheckerValue += fStepBitSDD[AliQAv1::kINFO];
+ } else if(hname.Contains("SDDADCCountsDistribution")) {
+ SDDQACheckerValue += fStepBitSDD[AliQAv1::kINFO];
+ }//end adc counts bindistribution
+ }//end entries !=0
}//end hdata
}//end while
}//end else
}//end sdigits
- test=1.;
+ SDDQACheckerValue=1.;
break;
}//end switch
fCalibration=NULL;
delete hdata;
- return test;
+ return SDDQACheckerValue;
}
//__________________________________________________________________
}
-
class AliITSQASDDChecker: public TObject {
public:
- AliITSQASDDChecker():fSubDetOffset(0),fStepBitSDD(NULL),fLowSDDValue(NULL),fHighSDDValue(NULL),fCalibration(NULL) {;} // ctor
+ AliITSQASDDChecker():
+ fSubDetOffset(0),
+ fStepBitSDD(NULL),
+ fLowSDDValue(NULL),
+ fHighSDDValue(NULL),
+ fCalibration(NULL),
+ fRawL3Pattern(NULL),
+ fRawL4Pattern(NULL),
+ fRecL3Pattern(NULL),
+ fRecL4Pattern(NULL),
+ fThresholdForRelativeOccupancy(0.01),
+ fRawModulePattern(NULL),
+ fRecModulePattern(NULL),
+ fModulePatternRatio(NULL),
+ fThresholdForRecToRawRatio(0.04)
+ {;} // ctor
AliITSQASDDChecker& operator = (const AliITSQASDDChecker& qac) ; //operator =
- virtual ~AliITSQASDDChecker(); /*{if(fStepBitSDD) delete[] fStepBitSDD ;if(fLowSDDValue)delete[]fLowSDDValue;if(fHighSDDValue) delete[]fHighSDDValue;if(fCalibration)delete fCalibration;} */// dtor
+ virtual ~AliITSQASDDChecker(); // dtor
virtual Double_t Check(AliQAv1::ALITASK_t index, const TObjArray * list, const AliDetectorRecoParam * recoParam);
virtual void SetTaskOffset(Int_t taskoffset);
virtual void SetStepBit(const Double_t *steprange);
virtual Double_t *GetStepBit(){return fStepBitSDD;};
virtual void SetSDDLimits(const Float_t *lowvalue, const Float_t * highvalue);
private:
- AliITSQASDDChecker(const AliITSQASDDChecker& qac):TObject(),fSubDetOffset(qac.fSubDetOffset),fStepBitSDD(qac.fStepBitSDD),fLowSDDValue(qac.fLowSDDValue),fHighSDDValue(qac.fHighSDDValue),fCalibration(qac.fCalibration) {;} // cpy ctor
+ AliITSQASDDChecker(const AliITSQASDDChecker& qac):TObject(),
+ fSubDetOffset(qac.fSubDetOffset),
+ fStepBitSDD(qac.fStepBitSDD),
+ fLowSDDValue(qac.fLowSDDValue),
+ fHighSDDValue(qac.fHighSDDValue),
+ fCalibration(qac.fCalibration),
+ fRawL3Pattern(qac.fRawL3Pattern),
+ fRawL4Pattern(qac.fRawL4Pattern),
+ fRecL3Pattern(qac.fRecL3Pattern),
+ fRecL4Pattern(qac.fRecL4Pattern),
+ fThresholdForRelativeOccupancy(qac.fThresholdForRelativeOccupancy),
+ fRawModulePattern(qac.fRawModulePattern),
+ fRecModulePattern(qac.fRecModulePattern),
+ fModulePatternRatio(qac.fModulePatternRatio),
+ fThresholdForRecToRawRatio(qac.fThresholdForRecToRawRatio)
+ {;} // cpy ctor
Int_t fSubDetOffset; // checking operation starting point
Double_t *fStepBitSDD; //step size for each QAbit(kINFO, kWARNING,kERROR,kFATAL)
Float_t *fLowSDDValue; //low value of each QA bit range
Float_t *fHighSDDValue; //High value of each QA bit range
TObjArray *fCalibration; //TObjArray with Calibration SDD Objects
+
+ TH2F *fRawL3Pattern; // distribution of Raw Module Counts for L3
+ TH2F *fRawL4Pattern; // distribution of Raw Module Counts for L4
+ TH2F *fRecL3Pattern; // distribution of Rec Module Counts for L3
+ TH2F *fRecL4Pattern; // distribution of Rec Module Counts for L4
+ Float_t fThresholdForRelativeOccupancy; // ThresholdForRelativeOccupancy (by module)
+ TH1F *fRawModulePattern; // distribution of Raw Module Counts
+ TH1F *fRecModulePattern; // distribution of Rec Module Counts
+ TH1F *fModulePatternRatio; // distribution of Rec/Raw Module Counts
+ Float_t fThresholdForRecToRawRatio; // ThresholdForRecToRawRatio (by module)
static const Int_t fgknSDDmodules = 260; // number of SDD modules
static const Int_t fgkmodoffset = 240; // number of SPD modules
- ClassDef(AliITSQASDDChecker,2) // description
+ ClassDef(AliITSQASDDChecker,3) // description
};
fSDDhRawsTask(0),
fSDDhDigitsTask(0),
fSDDhRecPointsTask(0),
+fOnlineOffsetRaws(0),
+fOnlineOffsetRecPoints(0),
fGenRawsOffset(0),
fGenDigitsOffset(0),
fGenRecPointsOffset(0),
fSDDhRawsTask(qadm.fSDDhRawsTask),
fSDDhDigitsTask(qadm.fSDDhDigitsTask),
fSDDhRecPointsTask(qadm.fSDDhRecPointsTask),
+fOnlineOffsetRaws(qadm.fOnlineOffsetRaws),
+fOnlineOffsetRecPoints(qadm.fOnlineOffsetRecPoints),
fGenRawsOffset(qadm.fGenRawsOffset),
fGenDigitsOffset(qadm.fGenDigitsOffset),
fGenRecPointsOffset(qadm.fGenRecPointsOffset),
((TH2D*)fAliITSQADataMakerRec->GetRawsData(5 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->Divide((TH2D*)fAliITSQADataMakerRec->GetRawsData(2 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()]),((TH2D*)(fHistoCalibration->At(2))),1.,(Double_t)fNEvent);
}
+
+ Int_t xbin3 = ((TH1D*)fAliITSQADataMakerRec->GetRawsData(4 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetNbinsX();
+ Int_t ybin3 = ((TH1D*)fAliITSQADataMakerRec->GetRawsData(4 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetNbinsY();
+
+ for(Int_t i=0; i<xbin3; i++) {
+ for(Int_t j=0; j<ybin3; j++) {
+ ((TH1D*)fAliITSQADataMakerRec->GetRawsData(6 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->Fill(((TH1D*)fAliITSQADataMakerRec->GetRawsData(4 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetBinContent(i,j));
+ }
+ }
+
+ Int_t xbin4 = ((TH1D*)fAliITSQADataMakerRec->GetRawsData(5 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetNbinsX();
+ Int_t ybin4 = ((TH1D*)fAliITSQADataMakerRec->GetRawsData(5 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetNbinsY();
+
+ for(Int_t i=0; i<xbin4; i++) {
+ for(Int_t j=0; j<ybin4; j++) {
+ ((TH1D*)fAliITSQADataMakerRec->GetRawsData(7 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->Fill(((TH1D*)fAliITSQADataMakerRec->GetRawsData(5 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetBinContent(i,j));
+ }
+ }
+
}//end raws
if(task==AliQAv1::kRECPOINTS){
if(fNEventRP!=0){
((TH1D*)fAliITSQADataMakerRec->GetRecPointsData(9 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->Divide((TH1D*)fAliITSQADataMakerRec->GetRecPointsData(6 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]),((TH1D*) (fHistoCalibration->At(0))),1.,(Double_t)fNEventRP);
- ((TH2D*)fAliITSQADataMakerRec->GetRecPointsData(10+ fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->Divide((TH2D*)fAliITSQADataMakerRec->GetRecPointsData(7 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]),((TH2D*)(fHistoCalibration->At(1))),1.,(Double_t)fNEventRP);
-
- ((TH2D*)fAliITSQADataMakerRec->GetRecPointsData(11+ fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->Divide((TH2D*)fAliITSQADataMakerRec->GetRecPointsData(8 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]),((TH2D*)(fHistoCalibration->At(2))),1.,(Double_t)fNEventRP);
+ ((TH2D*)fAliITSQADataMakerRec->GetRecPointsData(10+ fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->Divide((TH2D*)fAliITSQADataMakerRec->GetRecPointsData(7 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]),((TH2D*)(fHistoCalibration->At(1))),1.,(Double_t)fNEventRP);
+
+ ((TH2D*)fAliITSQADataMakerRec->GetRecPointsData(11+ fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->Divide((TH2D*)fAliITSQADataMakerRec->GetRecPointsData(8 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]),((TH2D*)(fHistoCalibration->At(2))),1.,(Double_t)fNEventRP);
+
+ ((TH2D*)fAliITSQADataMakerRec->GetRecPointsData(21+ fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->Divide((TH2D*)fAliITSQADataMakerRec->GetRecPointsData(7 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]),((TH2D*)(fHistoCalibration->At(1))),1.,(Double_t)fNEventRP);
+
+ ((TH2D*)fAliITSQADataMakerRec->GetRecPointsData(22+ fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->Divide((TH2D*)fAliITSQADataMakerRec->GetRecPointsData(8 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]),((TH2D*)(fHistoCalibration->At(2))),1.,(Double_t)fNEventRP);
}
+ Int_t xbin3 = ((TH1D*)fAliITSQADataMakerRec->GetRecPointsData(10 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetNbinsX();
+ Int_t ybin3 = ((TH1D*)fAliITSQADataMakerRec->GetRecPointsData(10 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetNbinsY();
+
+ for(Int_t i=0; i<xbin3; i++) {
+ for(Int_t j=0; j<ybin3; j++) {
+ ((TH1D*)fAliITSQADataMakerRec->GetRecPointsData(19 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->Fill(((TH1D*)fAliITSQADataMakerRec->GetRecPointsData(10 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetBinContent(i,j));
+ }
+ }
+
+ Int_t xbin4 = ((TH1D*)fAliITSQADataMakerRec->GetRecPointsData(11 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetNbinsX();
+ Int_t ybin4 = ((TH1D*)fAliITSQADataMakerRec->GetRecPointsData(11 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetNbinsY();
+
+ for(Int_t i=0; i<xbin4; i++) {
+ for(Int_t j=0; j<ybin4; j++) {
+ ((TH1D*)fAliITSQADataMakerRec->GetRecPointsData(20 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->Fill(((TH1D*)fAliITSQADataMakerRec->GetRecPointsData(11 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetBinContent(i,j));
+ }
+ }
+
+ // RecPoints 2 Raws Ratio
+ if(fAliITSQADataMakerRec->ListExists(AliQAv1::kRAWS)==kTRUE)
+ {
+ Int_t xbin3RP = ((TH1D*)fAliITSQADataMakerRec->GetRecPointsData(21 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetNbinsX();
+ Int_t ybin3RP = ((TH1D*)fAliITSQADataMakerRec->GetRecPointsData(21 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetNbinsY();
+ Int_t xbin3R = ((TH1D*)fAliITSQADataMakerRec->GetRawsData(4 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetNbinsX();
+ Int_t ybin3R = ((TH1D*)fAliITSQADataMakerRec->GetRawsData(4 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetNbinsY();
+ if((xbin3RP == xbin3R) && (ybin3RP == ybin3R)) {
+ ((TH2D*)fAliITSQADataMakerRec->GetRecPointsData(21 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->Divide(((TH2D*)fAliITSQADataMakerRec->GetRawsData(4 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()])));
+ for(Int_t i=0; i<xbin3R; i++) {
+ for(Int_t j=0; j<ybin3R; j++) {
+ ((TH1D*)fAliITSQADataMakerRec->GetRecPointsData(23 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->Fill(((TH2D*)fAliITSQADataMakerRec->GetRecPointsData(21 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetBinContent(i,j));
+ }
+ }
+ } else
+ AliWarning("Number of bins for Raws and RecPoints (Layer 3) do not match\n");
+
+ Int_t xbin4RP = ((TH1D*)fAliITSQADataMakerRec->GetRecPointsData(22 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetNbinsX();
+ Int_t ybin4RP = ((TH1D*)fAliITSQADataMakerRec->GetRecPointsData(22 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetNbinsY();
+ Int_t xbin4R = ((TH1D*)fAliITSQADataMakerRec->GetRawsData(5 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetNbinsX();
+ Int_t ybin4R = ((TH1D*)fAliITSQADataMakerRec->GetRawsData(5 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetNbinsY();
+ if((xbin4RP == xbin4R) && (ybin4RP == ybin4R)) {
+ ((TH2D*)fAliITSQADataMakerRec->GetRecPointsData(22 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->Divide(((TH2D*)fAliITSQADataMakerRec->GetRawsData(5 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()])));
+ for(Int_t i=0; i<xbin4R; i++) {
+ for(Int_t j=0; j<ybin4R; j++) {
+ ((TH1D*)fAliITSQADataMakerRec->GetRecPointsData(24 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->Fill(((TH2D*)fAliITSQADataMakerRec->GetRecPointsData(22 + fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()]))->GetBinContent(i,j));
+ }
+ }
+ } else
+ AliWarning("Number of bins for Raws and RecPoints (Layer 4) do not match\n");
+ }
+ else{AliWarning("Ratio between RecPoints and Raws not executed because the raw list has not been created\n");}
}//end recpoints
}
Int_t indexlast = 0;
Int_t index1 = 0;
- if(fkOnline){AliInfo("Book Online Histograms for SDD\n");}
+ fSDDhRawsTask = 0;
+ if(fkOnline){AliInfo("Book Online Histograms for SDD\n");}
else {AliInfo("Book Offline Histograms for SDD\n ");}
TH1D *h0 = new TH1D("SDDModPattern","HW Modules pattern",fgknSDDmodules,239.5,499.5); //0
h0->GetXaxis()->SetTitle("Module Number");
rv = fAliITSQADataMakerRec->Add2RawsList(hphil4norm,5+fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image, !saveCorr);
fSDDhRawsTask++;
- if(fkOnline){
+
+ Float_t hMax = 0.2;
+
+ TH1F *oL3 = new TH1F("SDDL3_RelativeOccupancy","Layer 3 Relative Occupancy",200,0.,hMax);
+ rv = fAliITSQADataMakerRec->Add2RawsList(oL3,6+fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image, !saveCorr); //6
+ fSDDhRawsTask++;
+
+ TH1F *oL4 = new TH1F("SDDL4_RelativeOccupancy","Layer 4 Relative Occupancy",200,0.,hMax);
+ rv = fAliITSQADataMakerRec->Add2RawsList(oL4,7+fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image, !saveCorr); //7
+ fSDDhRawsTask++;
+
+ fOnlineOffsetRaws = fSDDhRawsTask;
+ if(fkOnline){
//DDL Pattern
- TH2D *hddl = new TH2D("SDDDDLPattern","SDD DDL Pattern ",24,-0.5,11.5,24,-0.5,23.5); //6
+ TH2D *hddl = new TH2D("SDDDDLPattern","SDD DDL Pattern ",24,-0.5,11.5,24,-0.5,23.5); //8
hddl->GetXaxis()->SetTitle("Channel");
hddl->GetYaxis()->SetTitle("DDL Number");
- rv = fAliITSQADataMakerRec->Add2RawsList(hddl,6+fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image, !saveCorr);
+ rv = fAliITSQADataMakerRec->Add2RawsList(hddl,fOnlineOffsetRaws+fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image, !saveCorr);
fSDDhRawsTask++;
Int_t indexlast1 = 0;
char *hname[3];
for(Int_t i=0; i<3; i++) hname[i]= new char[50];
for(Int_t moduleSDD =0; moduleSDD<fgknSDDmodules; moduleSDD++){
- for(Int_t iside=0;iside<fgknSide;iside++){
- AliITSgeomTGeo::GetModuleId(moduleSDD+fgkmodoffset, lay, lad, det);
- sprintf(hname[0],"SDDchargeMapFSE_L%d_%d_%d_%d",lay,lad,det,iside);
- sprintf(hname[1],"SDDChargeMapForSingleEvent_L%d_%d_%d_%d",lay,lad,det,iside);
+ for(Int_t iside=0;iside<fgknSide;iside++){
+ AliITSgeomTGeo::GetModuleId(moduleSDD+fgkmodoffset, lay, lad, det);
+ sprintf(hname[0],"SDDchargeMapFSE_L%d_%d_%d_%d",lay,lad,det,iside);
+ sprintf(hname[1],"SDDChargeMapForSingleEvent_L%d_%d_%d_%d",lay,lad,det,iside);
// sprintf(hname[2],"SDDhmonoDMap_L%d_%d_%d_%d",lay,lad,det,iside);
- TProfile2D *fModuleChargeMapFSE = new TProfile2D(hname[0],hname[1],256/fTimeBinSize,-0.5,255.5,256,-0.5,255.5);
- fModuleChargeMapFSE->GetXaxis()->SetTitle("Time Bin");
- fModuleChargeMapFSE->GetYaxis()->SetTitle("Anode");
- rv = fAliITSQADataMakerRec->Add2RawsList(fModuleChargeMapFSE,indexlast1 + index1 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image, !saveCorr);
- fSDDhRawsTask++;
- index1++;
- }
+ TProfile2D *fModuleChargeMapFSE = new TProfile2D(hname[0],hname[1],256/fTimeBinSize,-0.5,255.5,256,-0.5,255.5);
+ fModuleChargeMapFSE->GetXaxis()->SetTitle("Time Bin");
+ fModuleChargeMapFSE->GetYaxis()->SetTitle("Anode");
+ rv = fAliITSQADataMakerRec->Add2RawsList(fModuleChargeMapFSE,indexlast1 + index1 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image, !saveCorr);
+ fSDDhRawsTask++;
+ index1++;
+ }
}
for(Int_t moduleSDD =0; moduleSDD<fgknSDDmodules; moduleSDD++){
- for(Int_t iside=0;iside<fgknSide;iside++){
- AliITSgeomTGeo::GetModuleId(moduleSDD+fgkmodoffset, lay, lad, det);
- sprintf(hname[0],"SDDchargeMap_L%d_%d_%d_%d",lay,lad,det,iside);
- sprintf(hname[1],"SDDChargeMap_L%d_%d_%d_%d",lay,lad,det,iside);
- TProfile2D *fModuleChargeMap = new TProfile2D(hname[0],hname[1],256/fTimeBinSize,-0.5,255.5,256,-0.5,255.5);
- fModuleChargeMap->GetXaxis()->SetTitle("Time Bin");
- fModuleChargeMap->GetYaxis()->SetTitle("Anode Number");
- rv = fAliITSQADataMakerRec->Add2RawsList(fModuleChargeMap,indexlast1 + index1 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image, !saveCorr);
- fSDDhRawsTask++;
- index1++;
- }
+ for(Int_t iside=0;iside<fgknSide;iside++){
+ AliITSgeomTGeo::GetModuleId(moduleSDD+fgkmodoffset, lay, lad, det);
+ sprintf(hname[0],"SDDchargeMap_L%d_%d_%d_%d",lay,lad,det,iside);
+ sprintf(hname[1],"SDDChargeMap_L%d_%d_%d_%d",lay,lad,det,iside);
+ TProfile2D *fModuleChargeMap = new TProfile2D(hname[0],hname[1],256/fTimeBinSize,-0.5,255.5,256,-0.5,255.5);
+ fModuleChargeMap->GetXaxis()->SetTitle("Time Bin");
+ fModuleChargeMap->GetYaxis()->SetTitle("Anode Number");
+ rv = fAliITSQADataMakerRec->Add2RawsList(fModuleChargeMap,indexlast1 + index1 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image, !saveCorr);
+ fSDDhRawsTask++;
+ index1++;
+ }
}
//Event Size
fSDDhRawsTask++;
} // kONLINE
- AliDebug(AliQAv1::GetQADebugLevel(),Form("%d SDD Raws histograms booked\n",fSDDhRawsTask));
- return rv ;
+
+ cout << fSDDhRawsTask << " SDD Raws histograms booked" << endl;
+
+ AliDebug(AliQAv1::GetQADebugLevel(),Form("%d SDD Raws histograms booked\n",fSDDhRawsTask));
+ return rv ;
}
if(fkOnline) {
for(Int_t moduleSDD =0; moduleSDD<fgknSDDmodules; moduleSDD++){
for(Int_t iside=0;iside<fgknSide;iside++) {
- if(fSDDhRawsTask > 7 + index) fAliITSQADataMakerRec->GetRawsData(7 + index +fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Reset();
+ if(fSDDhRawsTask > fOnlineOffsetRaws + 1 + index) fAliITSQADataMakerRec->GetRawsData(fOnlineOffsetRaws + 1 + index +fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Reset();
// 4 because the 2D histos for single events start after the fourth position
index++;
}
//printf(" \n%i %i %i %i \n ",lay, lad, det,iside );
fAliITSQADataMakerRec->GetRawsData( 0 + fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()] )->Fill(isddmod);
- if(lay==3) fAliITSQADataMakerRec->GetRawsData(1+fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(det+0.5*iside-0.5,lad);
- if(lay==4) {fAliITSQADataMakerRec->GetRawsData(2+fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(det+0.5*iside-0.5,lad);}
+ if(lay==3) fAliITSQADataMakerRec->GetRawsData(1+fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(det+0.5*iside-0.25,lad);
+ if(lay==4) fAliITSQADataMakerRec->GetRawsData(2+fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(det+0.5*iside-0.25,lad);
if(fkOnline) {
- fAliITSQADataMakerRec->GetRawsData(6+fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill((stream->GetCarlosId())+0.5*iside -0.5,iddl);
+ fAliITSQADataMakerRec->GetRawsData(fOnlineOffsetRaws+fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill((stream->GetCarlosId())+0.5*iside -0.5,iddl);
// printf("content ddlmap %d, %d = %f \n",(stream->GetCarlosId()+0.5*iside -0.5),iddl,fAliITSQADataMakerRec->GetRawsData(3+fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->GetBinContent(1+(det-1)*2;lad));
//printf("content ddlmap %d, %d = %f \n",(stream->GetCarlosId())+0.5*iside -0.5,iddl,fAliITSQADataMakerRec->GetRawsData(3+fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->GetBinContent(1+(stream->GetCarlosId()-1)*2,iddl));
activeModule = moduleSDD;
if(index1<0){
AliDebug(AliQAv1::GetQADebugLevel(),Form("Wrong index number %d - patched to 0\n",index1));
- index1 = 0;
+ index1 = 0;
}
- if(fSDDhRawsTask > 7 + index1) {
- ((TProfile2D *)(fAliITSQADataMakerRec->GetRawsData(7 + index1 +fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()])))->Fill(coord2, coord1, signal);
- ((TProfile2D *)(fAliITSQADataMakerRec->GetRawsData(7 + index1 + 260*2 +fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()])))->Fill(coord2, coord1, signal);
+ if(fSDDhRawsTask > fOnlineOffsetRaws +1 + index1) {
+ ((TProfile2D *)(fAliITSQADataMakerRec->GetRawsData(fOnlineOffsetRaws +1 + index1 +fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()])))->Fill(coord2, coord1, signal);
+ ((TProfile2D *)(fAliITSQADataMakerRec->GetRawsData(fOnlineOffsetRaws +1 + index1 + 260*2 +fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()])))->Fill(coord2, coord1, signal);
}
}//online
cnt++;
if(!(cnt%10000)) AliDebug(AliQAv1::GetQADebugLevel(),Form(" %d raw digits read",cnt));
}//end next()
- if(fkOnline){((TH1F*)(fAliITSQADataMakerRec->GetRawsData(7 + 260*4 +fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()])))->Fill(size/1024.);//KB
+ if(fkOnline){((TH1F*)(fAliITSQADataMakerRec->GetRawsData(fOnlineOffsetRaws +1 + 260*4 +fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()])))->Fill(size/1024.);//KB
}
+
AliDebug(AliQAv1::GetQADebugLevel(),Form("Event completed, %d raw digits read",cnt));
delete stream;
stream = NULL;
rv = fAliITSQADataMakerRec->Add2RecPointsList(h3,3+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], !expert, image);// NON expert image
fSDDhRecPointsTask++;
- TH2F *h4 = new TH2F("SDDGlobalCoordDistribL3PHIZ","#varphi Z Global Coord Distrib L3",46,-23,23,90,-TMath::Pi(),TMath::Pi());//position number 4
+ TH2F *h4 = new TH2F("SDDGlobalCoordDistribL3PHIZ","#varphi Z Global Coord Distrib L3",96,-23,23,112,-TMath::Pi(),TMath::Pi());//position number 4
h4->GetYaxis()->SetTitle("#phi[rad]");
h4->GetXaxis()->SetTitle("Z[cm]");
rv = fAliITSQADataMakerRec->Add2RecPointsList(h4,4+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], !expert, image);//NON expert image
fSDDhRecPointsTask++;
- TH2F *h5 = new TH2F("SDDGlobalCoordDistribL4PHIZ","#varphi Z Global Coord Distrib L4",62,-31,31,90,-TMath::Pi(),TMath::Pi());//position number 5
+ TH2F *h5 = new TH2F("SDDGlobalCoordDistribL4PHIZ","#varphi Z Global Coord Distrib L4",128,-31,31,176,-TMath::Pi(),TMath::Pi());//position number 5
h5->GetYaxis()->SetTitle("#phi[rad]");
h5->GetXaxis()->SetTitle("Z[cm]");
rv = fAliITSQADataMakerRec->Add2RecPointsList(h5,5+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], !expert, image);//NON expert image
fSDDhRecPointsTask++;
TH2D *h11 = new TH2D("SDDModPatternL4RPNORM","Modules pattern L4 RP NORM",16,0.5,8.5,22,0.5,22.5); //position number 11
- h11->GetXaxis()->SetTitle("[#Module L3 ]");
+ h11->GetXaxis()->SetTitle("[#Module L4 ]");
h10->GetYaxis()->SetTitle("#varphi[#Ladder L4]");
rv = fAliITSQADataMakerRec->Add2RecPointsList(h11,11 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image);// expert NO image
fSDDhRecPointsTask++;
fSDDhRecPointsTask++;
}
- if(fkOnline){
- TH2F *h19 = new TH2F("SDDGlobalCoordDistribYXFSE","YX Global Coord Distrib FSE",112,-28,28,112,-28,28);//position number 19
+ Float_t hMax = 0.2;
+
+ TH1F *oL3 = new TH1F("SDDL3_RelativeOccupancy","Layer 3 Relative Occupancy (RecPoints)",200,0.,hMax);
+ rv = fAliITSQADataMakerRec->Add2RecPointsList(oL3,fSDDhRecPointsTask+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); // 19
+ fSDDhRecPointsTask++;
+
+ TH1F *oL4 = new TH1F("SDDL4_RelativeOccupancy","Layer 4 Relative Occupancy (RecPoints)",200,0.,hMax);
+ rv = fAliITSQADataMakerRec->Add2RecPointsList(oL4,fSDDhRecPointsTask+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); // 20
+ fSDDhRecPointsTask++;
+
+
+ TH2D *h21 = new TH2D("SDDL3_Rec2Raw_2D","L3 RecPoints to Raws 2D",12,0.5,6.5,14,0.5,14.5); //position number 21
+ h21->GetXaxis()->SetTitle("z[#Module L3 ]");
+ h21->GetYaxis()->SetTitle("#varphi[#Ladder L3]");
+ rv = fAliITSQADataMakerRec->Add2RecPointsList(h21,21 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image);// expert NO image
+ fSDDhRecPointsTask++;
+
+ TH2D *h22 = new TH2D("SDDL4_Rec2Raw_2D","L4 RecPoints to Raws 2D",16,0.5,8.5,22,0.5,22.5); //position number 22
+ h22->GetXaxis()->SetTitle("[#Module L4 ]");
+ h22->GetYaxis()->SetTitle("#varphi[#Ladder L4]");
+ rv = fAliITSQADataMakerRec->Add2RecPointsList(h22,22 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image);// expert NO image
+ fSDDhRecPointsTask++;
+
+ hMax = 0.3;
+ TH1F *R2RL3 = new TH1F("SDDL3_Rec2Raw","L3 RecPoints to Raws ratio",150,0.,hMax);
+ rv = fAliITSQADataMakerRec->Add2RecPointsList(R2RL3,fSDDhRecPointsTask+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); // 23
+ fSDDhRecPointsTask++;
+
+ TH1F *R2RL4 = new TH1F("SDDL4_Rec2Raw","L4 RecPoints to Raws ratio",150,0.,hMax);
+ rv = fAliITSQADataMakerRec->Add2RecPointsList(R2RL4,fSDDhRecPointsTask+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); // 24
+ fSDDhRecPointsTask++;
+
+ TH1F *dedxL3 = new TH1F("SDDL3_dedx","L3 dE/dX",100,0.,1.);
+ rv = fAliITSQADataMakerRec->Add2RecPointsList(dedxL3,fSDDhRecPointsTask+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); // 25
+ fSDDhRecPointsTask++;
+
+ TH1F *dedxL4 = new TH1F("SDDL4_dedx","L4 dE/dX",100,0.,1.);
+ rv = fAliITSQADataMakerRec->Add2RecPointsList(dedxL4,fSDDhRecPointsTask+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); // 26
+ fSDDhRecPointsTask++;
+
+ fOnlineOffsetRecPoints = fSDDhRecPointsTask;
+ if(fkOnline){
+ TH2F *h19 = new TH2F("SDDGlobalCoordDistribYXFSE","YX Global Coord Distrib FSE",112,-28,28,112,-28,28);//position number 27
h19->GetYaxis()->SetTitle("Y[cm]");
h19->GetXaxis()->SetTitle("X[cm]");
- rv = fAliITSQADataMakerRec->Add2RecPointsList(h19,19+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image);// expert NO image
+ rv = fAliITSQADataMakerRec->Add2RecPointsList(h19,fSDDhRecPointsTask+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image);// expert NO image
fSDDhRecPointsTask++;
- TH2F *h20 = new TH2F("SDDGlobalCoordDistribRZFSE","RZ Global Coord Distrib FSE",128,-32,32,56,12,26);//position number 20
+ TH2F *h20 = new TH2F("SDDGlobalCoordDistribRZFSE","RZ Global Coord Distrib FSE",128,-32,32,56,12,26);//position number 28
h20->GetYaxis()->SetTitle("R[cm]");
h20->GetXaxis()->SetTitle("Z[cm]");
- rv = fAliITSQADataMakerRec->Add2RecPointsList(h20,20+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image);// expert NO image
+ rv = fAliITSQADataMakerRec->Add2RecPointsList(h20,fSDDhRecPointsTask+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image);// expert NO image
fSDDhRecPointsTask++;
}//online
Int_t npoints = 0;
Float_t cluglo[3]={0.,0.,0.};
if(fkOnline){
- for(Int_t i=19;i<21;i++){
+ for(Int_t i=27;i<29;i++){
fAliITSQADataMakerRec->GetRecPointsData(i+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Reset();
}
}
//AliInfo(Form("Module %d\n",module));
recpoints = rpcont->UncheckedGetClusters(module);
npoints += recpoints->GetEntries();
- //AliInfo(Form("modnumb %d, npoints %d, total points %d\n",module, recpoints->GetEntries(),npoints));
- //AliITSgeomTGeo::GetModuleId(module, lay, lad, det);
- //AliInfo(Form("modnumb %d, lay %d, lad %d, det %d \n",module, lay, lad, det));
-
- //AliInfo(Form("modnumb %d, entries %d\n",module, recpoints->GetEntries()));
for(Int_t j=0;j<recpoints->GetEntries();j++){
- //AliInfo(Form("modnumb %d, entry %d \n",module, j));
AliITSRecPoint *recp = (AliITSRecPoint*)recpoints->At(j);
Int_t index = recp->GetDetectorIndex();
lay=recp->GetLayer();
- Int_t modnumb=index+AliITSgeomTGeo::GetModuleIndex(lay+1,1,1);
- //printf("modnumb %i\n",modnumb);
- AliITSgeomTGeo::GetModuleId(modnumb, lay, lad, det);
+ if(lay < 2 || lay > 3) continue;
+ Int_t modnumb=index+AliITSgeomTGeo::GetModuleIndex(lay+1,1,1);
+ AliITSgeomTGeo::GetModuleId(modnumb, lay, lad, det);
+// AliInfo(Form("modnumb %d, lay %d, lad %d, det %d \n",module, lay, lad, det));
fAliITSQADataMakerRec->GetRecPointsData(6 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(modnumb);//modpatternrp
recp->GetGlobalXYZ(cluglo);
Float_t rad=TMath::Sqrt(cluglo[0]*cluglo[0]+cluglo[1]*cluglo[1]);
Float_t phi=TMath::ATan2(cluglo[1],cluglo[0]);
Float_t drifttime=recp->GetDriftTime();
- fAliITSQADataMakerRec->GetRecPointsData(12 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(recp->GetDetLocalX(),recp->GetDetLocalZ());//local distribution
- if(lay==3||lay==4)fAliITSQADataMakerRec->GetRecPointsData(2 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluglo[0],cluglo[1]);//global distribution YX
- fAliITSQADataMakerRec->GetRecPointsData(3 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluglo[2],rad);//global distribution rz
- if(fkOnline) {
- fAliITSQADataMakerRec->GetRecPointsData(19 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluglo[0],cluglo[1]);//global distribution YX FSE
- fAliITSQADataMakerRec->GetRecPointsData(20 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluglo[2],rad);//global distribution rz FSE
- }
- if(recp->GetLayer() == 2) {
- fAliITSQADataMakerRec->GetRecPointsData(0 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(recp->GetQ()) ;//total charge of layer 3
- //fAliITSQADataMakerRec->GetRecPointsData(7 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(lad);//lad pattern layer 3
- Int_t iside=recp->GetDriftSide();
- //printf("iside =%d\n",iside);
- fAliITSQADataMakerRec->GetRecPointsData(7 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(det+0.5*iside-0.5,lad);//mod pattern layer 3
- fAliITSQADataMakerRec->GetRecPointsData(13 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(rad);//r distribution layer 3
- fAliITSQADataMakerRec->GetRecPointsData(15 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(phi);// phi distribution layer 3
- fAliITSQADataMakerRec->GetRecPointsData(4 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluglo[2],phi);// zphi distribution layer
- fAliITSQADataMakerRec->GetRecPointsData(17 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(drifttime);// time distribution layer 3
- } else if(recp->GetLayer() == 3) {
- fAliITSQADataMakerRec->GetRecPointsData(1 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(recp->GetQ()) ;//total charge layer 4
- //fAliITSQADataMakerRec->GetRecPointsData(8 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(lad);//ladpatternlayer4
- Int_t iside=recp->GetDriftSide();
- //printf("iside =%d\n",iside);
- fAliITSQADataMakerRec->GetRecPointsData(8 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(det+0.5*iside-0.5,lad);//mod pattern layer 4
- fAliITSQADataMakerRec->GetRecPointsData(14 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(rad);//r distribution
- fAliITSQADataMakerRec->GetRecPointsData(16 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(phi);//phi distribution
- fAliITSQADataMakerRec->GetRecPointsData(5 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluglo[2],phi);// zphi distribution layer 4
- fAliITSQADataMakerRec->GetRecPointsData(18 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(drifttime);// time distribution layer 4
+ fAliITSQADataMakerRec->GetRecPointsData(12 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(recp->GetDetLocalX(),recp->GetDetLocalZ());//local distribution
+ fAliITSQADataMakerRec->GetRecPointsData(2 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluglo[0],cluglo[1]);//global distribution YX
+ fAliITSQADataMakerRec->GetRecPointsData(3 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluglo[2],rad);//global distribution rz
+ if(fkOnline) {
+ fAliITSQADataMakerRec->GetRecPointsData(27 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluglo[0],cluglo[1]);//global distribution YX FSE
+ fAliITSQADataMakerRec->GetRecPointsData(28 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluglo[2],rad);//global distribution rz FSE
+ }
+ Int_t iside=recp->GetDriftSide();
+ lay=recp->GetLayer();
+ if(lay == 2) {
+ fAliITSQADataMakerRec->GetRecPointsData(0 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(recp->GetQ()) ;//total charge of layer 3
+ fAliITSQADataMakerRec->GetRecPointsData(7 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(det+0.5*iside-0.5,lad);//mod pattern layer 3
+ fAliITSQADataMakerRec->GetRecPointsData(13 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(rad);//r distribution layer 3
+ fAliITSQADataMakerRec->GetRecPointsData(15 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(phi);// phi distribution layer 3
+ fAliITSQADataMakerRec->GetRecPointsData(4 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluglo[2],phi);// zphi distribution layer
+ fAliITSQADataMakerRec->GetRecPointsData(17 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(drifttime);// time distribution layer 3
+ fAliITSQADataMakerRec->GetRecPointsData(25 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(recp->GetdEdX());// charge distribution layer 3
+ } else if(lay == 3) {
+ fAliITSQADataMakerRec->GetRecPointsData(1 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(recp->GetQ()) ;//total charge layer 4
+ fAliITSQADataMakerRec->GetRecPointsData(8 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(det+0.5*iside-0.5,lad);//mod pattern layer 4
+ fAliITSQADataMakerRec->GetRecPointsData(14 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(rad);//r distribution
+ fAliITSQADataMakerRec->GetRecPointsData(16 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(phi);//phi distribution
+ fAliITSQADataMakerRec->GetRecPointsData(5 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluglo[2],phi);// zphi distribution layer 4
+ fAliITSQADataMakerRec->GetRecPointsData(18 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(drifttime);// time distribution layer 4
+ fAliITSQADataMakerRec->GetRecPointsData(26 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(recp->GetdEdX());// charge distribution layer 4
}
}
}
Int_t fSDDhRawsTask; // number of histo booked for each the Raws Task SDD
Int_t fSDDhDigitsTask; // number of histo booked for each the RecPoints Task SDD
Int_t fSDDhRecPointsTask; // number of histo booked for each the RecPoints Task SDD
+ Int_t fOnlineOffsetRaws; // index for starting online histograms for Raws
+ Int_t fOnlineOffsetRecPoints; // index for starting online histograms for RecPoints
Int_t *fGenRawsOffset; // QAchecking Raws offset
Int_t *fGenDigitsOffset; // QAchecking RecPoints offset
Int_t *fGenRecPointsOffset; // QAchecking RecPoints offset
TObjArray *fCalibration; //Array of Calibration Object
TObjArray *fHistoCalibration; //Array of the Calibration histograms for the normalization
- ClassDef(AliITSQASDDDataMakerRec,12) // description
+ ClassDef(AliITSQASDDDataMakerRec,13) // description
};