+ for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
+ if ( !AliQAv1::Instance()->IsEventSpecieSet(specie) )
+ continue ;
+
+ if (fCalibData){
+ //normalize TRM hits plots to the number of enabled channels from OCDB object
+ TH1F * hTrmChannels035 = new TH1F("hTrmchannels035", "Active channels per TRM - crates 0 to 35;TRM index = SMid(crate*10)+TRM(0-9);Active channels", 361, 0., 361.) ;
+ TH1F * hTrmChannels3671 = new TH1F("hTrmChannels3671","Active channels per TRM - crates 36 to 71 ;TRM index = SMid(crate*10)+TRM(0-9);Active channels", 361, 360., 721.) ;
+
+ for (Int_t ch = 0; ch < fCalibData->GetSize(); ch++) {
+ if (!(fCalibData->GetNoiseStatus(ch)==AliTOFChannelOnlineStatusArray::kTOFNoiseBad)
+ && (fCalibData->GetHWStatus(ch) == AliTOFChannelOnlineStatusArray::kTOFHWOk)){
+ Int_t geoId[5];
+ Int_t detId[5];
+ AliTOFGeometry::GetVolumeIndices(ch,geoId);
+ AliTOFRawStream::Geant2EquipmentId(geoId,detId); //detID=(ddl,trm,tdc, chain,channel)
+ if (detId[0]<36) hTrmChannels035->Fill((detId[1]-3)+detId[0]*10);
+ else hTrmChannels3671->Fill((detId[1]-3)+detId[0]*10);
+ }
+ }
+ GetRawsData(16)->Divide(hTrmChannels035);
+ GetRawsData(16)->SetTitle("TRMs average hit number per active channel - crates 0-35");
+ GetRawsData(16)->GetYaxis()->SetTitle("hits/active channels");
+ GetRawsData(17)->Divide(hTrmChannels3671);
+ GetRawsData(17)->SetTitle("TRMs average hit number per active channel - crates 36-71");
+ GetRawsData(17)->GetYaxis()->SetTitle("hits/active channels");
+ }
+
+ if (fEnableDqmShifterOpt){
+ // Help make the raw qa histogram easier to interpret for the DQM shifter
+ // This is still to be optimized...
+
+ if (!GetRawsData(0) || !GetRawsData(5) || !GetRawsData(10)
+ || !GetRawsData(15) || !GetRawsData(16) || !GetRawsData(17)) {
+ printf("No histogram for DQM found - Possible memory corruption ???. Please check\n") ;
+ continue;
+ }
+ AliInfo(Form("Processed %i physics raw events",fProcessedRawEventN));
+
+
+ if (fCalibData){
+ //normalize TRM hits plots to the number of enabled channels from OCDB object
+ TH1F * hTrmChannels035 = new TH1F("hTrmchannels035", "Active channels per TRM - crates 0 to 35;TRM index = SMid(crate*10)+TRM(0-9);Active channels", 361, 0., 361.) ;
+ TH1F * hTrmChannels3671 = new TH1F("hTrmChannels3671","Active channels per TRM - crates 36 to 71 ;TRM index = SMid(crate*10)+TRM(0-9);Active channels", 361, 360., 721.) ;
+
+ for (Int_t ch = 0; ch < fCalibData->GetSize(); ch++) {
+ if (!(fCalibData->GetNoiseStatus(ch)==AliTOFChannelOnlineStatusArray::kTOFNoiseBad)
+ && (fCalibData->GetHWStatus(ch) == AliTOFChannelOnlineStatusArray::kTOFHWOk)){
+ Int_t geoId[5];
+ Int_t detId[5];
+ AliTOFGeometry::GetVolumeIndices(ch,geoId);
+ AliTOFRawStream::Geant2EquipmentId(geoId,detId); //detID=(ddl,trm,tdc, chain,channel)
+ if (detId[0]<36) hTrmChannels035->Fill((detId[1]-3)+detId[0]*10);
+ else hTrmChannels3671->Fill((detId[1]-3)+detId[0]*10);
+ }
+ }
+ GetRawsData(16)->Divide(hTrmChannels035);
+ GetRawsData(16)->SetTitle("TRMs average hit number per active channel - crates 0-35");
+ GetRawsData(16)->GetYaxis()->SetTitle("hits/active channels");
+ GetRawsData(17)->Divide(hTrmChannels3671);
+ GetRawsData(17)->SetTitle("TRMs average hit number per active channel - crates 36-71");
+ GetRawsData(17)->GetYaxis()->SetTitle("hits/active channels");
+ }
+
+
+ Double_t yTimeMin = GetRawsData(5)->GetMinimum();
+ Double_t yTimeMax = GetRawsData(5)->GetMaximum();
+ Double_t yTotMin = GetRawsData(10)->GetMinimum();
+ Double_t yTotMax = GetRawsData(10)->GetMaximum();
+
+ TLine* lineExpTimeMin = new TLine(200., yTimeMin, 200., yTimeMax);
+ lineExpTimeMin->SetLineColor(kGreen);
+ lineExpTimeMin->SetLineWidth(2);
+
+ TLine* lineExpTimeMax = new TLine(250., yTimeMin, 250., yTimeMax);
+ lineExpTimeMax->SetLineColor(kGreen);
+ lineExpTimeMax->SetLineWidth(2);
+
+ TLine* lineExpTotMin = new TLine( 5., yTotMin, 5., yTotMax);
+ lineExpTotMin->SetLineColor(kGreen);
+ lineExpTotMin->SetLineWidth(2);
+
+ TLine* lineExpTotMax = new TLine(20., yTotMin, 20., yTotMax);
+ lineExpTotMax->SetLineColor(kGreen);
+ lineExpTotMax->SetLineWidth(2);
+
+ ((TH1F*)GetRawsData(5))->GetListOfFunctions()->Add(lineExpTimeMin);
+ ((TH1F*)GetRawsData(5))->GetListOfFunctions()->Add(lineExpTimeMax);
+ ((TH1F*)GetRawsData(10))->GetListOfFunctions()->Add(lineExpTotMin);
+ ((TH1F*)GetRawsData(10))->GetListOfFunctions()->Add(lineExpTotMax);
+
+ //make up for all bistos
+ for(Int_t j=0;j<20;j++){
+ if (j<5) {
+ GetRawsData(j)->SetMarkerColor(kRed);
+ GetRawsData(j)->SetMarkerStyle(7);
+ } else {
+ GetRawsData(j)->SetLineColor(kBlue+1);
+ GetRawsData(j)->SetLineWidth(1);
+ GetRawsData(j)->SetMarkerColor(kBlue+1);
+ }
+ }
+ Float_t ySMmax035=GetRawsData(16)->GetMaximum();
+ TLine* lineSMid035[10];
+ Float_t ySMmax3671=GetRawsData(17)->GetMaximum();
+ TLine* lineSMid3671[10];
+
+ for (Int_t sm=0;sm<10;sm++){
+ lineSMid035[sm] = new TLine( 40*sm, 0, 40*sm, ySMmax035);
+ lineSMid035[sm]->SetLineColor(kMagenta);
+ lineSMid035[sm]->SetLineWidth(2);
+ GetRawsData(16)->GetListOfFunctions()->Add(lineSMid035[sm]);
+
+ lineSMid3671[sm] = new TLine( 40*sm+360, 0, 40*sm+360, ySMmax3671);
+ lineSMid3671[sm]->SetLineColor(kMagenta);
+ lineSMid3671[sm]->SetLineWidth(2);
+ GetRawsData(17)->GetListOfFunctions()->Add(lineSMid3671[sm]);
+ }
+
+ for (Int_t j=15;j<19;j++){
+ GetRawsData(j)->SetFillColor(kGray+1);
+ GetRawsData(j)->SetOption("bar");
+ }
+
+ }
+ }
+ AliQAChecker::Instance()->Run(AliQAv1::kTOF, task, list) ;