+
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+void AliHMPIDQADataMakerRec::InitRaws()
+{
+//
+// Booking QA histo for Raw data
+//
+// All histograms implemented in InitRaws are used in AMORE. Any change here should be propagated to the amoreHMP-QA as well!!! (clm)
+//
+
+ const Bool_t expert = kTRUE ;
+ const Bool_t saveCorr = kTRUE ;
+ const Bool_t image = kTRUE ;
+
+ const Int_t kNerr = (Int_t)AliHMPIDRawStream::kSumErr+1;
+ TH1F *hSumErr[14];
+ TH2F *hDilo[14];
+ TH2I *hPadMap[42]; //AMORE monitoring
+ TH1I *hPadQ[42]; //AMORE monitoring
+
+ fLineDdlDatSizeLow = new TLine(0.5,932,14.5,932); fLineDdlDatSizeLow->SetLineColor(kGreen); fLineDdlDatSizeLow->SetLineWidth(2);
+ fLineDdlDatSizeUp = new TLine(0.5,1500,14.5,1500); fLineDdlDatSizeUp->SetLineColor(kGreen); fLineDdlDatSizeUp->SetLineWidth(2);
+
+ fLineDdlPadOCcLow = new TLine(0.5,0.086,14.5,0.086); fLineDdlPadOCcLow->SetLineColor(kGreen); fLineDdlPadOCcLow->SetLineWidth(2);
+ fLineDdlPadOCcUp = new TLine(0.5,0.86,14.5,0.86); fLineDdlPadOCcUp->SetLineColor(kGreen); fLineDdlPadOCcUp->SetLineWidth(2);
+
+ for(Int_t modcnt=0; modcnt < 6; modcnt++){ fModline[modcnt] = new TLine(0,(1+modcnt)*144,160,(1+modcnt)*144); }
+
+ for(Int_t iddl =0; iddl<AliHMPIDRawStream::kNDDL; iddl++) {
+
+ hSumErr[iddl] = new TH1F(Form("hSumErrDDL%i",iddl), Form("Error summary for DDL %i;??;??",iddl), 2*kNerr,0,2*kNerr);
+ for(Int_t ilabel=0; ilabel< kNerr; ilabel++) {
+ hSumErr[iddl]->GetXaxis()->CenterLabels(kTRUE);
+ hSumErr[iddl]->GetXaxis()->SetBinLabel((2*ilabel+1),Form("%i %s",ilabel+1,AliHMPIDRawStream::GetErrName(ilabel)));
+ }
+
+ Add2RawsList(hSumErr[iddl],iddl,expert,!image, !saveCorr);
+
+ hDilo[iddl] = new TH2F(Form("hDiloDDL%i",iddl),Form("Dilogic response at DDL %i;Row # ;Dilogic #",iddl),24,1,25,10,1,11);
+ Add2RawsList(hDilo[iddl],14+iddl,expert,!image, !saveCorr);
+ }//DDL loop
+ for(Int_t iCh = AliHMPIDParam::kMinCh; iCh <=AliHMPIDParam::kMaxCh ;iCh++) {
+ for(Int_t iPc = AliHMPIDParam::kMinPc; iPc <= AliHMPIDParam::kMaxPc ;iPc++) {
+ hPadMap[iPc+6*iCh] = new TH2I(Form("hPadMap_Ch_%i_Pc%i",iCh,iPc),Form("Pad Map of Ch: %i Pc: %i;Pad X;Pad Y;",iCh,iPc),80,0,80,48,0,48);
+ Add2RawsList(hPadMap[iPc+6*iCh],28+iPc+6*iCh,expert,!image, !saveCorr);
+ hPadQ[iPc+6*iCh] = new TH1I(Form("hPadQ_Ch_%i_Pc%i",iCh,iPc),Form("Pad Charge of Ch: %i Pc: %i;Pad Q;Entries;",iCh,iPc),4100,0,4100);
+ Add2RawsList(hPadQ[iPc+6*iCh],70+iPc+6*iCh,expert,!image, !saveCorr);
+ }//PC loop
+ }//Ch loop
+
+ TH2I *hGeneralErrorSummary = new TH2I("GeneralErrorSummary"," DDL index vs Error type plot", 2*kNerr, 0, 2*kNerr, 2*AliHMPIDRawStream::kNDDL,0,2*AliHMPIDRawStream::kNDDL);
+ for(Int_t igenlabel =0 ; igenlabel< kNerr; igenlabel++) hGeneralErrorSummary->GetXaxis()->SetBinLabel((2*igenlabel+1),Form("%i %s",igenlabel+1,AliHMPIDRawStream::GetErrName(igenlabel)));
+ Add2RawsList(hGeneralErrorSummary,14+14+42+42, expert, !image, !saveCorr);
+
+ //___ for DQM shifter and eLogBook ___ start
+ //___ Double booking of histograms since TProfile cannot be display in summary image
+ //___ hence TProfile plots will not be shown in QA and LogBook!
+
+ TH1F* hHmpDdlDataSize = new TH1F("hHmpDdlDataSize","HMP Data Size per DDL;;Data Size (Bytes)",14,0.5,14.5);
+ hHmpDdlDataSize->Sumw2();
+ hHmpDdlDataSize->SetOption("P");
+ hHmpDdlDataSize->SetMinimum(0);
+ for(Int_t iddl=0;iddl<14;iddl++) hHmpDdlDataSize->GetXaxis()->SetBinLabel(iddl+1,Form("DDL_%d",1535+iddl+1));
+ hHmpDdlDataSize->SetStats(0);hHmpDdlDataSize->SetMinimum(0);hHmpDdlDataSize->SetMarkerStyle(20);
+ hHmpDdlDataSize->GetListOfFunctions()->Add(fLineDdlDatSizeLow);
+ hHmpDdlDataSize->GetListOfFunctions()->Add(fLineDdlDatSizeUp);
+ Add2RawsList(hHmpDdlDataSize,14+14+42+42+1,!expert,image,saveCorr); //shifter, image
+
+ TH1F *fHmpPadOcc = new TH1F("fHmpPadOcc","HMP Average pad occupancy per DDL;;Pad occupancy (%)",14,0.5,14.5);
+ fHmpPadOcc->Sumw2();fHmpPadOcc->SetMinimum(0);
+ fHmpPadOcc->SetMinimum(0);
+ for(Int_t iddl=0;iddl<14;iddl++) fHmpPadOcc->GetXaxis()->SetBinLabel(iddl+1,Form("DDL_%d",1535+iddl+1));
+ fHmpPadOcc->SetStats(0);fHmpPadOcc->SetMinimum(0);fHmpPadOcc->SetMarkerStyle(20);
+ fHmpPadOcc->GetListOfFunctions()->Add(fLineDdlPadOCcLow);
+ fHmpPadOcc->GetListOfFunctions()->Add(fLineDdlPadOCcUp);
+ Add2RawsList(fHmpPadOcc,14+14+42+42+2,!expert,image,!saveCorr); //shifter, image
+
+ TH2F* fHmpBigMap = new TH2F("hHmpBigMap","HMP Sum Q Maps Ch: 0-6;Ch 0-6: pad X;Ch0, Ch1, Ch2, Ch3, Ch4, Ch5, Ch6 pad Y ;Sum Q / Nevt",160,0,160,1008,0,1008);
+ fHmpBigMap->SetStats(0); fHmpBigMap->SetOption("COLZ");
+ for(Int_t modcnt=0; modcnt < 6; modcnt++) fHmpBigMap->GetListOfFunctions()->Add(fModline[modcnt]);
+ Add2RawsList(fHmpBigMap,14+14+42+42+3,!expert,image,!saveCorr); //shifter, image
+
+ TH2F *fHmpHvSectorQ = new TH2F("fHmpHvSectorQ","HMP HV Sector vs Q; Q (ADC);HV Sector (Ch0-Sc0,Ch0-Sc1,...);Entries*Q/Nevt",410,1,4101,42,0,42);
+ fHmpHvSectorQ->SetStats(0); fHmpHvSectorQ->SetOption("colz");
+ Add2RawsList(fHmpHvSectorQ,14+14+42+42+4,!expert,image,!saveCorr); //shifter, image
+
+ // TProfiles
+ TProfile* hHmpDdlDataSizePrf = new TProfile("hHmpDdlDataSizePrf","HMP Data Size per DDL;;Data Size (Bytes)",14,0.5,14.5);
+ hHmpDdlDataSizePrf->Sumw2();
+ hHmpDdlDataSizePrf->SetOption("P");
+ hHmpDdlDataSizePrf->SetMinimum(0);
+ for(Int_t iddl=0;iddl<14;iddl++) hHmpDdlDataSizePrf->GetXaxis()->SetBinLabel(iddl+1,Form("DDL_%d",1535+iddl+1));
+ hHmpDdlDataSizePrf->SetStats(0);hHmpDdlDataSizePrf->SetMinimum(0);hHmpDdlDataSizePrf->SetMarkerStyle(20);
+ Add2RawsList(hHmpDdlDataSizePrf,14+14+42+42+5,expert,!image,saveCorr); //expert, no image
+
+ TProfile *fHmpPadOccPrf = new TProfile("fHmpPadOccPrf","HMP Average pad occupancy per DDL;;Pad occupancy (%)",14,0.5,14.5);
+ fHmpPadOccPrf->Sumw2();fHmpPadOccPrf->SetMinimum(0);
+ fHmpPadOccPrf->SetMinimum(0);
+ for(Int_t iddl=0;iddl<14;iddl++) fHmpPadOccPrf->GetXaxis()->SetBinLabel(iddl+1,Form("DDL_%d",1535+iddl+1));
+ fHmpPadOccPrf->SetStats(0);fHmpPadOccPrf->SetMinimum(0);fHmpPadOccPrf->SetMarkerStyle(20);
+ Add2RawsList(fHmpPadOccPrf,14+14+42+42+6,expert,!image,saveCorr); //expert, no image
+ //___ for DQM shifter and eLogBook ___ stop
+ //
+ ClonePerTrigClass(AliQAv1::kRAWS); // this should be the last line
+}
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++