ROOT logo
// : Author  A.Sadovski,K.Kanaki

//_HADES_CLASS_DESCRIPTION 
///////////////////////////////////////////////////////////////////////////////
//
// HMdcLowLevelQA
//
///////////////////////////////////////////////////////////////////////////////
using namespace std;
#include "hmdclowlevelqa.h"
#include "hmdcdef.h"
#include "hdebug.h"
#include "hades.h"
#include "hiterator.h"
#include "hruntimedb.h"
#include "hspectrometer.h"
#include "hdetector.h"
#include "hevent.h"
#include "hcategory.h"
#include "hlocation.h"
#include "hmdccal1.h"
#include "hmdcraw.h"
#include "hmdclookupgeom.h"
#include "hmdclookupraw.h"
#include "hmdctimecut.h"
#include "hmdccalparraw.h"
#include "hmessagemgr.h"
#include "htool.h"
#include <iostream> 
#include <iomanip>
#include <stdlib.h>
#include "TH2.h"
#include "TH1.h"
#include "TDirectory.h"
#include "TStopwatch.h"
#include "TMath.h"

Int_t HMdcLowLevelQA::colorsSector[6]={2,4,6,8,38,46};
Int_t HMdcLowLevelQA::colorsModule[4]={2,4,6,8};
Int_t HMdcLowLevelQA::colorsCuts[3]={3,5,4};
Int_t HMdcLowLevelQA::cutResults[4]={0,0,0,0};

ClassImp(HMdcLowLevelQA)

HMdcLowLevelQA::HMdcLowLevelQA(void) {
  // Default constructor calls the function setParContainers().
  initVariables();
}

HMdcLowLevelQA::HMdcLowLevelQA(const Text_t* name,const Text_t* title)
                 :  HReconstructor(name,title) {
  // Constructor calls the constructor of class HReconstructor with the name
  // and the title as arguments. It also calls the function setParContainers().
  initVariables();
}

HMdcLowLevelQA::~HMdcLowLevelQA(void) {
  // destructor deletes the iterator
  if (itercal1) delete itercal1;
  if (iterraw)  delete iterraw;
  itercal1=0;
  iterraw=0;
}

void HMdcLowLevelQA::initVariables()
{
    fNameRootHists=0;
    calCat=0;
    rawCat=0;
    itercal1=0;
    iterraw=0;
    lookup=0;
    lookupRaw=0;
    Eventcounter=0;
    isInitialized = kFALSE;
    for(Int_t i=0; i<6; i++){ for(Int_t j=0; j<4; j++){ cnt123[i][j]=0; }}
    for(Int_t s=0; s<6; s++){ for(Int_t m=0; m<4; m++){ for(Int_t mb=0; mb<16; mb++){ NhitsPERmbo[s][m][mb]=0;} }}
    sm_old[0]=-1, sm_old[1]=-1;
    step_trend_meantime1_counter=1;
    stepsize_trend_meantime1=5000;
    resetCounters();
}

void HMdcLowLevelQA::printStatus(){
  SEPERATOR_msg("*",30);
  INFO_msg(10,HMessageMgr::DET_MDC,"HMdcLowLevelQA");
  //cout << "************* HMdcLowLevelQA *************" << endl;
    //cout << "* current file:" << hldFileCurrent.getCurrentFileName() << endl;
    if(fNameRootHists){
      gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"FileName : %s",fNameRootHists);
      //cout << "* File name:" << fNameRootHists << endl;
    }else{
      INFO_msg(10,HMessageMgr::DET_MDC,"File name:    IS NOT SET!!!");
      //cout << "* File name:    IS NOT SET!!!" << endl;
    }
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"Step size for trend Histo.= %d events",stepsize_trend_meantime1);
    //cout << "* Step size for trend Histo.= " << stepsize_trend_meantime1 << " events" << endl;
    //cout << "******************************************" << endl;
    SEPERATOR_msg("*",30);
}

void HMdcLowLevelQA::setParContainers() {
    // creates the parameter containers MdcLookupGeom/MdcLookupRaw/MdcTimeCut if they do not
    // exist and adds them to the list of parameter containers in the runtime
    // database
    lookup   =(HMdcLookupGeom*)gHades->getRuntimeDb()->getContainer("MdcLookupGeom");
    lookupRaw=(HMdcLookupRaw*) gHades->getRuntimeDb()->getContainer("MdcLookupRaw");
    timecut  =(HMdcTimeCut*)   gHades->getRuntimeDb()->getContainer("MdcTimeCut");

    //calparraw=(HMdcCalParRaw*) gHades->getRuntimeDb()->getContainer("MdcCalParRaw");
}

void HMdcLowLevelQA::setOutputRoot(const Char_t *c)
{
    // Sets rootfile output of HMdcFillTimeHists where all created histograms were written.
    //
    if (fNameRootHists) delete fNameRootHists;
    fNameRootHists = new Char_t[strlen(c)+1];
    strcpy(fNameRootHists, c);
}

Bool_t HMdcLowLevelQA::init(void) {
  // creates the MdcRaw  and MdcCal1 categories and adds them to the current
  // event
  // creates an iterator which loops over all fired cells
  // calls the function setParContainers()
  Bool_t test=kFALSE;

  setParContainers();
  test=getCategories();
  getSetup();
  printStatus();
  fActive=kTRUE;
  return test;
}

Bool_t HMdcLowLevelQA::reinit(void)
{
  if(!isInitialized)
    {
      nReqEvents = gHades->getNumberOfRequestedEvents();
      isInitialized = kTRUE;
      createHistograms();
    }
  return kTRUE;
}

Bool_t HMdcLowLevelQA::getCategories()
{
    calCat=gHades->getCurrentEvent()->getCategory(catMdcCal1);
    if (!calCat) {
	Error("HMdcLowLevelQA:init()","Category HMdcCal1 is not filled! Sorry Guy, will quit.");
	exit(1);
	calCat=gHades->getSetup()->getDetector("Mdc")->buildCategory(catMdcCal1);
	if (!calCat) return kFALSE;
	else gHades->getCurrentEvent()->addCategory(catMdcCal1,calCat,"Mdc");
    }
    rawCat=gHades->getCurrentEvent()->getCategory(catMdcRaw);
    if (!rawCat) {
	Error("HMdcLowLevelQA:init()","Category HMdcRaw is not filled! Sorry Guy, will quit.");
	exit(1);
	rawCat=gHades->getSetup()->getDetector("Mdc")->buildCategory(catMdcRaw);
	if (!rawCat) return kFALSE;
	else gHades->getCurrentEvent()->addCategory(catMdcRaw,rawCat,"Mdc");
    }

    itercal1=(HIterator *)calCat->MakeIterator("native");
    iterraw =(HIterator *)rawCat->MakeIterator("native");

    loccal1.set(4,0,0,0,0);
    locraw.set(4,0,0,0,0);
    return kTRUE;
}

void HMdcLowLevelQA::writeTimeCuts(){
  //for(Int_t s=0; s<6; s++){ //time cut is the same for the same plane (different sectors)
  Int_t s=0;
  for(Int_t p=0; p<4; p++){
    //cout << "timecut->getCutT1L=="<< timecut->getCutT1L( s,p) << endl;
    hmdc_summ_tCuts_info[p]->SetBinContent(1, (Double_t)timecut->getCutT1L(      s,p) );
    hmdc_summ_tCuts_info[p]->SetBinContent(2, (Double_t)timecut->getCutT1R(      s,p) );
    hmdc_summ_tCuts_info[p]->SetBinContent(3, (Double_t)timecut->getCutT2L(      s,p) );
    hmdc_summ_tCuts_info[p]->SetBinContent(4, (Double_t)timecut->getCutT2R(      s,p) );
    hmdc_summ_tCuts_info[p]->SetBinContent(5, (Double_t)timecut->getCutDTime21L( s,p) );
    hmdc_summ_tCuts_info[p]->SetBinContent(6, (Double_t)timecut->getCutDTime21R( s,p) );
    hmdc_summ_tCuts_info[p]->Write();
  }
  //}
}

void HMdcLowLevelQA::lookupSlopes(Int_t s, Int_t m){
     //cout << "s="<<s<<" m="<<m<<" Slope="<<calparraw->getSlope(s,m) << endl;

     
}



void HMdcLowLevelQA::testTimeCuts(Int_t s,Int_t m,Float_t t1,Float_t t2)
{

//    cout << "timecut->getCutTime1Left()=" << timecut->getCutTime1Left() << endl;

    hmdc_summ_t2mt1_vs_t1[s][m]->Fill(t1, t2-t1);
    if(timecut->cutTime1(s,m,t1))
       {
	   cutResults[0]=1;
       }
    else
    {
        cutResults[0]=0;
    }
    if(timecut->cutTime2(s,m,t2))
    {
	cutResults[1]=1;
    }
    else
    {
         cutResults[1]=0;
    }
    if(timecut->cutTimesDif(s,m,t1,t2))
    {
	cutResults[2]=1;
    }
    else
    {
        cutResults[2]=0;
    }
    if(cutResults[0]==1&&cutResults[1]==1&&cutResults[2]==1)
    {
	cutResults[3]=1;
    }
    else
    {
        cutResults[3]=0;
    }
}

void HMdcLowLevelQA::createHistograms()
{
  Char_t name [100];
  Char_t axistitle[200];

  sprintf(name,"%s","a_thisFileName");
  a_thisFileName=new TH1F(name,name,1,0,1);
  a_thisFileName->SetXTitle(fNameRootHists);

	// Calculate number of steps for trend histograms, based on number of requested events
  nBinsTrendX = (Int_t)TMath::Floor(nReqEvents / stepsize_trend_meantime1);

  for(Int_t s=0;s<6;s++)
    {
      //###################### CREATE PER SECTOR ####################################



      //#############################################################################
      for(Int_t m=0;m<4;m++)
	{
	  //###################### CREATE PER MODULE ####################################

	  //------------------- hmdc_trend_meanSlope ------------------------------------
	  sprintf(name,"%s%i%s%i%s","hmdc_trend_meanSlope[",s,"][",m,"]");
	  hmdc_trend_meanSlope[s][m]=new TH1F(name,name,nBinsTrendX,0,nBinsTrendX);
	  // 	    hmdc_trend_meanSlope[s][m]=new TH1F(name,name,500,-100,900);
	  hmdc_trend_meanSlope[s][m]->SetLineColor(colorsSector[s]);
	  hmdc_trend_meanSlope[s][m]->SetMarkerColor(colorsSector[s]);
	  hmdc_trend_meanSlope[s][m]->SetMarkerStyle(29);
	  hmdc_trend_meanSlope[s][m]->SetMarkerSize(.8);
	  sprintf(axistitle,"%s%i%s","step in file [",stepsize_trend_meantime1," counts]");
	  hmdc_trend_meanSlope[s][m]->SetXTitle(axistitle);
	  hmdc_trend_meanSlope[s][m]->SetYTitle("Mean Slope [1/ns]");
	  hmdc_trend_meanSlope[s][m]->SetOption("PL");

	  //------------------- hmdc_trend_meantime1 ------------------------------------
	  sprintf(name,"%s%i%s%i%s","hmdc_trend_meantime1[",s,"][",m,"]");
	  hmdc_trend_meantime1[s][m]=new TH1F(name,name,nBinsTrendX,0,nBinsTrendX);
	  // 	    hmdc_trend_meantime1[s][m]=new TH1F(name,name,200,0,200);
	  hmdc_trend_meantime1[s][m]->SetLineColor(colorsSector[s]);
	  hmdc_trend_meantime1[s][m]->SetMarkerColor(colorsSector[s]);
	  hmdc_trend_meantime1[s][m]->SetMarkerStyle(29);
	  hmdc_trend_meantime1[s][m]->SetMarkerSize(.8);
	  sprintf(axistitle,"%s%i%s","step in file [",stepsize_trend_meantime1," events]");
	  hmdc_trend_meantime1[s][m]->SetXTitle(axistitle);
	  hmdc_trend_meantime1[s][m]->SetYTitle("Mean time1 [ns]");
	  hmdc_trend_meantime1[s][m]->SetOption("PL");

	  sprintf(name,"%s%i%s%i%s","hmdc_trend_meantime1not_t1[",s,"][",m,"]");
	  hmdc_trend_meantime1not_t1[s][m]=new TH1F(name,name,nBinsTrendX,0,nBinsTrendX);
	  // 	    hmdc_trend_meantime1not_t1[s][m]=new TH1F(name,name,200,0,200);
	  hmdc_trend_meantime1not_t1[s][m]->SetLineColor(colorsSector[s]);
	  hmdc_trend_meantime1not_t1[s][m]->SetMarkerColor(colorsSector[s]);
	  hmdc_trend_meantime1not_t1[s][m]->SetMarkerStyle(29);
	  hmdc_trend_meantime1not_t1[s][m]->SetMarkerSize(.8);
	  sprintf(axistitle,"%s%i%s","step in file [",stepsize_trend_meantime1," events]");
	  hmdc_trend_meantime1not_t1[s][m]->SetXTitle(axistitle);
	  hmdc_trend_meantime1not_t1[s][m]->SetYTitle("Mean time1 [ns]");
	  hmdc_trend_meantime1not_t1[s][m]->SetOption("PL");

	  sprintf(name,"%s%i%s%i%s","hmdc_trend_meantime1not_t2[",s,"][",m,"]");
	  hmdc_trend_meantime1not_t2[s][m]=new TH1F(name,name,nBinsTrendX,0,nBinsTrendX);
	  // 	    hmdc_trend_meantime1not_t2[s][m]=new TH1F(name,name,200,0,200);
	  hmdc_trend_meantime1not_t2[s][m]->SetLineColor(colorsSector[s]);
	  hmdc_trend_meantime1not_t2[s][m]->SetMarkerColor(colorsSector[s]);
	  hmdc_trend_meantime1not_t2[s][m]->SetMarkerStyle(29);
	  hmdc_trend_meantime1not_t2[s][m]->SetMarkerSize(.8);
	  sprintf(axistitle,"%s%i%s","step in file [",stepsize_trend_meantime1," events]");
	  hmdc_trend_meantime1not_t2[s][m]->SetXTitle(axistitle);
	  hmdc_trend_meantime1not_t2[s][m]->SetYTitle("Mean time1 [ns]");
	  hmdc_trend_meantime1not_t2[s][m]->SetOption("PL");

	  sprintf(name,"%s%i%s%i%s","hmdc_trend_meantime1not_t12[",s,"][",m,"]");
	  hmdc_trend_meantime1not_t12[s][m]=new TH1F(name,name,nBinsTrendX,0,nBinsTrendX);
	  // 	    hmdc_trend_meantime1not_t12[s][m]=new TH1F(name,name,200,0,200);
	  hmdc_trend_meantime1not_t12[s][m]->SetLineColor(colorsSector[s]);
	  hmdc_trend_meantime1not_t12[s][m]->SetMarkerColor(colorsSector[s]);
	  hmdc_trend_meantime1not_t12[s][m]->SetMarkerStyle(29);
	  hmdc_trend_meantime1not_t12[s][m]->SetMarkerSize(.8);
	  sprintf(axistitle,"%s%i%s","step in file [",stepsize_trend_meantime1," events]");
	  hmdc_trend_meantime1not_t12[s][m]->SetXTitle(axistitle);
	  hmdc_trend_meantime1not_t12[s][m]->SetYTitle("Mean time1 [ns]");
	  hmdc_trend_meantime1not_t12[s][m]->SetOption("PL");


	  sprintf(name,"%s%i%s%i%s","hmdc_Slope[",s,"][",m,"]");
	  hmdc_Slope[s][m]=new TH1F(name,name,500,-100,900);

	  sprintf(name,"%s%i%s%i%s","hmdc_time1[",s,"][",m,"]");
	  hmdc_time1[s][m]=new TH1F(name,name,500,-100,900);

	  sprintf(name,"%s%i%s%i%s","hmdc_time1_everithing_summ[",s,"][",m,"]");
	  hmdc_time1_everithing_summ[s][m]=new TH1F(name,name,500,-100,900);

	  sprintf(name,"%s%i%s%i%s","hmdc_time1_good_t1_summ[",s,"][",m,"]");
	  hmdc_time1_good_t1_summ[s][m]=new TH1F(name,name,500,-100,900);

	  sprintf(name,"%s%i%s%i%s","hmdc_time1_not_t1_summ[",s,"][",m,"]");
	  hmdc_time1_not_t1_summ[s][m]=new TH1F(name,name,500,-100,900);

	  sprintf(name,"%s%i%s%i%s","hmdc_time1not_t1[",s,"][",m,"]");
	  hmdc_time1not_t1[s][m]=new TH1F(name,name,500,-100,900);
	  sprintf(name,"%s%i%s%i%s","hmdc_time1not_t2[",s,"][",m,"]");
	  hmdc_time1not_t2[s][m]=new TH1F(name,name,500,-100,900);
	  sprintf(name,"%s%i%s%i%s","hmdc_time1not_t12[",s,"][",m,"]");
	  hmdc_time1not_t12[s][m]=new TH1F(name,name,500,-100,900);

	  //----------------------------------------------------------------------------
	  //------------------- hmdc_trend_neighbors -----------------------------------
	  sprintf(name,"%s%i%s%i%s","hmdc_trend_neighbors[",s,"][",m,"]");
	  hmdc_trend_neighbors[s][m]=new TH1F(name,name,nBinsTrendX,0,nBinsTrendX);
	  // 	    hmdc_trend_neighbors[s][m]=new TH1F(name,name,200,0,200);
	  hmdc_trend_neighbors[s][m]->SetLineColor(colorsSector[s]);
	  hmdc_trend_neighbors[s][m]->SetMarkerColor(colorsSector[s]);
	  hmdc_trend_neighbors[s][m]->SetMarkerStyle(29);
	  hmdc_trend_neighbors[s][m]->SetMarkerSize(.8);
	  sprintf(axistitle,"%s%i%s","step in file [",stepsize_trend_meantime1," events]");
	  hmdc_trend_neighbors[s][m]->SetXTitle(axistitle);
	  hmdc_trend_neighbors[s][m]->SetYTitle("Ratio Double/All cells");
	  hmdc_trend_neighbors[s][m]->SetOption("PL");
	  //----------------------------------------------------------------------------

	  //----------------------- hmdc_trend_123ratio --------------------------------
	  sprintf(name,"%s%i%s%i%s","hmdc_trend_123ratio[",s,"][",m,"]");
	  hmdc_trend_123ratio[s][m]=new TH1F(name,name,nBinsTrendX,0,nBinsTrendX);
	  // 	    hmdc_trend_123ratio[s][m]=new TH1F(name,name,200,0,200);
	  hmdc_trend_123ratio[s][m]->SetLineColor(colorsSector[s]);
	  hmdc_trend_123ratio[s][m]->SetMarkerColor(colorsSector[s]);
	  hmdc_trend_123ratio[s][m]->SetMarkerStyle(29);
	  hmdc_trend_123ratio[s][m]->SetMarkerSize(.8);
	  sprintf(axistitle,"%s%i%s","step in file [",stepsize_trend_meantime1," events]");
	  hmdc_trend_123ratio[s][m]->SetXTitle(axistitle);
	  //hmdc_trend_123ratio[s][m]->SetYTitle("Ratio Events_with(123 f. wires)/Events_all");
	  hmdc_trend_123ratio[s][m]->SetYTitle("Ratio Events_with(123 f. wires)/StepSize");
	  hmdc_trend_123ratio[s][m]->SetOption("PL");
	  //----------------------------------------------------------------------------

	  //---------------------- hmdc_trend_NhitsPERmbo ------------------------------
	  for(Int_t mb=0; mb<16; mb++)
	    {
	      Char_t mbo_name[300];
	      sprintf(mbo_name,"%s%i%s%i%s%i%s","hmdc_trend_NhitsPERmbo[",s,"][",m,"][",mb,"]");
	      hmdc_trend_NhitsPERmbo[s][m][mb]=new TH1F(mbo_name,mbo_name,nBinsTrendX,0,nBinsTrendX);
	      //  	       hmdc_trend_NhitsPERmbo[s][m][mb]=new TH1F(mbo_name,mbo_name,200,0,200);
	      hmdc_trend_NhitsPERmbo[s][m][mb]->SetLineColor(colorsSector[s]);
	      hmdc_trend_NhitsPERmbo[s][m][mb]->SetMarkerColor(colorsSector[s]);
	      hmdc_trend_NhitsPERmbo[s][m][mb]->SetMarkerStyle(29);
	      hmdc_trend_NhitsPERmbo[s][m][mb]->SetMarkerSize(.8);
	      sprintf(axistitle,"%s%i%s","step in file [",stepsize_trend_meantime1," events]");
	      hmdc_trend_NhitsPERmbo[s][m][mb]->SetXTitle(axistitle);
	      hmdc_trend_NhitsPERmbo[s][m][mb]->SetYTitle("hits/mbo");
	      hmdc_trend_NhitsPERmbo[s][m][mb]->SetOption("PL");
            }
	  //----------------------------------------------------------------------------

	  //----------------------- hmdc_trend_multiplicity ----------------------------
	  sprintf(name,"%s%i%s%i%s","hmdc_trend_multiplicity[",s,"][",m,"]");
	  hmdc_trend_multiplicity[s][m]=new TH1F(name,name,nBinsTrendX,0,nBinsTrendX);
	  // 	    hmdc_trend_multiplicity[s][m]=new TH1F(name,name,200,0,200);
	  hmdc_trend_multiplicity[s][m]->SetLineColor(colorsSector[s]);
	  hmdc_trend_multiplicity[s][m]->SetMarkerColor(colorsSector[s]);
	  hmdc_trend_multiplicity[s][m]->SetMarkerStyle(29);
	  hmdc_trend_multiplicity[s][m]->SetMarkerSize(.8);
	  sprintf(axistitle,"%s%i%s","step in file [",stepsize_trend_meantime1," events]");
	  hmdc_trend_multiplicity[s][m]->SetXTitle(axistitle);
	  hmdc_trend_multiplicity[s][m]->SetYTitle("Hits Multiplicity Mean Value");
	  hmdc_trend_multiplicity[s][m]->SetOption("PL");

	  // hmdc_multiplicity
	  sprintf(name,"%s%i%s%i%s","hmdc_multiplicity[",s,"][",m,"]");
	  hmdc_multiplicity[s][m]=new TH1F(name,name,500,-0,500);

	  //----------------------------------------------------------------------------

	  //---------------------------- Summary plots ---------------------------------
	  //-------- hmdc_summ_MBOvsTDC ------------------------------------------------
	  sprintf(name,"%s%i%s%i%s","hmdc_summ_MBOvsTDC[",s,"][",m,"]");
	  hmdc_summ_MBOvsTDC[s][m]=new TH2F(name,name,96,0.5,96.5, 16,0.5,16.5);
	  hmdc_summ_MBOvsTDC[s][m]->SetXTitle("TDC channel number");
	  hmdc_summ_MBOvsTDC[s][m]->SetYTitle("MBO number");
	  hmdc_summ_MBOvsTDC[s][m]->SetOption("COLZ");
	  //----------------------------------------------------------------------------

	  //-------- hmdc_summ_dNdNhits ------------------------------------------------
	  sprintf(name,"%s%i%s%i%s","hmdc_summ_dNdNhits[",s,"][",m,"]");
	  hmdc_summ_dNdNhits[s][m]=new TH1F(name,name,50,0.,50. );
	  hmdc_summ_dNdNhits[s][m]->SetXTitle("N of hits");
	  hmdc_summ_dNdNhits[s][m]->SetYTitle("dN/dNhits");
	  hmdc_summ_dNdNhits[s][m]->SetOption("");
	  //----------------------------------------------------------------------------

	  //-------- hmdc_summ_t2mt1_vs_t1 ---------------------------------------------
	  sprintf(name,"%s%i%s%i%s","hmdc_summ_t2mt1_vs_t1[",s,"][",m,"]");
	  hmdc_summ_t2mt1_vs_t1[s][m]=new TH2F(name,name, 250,0.,500., 250, 0., 500.);
	  hmdc_summ_t2mt1_vs_t1[s][m]->SetXTitle("t1 [ns]");
	  hmdc_summ_t2mt1_vs_t1[s][m]->SetYTitle("t2-t1 [ns]");
	  hmdc_summ_t2mt1_vs_t1[s][m]->SetOption("COLZ");
	  //----------------------------------------------------------------------------

	  //-------- hmdc_summ_dNdWire -------------------------------------------------
	  Int_t colorsSector[4]={4,2,8,6}; //r,b,m,g//
	  for(Int_t cut=0; cut<3; cut++){ //for each kind of cut used.
	    for(Int_t l=0; l<6; l++){ //for each layer
	      sprintf(name,"%s%i%s%i%s%i%s%i%s","hmdc_summ_dNdWire[",s,"][",m,"][",l,"][",cut,"]");
	      hmdc_summ_dNdWire[s][m][l][cut]=new TH1F(name,name,191,-0.5,190.5 );
	      hmdc_summ_dNdWire[s][m][l][cut]->SetXTitle("N of Wire");
	      hmdc_summ_dNdWire[s][m][l][cut]->SetYTitle("dN/dWire");
	      hmdc_summ_dNdWire[s][m][l][cut]->SetOption("");
	      hmdc_summ_dNdWire[s][m][l][cut]->SetLineColor(colorsSector[cut]);
	      hmdc_summ_dNdWire[s][m][l][cut]->SetFillColor(colorsSector[cut]);
	    }
	  }
	  //----------------------------------------------------------------------------



	  //----------------------------------------------------------------------------

	  //#############################################################################
     
	}
    }
  //-------- other summary plots [4]x[6]=24 channels----------------------------//

  //time Cuts storage for this file---------------------------------------------
  for(Int_t p=0; p<4; p++){
    sprintf(name,"%s%i","hmdc_summ_tCuts_info",p);
    hmdc_summ_tCuts_info[p] = new TH1F(name,name,6,0.,6.);
    hmdc_summ_tCuts_info[p]->SetXTitle("t1CutL,t1CutR,t2CutL,t2CutR,t2-t1CutL,t2-t1CutR");
  }
  //----------------------------------------------------------------------------


  sprintf(name,"%s","hmdc_summ_trend_meantime1_plane");
  hmdc_summ_trend_meantime1_plane=new TH1F(name,name,4,0,4);
  hmdc_summ_trend_meantime1_plane->SetMarkerStyle(29);
  hmdc_summ_trend_meantime1_plane->SetMarkerSize(.8);
  hmdc_summ_trend_meantime1_plane->SetXTitle("Plane Number");
  hmdc_summ_trend_meantime1_plane->SetYTitle("Mean Value");
  hmdc_summ_trend_meantime1_plane->SetOption("PL");


  sprintf(name,"%s","hmdc_summ_trend_meantime1");
  hmdc_summ_trend_meantime1=new TH1F(name,name,24,0,24);
  hmdc_summ_trend_meantime1->SetMarkerStyle(29);
  hmdc_summ_trend_meantime1->SetMarkerSize(.8);
  hmdc_summ_trend_meantime1->SetXTitle("for(m=0;m<4;m++){for(s=0;s<6;s++){ ms }}");
  hmdc_summ_trend_meantime1->SetYTitle("Mean Value");
  hmdc_summ_trend_meantime1->SetOption("PL");

  sprintf(name,"%s","hmdc_summ_trend_meantime1not_t1");
  hmdc_summ_trend_meantime1not_t1=new TH1F(name,name,24,0,24);
  hmdc_summ_trend_meantime1not_t1->SetMarkerStyle(29);
  hmdc_summ_trend_meantime1not_t1->SetMarkerSize(.8);
  hmdc_summ_trend_meantime1not_t1->SetXTitle("for(m=0;m<4;m++){for(s=0;s<6;s++){ mc }}");
  hmdc_summ_trend_meantime1not_t1->SetYTitle("Mean Value");
  hmdc_summ_trend_meantime1not_t1->SetOption("PL");

  sprintf(name,"%s","hmdc_summ_trend_meantime1not_t2");
  hmdc_summ_trend_meantime1not_t2=new TH1F(name,name,24,0,24);
  hmdc_summ_trend_meantime1not_t2->SetMarkerStyle(29);
  hmdc_summ_trend_meantime1not_t2->SetMarkerSize(.8);
  hmdc_summ_trend_meantime1not_t2->SetXTitle("for(m=0;m<4;m++){for(s=0;s<6;s++){ mc }}");
  hmdc_summ_trend_meantime1not_t2->SetYTitle("Mean Value");
  hmdc_summ_trend_meantime1not_t2->SetOption("PL");

  sprintf(name,"%s","hmdc_summ_trend_meantime1not_t12");
  hmdc_summ_trend_meantime1not_t12=new TH1F(name,name,24,0,24);
  hmdc_summ_trend_meantime1not_t12->SetMarkerStyle(29);
  hmdc_summ_trend_meantime1not_t12->SetMarkerSize(.8);
  hmdc_summ_trend_meantime1not_t12->SetXTitle("for(m=0;m<4;m++){for(s=0;s<6;s++){ mc }}");
  hmdc_summ_trend_meantime1not_t12->SetYTitle("Mean Value");
  hmdc_summ_trend_meantime1not_t12->SetOption("PL");

  sprintf(name,"%s","hmdc_summ_trend_neighbors");
  hmdc_summ_trend_neighbors=new TH1F(name,name,24,0,24);
  hmdc_summ_trend_neighbors->SetMarkerStyle(29);
  hmdc_summ_trend_neighbors->SetMarkerSize(.8);
  hmdc_summ_trend_neighbors->SetXTitle("for(m=0;m<4;m++){for(s=0;s<6;s++){ mc }}");
  hmdc_summ_trend_neighbors->SetYTitle("Mean Value");
  hmdc_summ_trend_neighbors->SetOption("PL");

  sprintf(name,"%s","hmdc_summ_trend_123ratio");
  hmdc_summ_trend_123ratio=new TH1F(name,name,24,0,24);
  hmdc_summ_trend_123ratio->SetMarkerStyle(29);
  hmdc_summ_trend_123ratio->SetMarkerSize(.8);
  hmdc_summ_trend_123ratio->SetXTitle("for(m=0;m<4;m++){for(s=0;s<6;s++){ mc }}");
  hmdc_summ_trend_123ratio->SetYTitle("Mean Value");
  hmdc_summ_trend_123ratio->SetOption("PL");

  sprintf(name,"%s","hmdc_summ_trend_multiplicity");
  hmdc_summ_trend_multiplicity=new TH1F(name,name,24,0,24);
  hmdc_summ_trend_multiplicity->SetMarkerStyle(29);
  hmdc_summ_trend_multiplicity->SetMarkerSize(.8);
  hmdc_summ_trend_multiplicity->SetXTitle("for(m=0;m<4;m++){for(s=0;s<6;s++){ mc }}");
  hmdc_summ_trend_multiplicity->SetYTitle("Mean Value");
  hmdc_summ_trend_multiplicity->SetOption("PL");
  //----------------------------------------------------------------------------//


  //###################### CREATE PER PLANE ####################################
  for(Int_t m=0;m<4;m++)
    {
      //------------------- hmdc_trend_meantime1_plane -----------------------------
      sprintf(name,"%s%i%s","hmdc_trend_meantime1_plane[",m,"]");
      hmdc_trend_meantime1_plane[m]=new TH1F(name,name,nBinsTrendX,0,nBinsTrendX);
      // 	hmdc_trend_meantime1_plane[m]=new TH1F(name,name,200,0,200);
      hmdc_trend_meantime1_plane[m]->SetLineColor(colorsModule[m]);
      hmdc_trend_meantime1_plane[m]->SetMarkerColor(colorsModule[m]);
      hmdc_trend_meantime1_plane[m]->SetMarkerStyle(29);
      hmdc_trend_meantime1_plane[m]->SetMarkerSize(.8);
      sprintf(axistitle,"%s%i%s","step in file [",stepsize_trend_meantime1," events]");
      hmdc_trend_meantime1_plane[m]->SetXTitle(axistitle);
      hmdc_trend_meantime1_plane[m]->SetYTitle("Mean time1 [ns]");
      hmdc_trend_meantime1_plane[m]->SetOption("P");
      sprintf(name,"%s%i%s","hmdc_time1_plane[",m,"]");
      hmdc_time1_plane[m]=new TH1F(name,name,500,-100,900);
      //----------------------------------------------------------------------------


    }
  //############################################################################

}
void HMdcLowLevelQA::writeHistograms(Int_t s,Int_t mo,Int_t l,Int_t c,Int_t level,Int_t main)
{
    // Writes hists to file dependend on level (0=raw,1=cal), main (1=summary,2=plane),
    // sector,module,layer/mb,cell/channel.-99 means that this ind3ex is not used.
  TH1 *tmp;
  TString name;
  Int_t bins;
  
	// calculate number of bins needed for trend histograms based on number of analyzed events
  bins = (Int_t)TMath::Floor(Eventcounter / stepsize_trend_meantime1);

    if(level==0)
    {//########################### WRITE RAW ######################################
      	if(main==1)
	{// write in directory summary
		a_thisFileName->Write();

                TString uFile(fNameRootHists);
                //cout <<"uFile "<<uFile << endl;
                //psFile  = dstFile( dstFile.Last('/')+1,dstFile.Last('.')-dstFile.Last('/')-1 )+".ps";
                //TString origFile = uFile( uFile.Last('/')+1,uFile.Last('_')-uFile.Last('/')-1 )+".hld";
                //TString origFile = uFile(0,uFile.Last('_'))+".hld";
                //cout <<"origFile "<<origFile << endl;
                //Char_t* ChOrigFile = (Char_t*)origFile.Data();
                //cout <<"ChOrigFile "<<ChOrigFile << endl;
                //TNamed *s1=new TNamed("thisFileName",ChOrigFile);
		TNamed *s1=new TNamed("thisFileName",uFile.Data());
                s1->Write();
                

		for(Int_t is=0; is<6 ; is++)
		{
		    for(Int_t im=0; im<4; im++)
		    {
			hmdc_summ_MBOvsTDC[   is][im]->Write();
                        hmdc_summ_dNdNhits[   is][im]->Write();
                        //hmdc_summ_t2mt1_vs_t1[is][im]->Write();
		    }
		}
	        //renormalise before
	        for(Int_t b=1; b<= 4; b++)
	        { // planes
		  hmdc_summ_trend_meantime1_plane->SetBinContent(b, hmdc_summ_trend_meantime1_plane->GetBinContent(b)/Double_t(step_trend_meantime1_counter) );
	        }
	        for(Int_t b=1; b<=24; b++)
	        { // sector, module
		  hmdc_summ_trend_meantime1->SetBinContent(b, hmdc_summ_trend_meantime1->GetBinContent(b)/Double_t(step_trend_meantime1_counter) );
		  hmdc_summ_trend_meantime1not_t1->SetBinContent(b,hmdc_summ_trend_meantime1not_t1->GetBinContent(b)/Double_t(step_trend_meantime1_counter) );
		  hmdc_summ_trend_meantime1not_t2->SetBinContent(b,hmdc_summ_trend_meantime1not_t2->GetBinContent(b)/Double_t(step_trend_meantime1_counter) );
		  hmdc_summ_trend_meantime1not_t12->SetBinContent(b,hmdc_summ_trend_meantime1not_t12->GetBinContent(b)/Double_t(step_trend_meantime1_counter) );
		  hmdc_summ_trend_neighbors->SetBinContent(b,hmdc_summ_trend_neighbors->GetBinContent(b)/Double_t(step_trend_meantime1_counter) );
		  hmdc_summ_trend_123ratio->SetBinContent(b,hmdc_summ_trend_123ratio->GetBinContent(b)/Double_t(step_trend_meantime1_counter) );
	  	hmdc_summ_trend_multiplicity->SetBinContent(b,hmdc_summ_trend_multiplicity->GetBinContent(b)/Double_t(step_trend_meantime1_counter) );
		}
		// Rescale trend histograms to real number of 
		// Events = TMAth::Floor(Eventcounter / stepsize_trend_meantime1).
		tmp = hmdc_summ_trend_meantime1_plane;
		name = (Char_t *)tmp->GetName();
		tmp->SetName("tmp");
		hmdc_summ_trend_meantime1_plane = (TH1F *)HTool::copyHistRange(tmp,name,0,-99,0,bins);
		delete tmp;
		tmp = hmdc_summ_trend_meantime1;
		name = (Char_t *)tmp->GetName();
		tmp->SetName("tmp");
		hmdc_summ_trend_meantime1 = (TH1F *)HTool::copyHistRange(tmp,name,0,-99,0,bins);
		delete tmp;
		tmp = hmdc_summ_trend_meantime1not_t1;
		name = (Char_t *)tmp->GetName();
		tmp->SetName("tmp");
		hmdc_summ_trend_meantime1not_t1 = (TH1F *)HTool::copyHistRange(tmp,name,0,-99,0,bins);
		delete tmp;
		tmp = hmdc_summ_trend_meantime1not_t2;
		name = (Char_t *)tmp->GetName();
		tmp->SetName("tmp");
		hmdc_summ_trend_meantime1not_t2 = (TH1F *)HTool::copyHistRange(tmp,name,0,-99,0,bins);
		delete tmp;
		tmp = hmdc_summ_trend_meantime1not_t12;
		name = (Char_t *)tmp->GetName();
		tmp->SetName("tmp");
		hmdc_summ_trend_meantime1not_t12 = (TH1F *)HTool::copyHistRange(tmp,name,0,-99,0,bins);
		delete tmp;
		tmp = hmdc_summ_trend_neighbors;
		name = (Char_t *)tmp->GetName();
		tmp->SetName("tmp");
		hmdc_summ_trend_neighbors = (TH1F *)HTool::copyHistRange(tmp,name,0,-99,0,bins);
		delete tmp;
		tmp = hmdc_summ_trend_123ratio;
		name = (Char_t *)tmp->GetName();
		tmp->SetName("tmp");
		hmdc_summ_trend_123ratio = (TH1F *)HTool::copyHistRange(tmp,name,0,-99,0,bins);
		delete tmp;
		tmp = hmdc_summ_trend_multiplicity;
		name = (Char_t *)tmp->GetName();
		tmp->SetName("tmp");
		hmdc_summ_trend_multiplicity = (TH1F *)HTool::copyHistRange(tmp,name,0,-99,0,bins);
		delete tmp;
        	hmdc_summ_trend_meantime1_plane->Write();
		hmdc_summ_trend_meantime1->Write();
		hmdc_summ_trend_meantime1not_t1->Write();
		hmdc_summ_trend_meantime1not_t2->Write();
		hmdc_summ_trend_meantime1not_t12->Write();
		hmdc_summ_trend_neighbors->Write();
		hmdc_summ_trend_123ratio->Write();
		hmdc_summ_trend_multiplicity->Write();

	}
        else if(main==2)
	{// write in directory plane


	}
	else if(s!=-99&&mo==-99&&l==-99&&c==-99&&main==-99)
	{// write per sector

	}
        else if(s!=-99&&mo!=-99&&l==-99&&c==-99&&main==-99)
	{// write per module

	}
        else if(s!=-99&&mo!=-99&&l!=-99&&c==-99&&main==-99)
	{
	  // Rescale trend histograms to real number of Events = TMAth::Floor(Eventcounter / stepsize_trend_meantime1).
	  
	  tmp = hmdc_trend_NhitsPERmbo[s][mo][l];
	  name = (Char_t *)tmp->GetName();
	  tmp->SetName("tmp");
	  hmdc_trend_NhitsPERmbo[s][mo][l] = (TH1F *)HTool::copyHistRange(tmp,name,0,-99,0,bins);
	  delete tmp;
	  
	  // write per mb

	    hmdc_trend_NhitsPERmbo[s][mo][l]->Write();

	}
        else if(s!=-99&&mo!=-99&&l!=-99&&c!=-99&&main==-99)
	{// write per channel


	}

    }
    else  //########################### WRITE CAL ######################################
    {// write Cal
	if(main==1)
	{// write in main directory summary

	for(Int_t is=0; is<6 ; is++)
	{
            for(Int_t im=0; im<4; im++)
	    {
                hmdc_summ_t2mt1_vs_t1[is][im]->Write();
                for(Int_t il=0; il<6; il++)
                {
                    for(Int_t cut=0; cut<3; cut++)
                    {
                        hmdc_summ_dNdWire[is][im][il][cut]->Write();
                    }
                }
	    }
	}


	}
        else  if(main==2)
	{// write in main directory plane
	    hmdc_trend_meantime1_plane[mo]->Write();

	}

	else if(s!=-99&&mo==-99&&l==-99&&c==-99&&main==-99)
	{// write per sector

	}
        else if(s!=-99&&mo!=-99&&l==-99&&c==-99&&main==-99)
	{
	  // Rescale trend histograms to real number of Events = TMAth::Floor(Eventcounter / stepsize_trend_meantime1).
	  
	  tmp = hmdc_trend_meantime1[s][mo];
	  name = (Char_t *)tmp->GetName();
	  tmp->SetName("tmp");
	  hmdc_trend_meantime1[s][mo] = (TH1F *)HTool::copyHistRange(tmp,name,0,-99,0,bins);
	  delete tmp;
	  tmp = hmdc_trend_meantime1not_t1[s][mo];
	  name = (Char_t *)tmp->GetName();
	  tmp->SetName("tmp");
	  hmdc_trend_meantime1not_t1[s][mo] = (TH1F *)HTool::copyHistRange(tmp,name,0,-99,0,bins);
	  delete tmp;
	  tmp = hmdc_trend_meantime1not_t2[s][mo];
	  name = (Char_t *)tmp->GetName();
	  tmp->SetName("tmp");
	  hmdc_trend_meantime1not_t2[s][mo] = (TH1F *)HTool::copyHistRange(tmp,name,0,-99,0,bins);
	  delete tmp;
	  tmp = hmdc_trend_meantime1not_t12[s][mo];
	  name = (Char_t *)tmp->GetName();
	  tmp->SetName("tmp");
	  hmdc_trend_meantime1not_t12[s][mo] = (TH1F *)HTool::copyHistRange(tmp,name,0,-99,0,bins);
	  delete tmp;
	  tmp = hmdc_trend_neighbors[s][mo];
	  name = (Char_t *)tmp->GetName();
	  tmp->SetName("tmp");
	  hmdc_trend_neighbors[s][mo] = (TH1F *)HTool::copyHistRange(tmp,name,0,-99,0,bins);
	  delete tmp;
	  tmp = hmdc_trend_123ratio[s][mo];
	  name = (Char_t *)tmp->GetName();
	  tmp->SetName("tmp");
	  hmdc_trend_123ratio[s][mo] = (TH1F *)HTool::copyHistRange(tmp,name,0,-99,0,bins);
	  delete tmp;
	  tmp = hmdc_trend_multiplicity[s][mo];
	  name = (Char_t *)tmp->GetName();
	  tmp->SetName("tmp");
	  hmdc_trend_multiplicity[s][mo] = (TH1F *)HTool::copyHistRange(tmp,name,0,-99,0,bins);
	  delete tmp;
	  tmp = hmdc_trend_meanSlope[s][mo];
	  name = (Char_t *)tmp->GetName();
	  tmp->SetName("tmp");
	  hmdc_trend_meanSlope[s][mo] = (TH1F *)HTool::copyHistRange(tmp,name,0,-99,0,bins);
	  delete tmp;
	  // write per module
	    hmdc_trend_meantime1[       s][mo]->Write();
	    hmdc_trend_meantime1not_t1[ s][mo]->Write();
	    hmdc_trend_meantime1not_t2[ s][mo]->Write();
	    hmdc_trend_meantime1not_t12[s][mo]->Write();
	    hmdc_trend_neighbors[       s][mo]->Write();
	    hmdc_trend_123ratio[        s][mo]->Write();
            hmdc_trend_multiplicity[    s][mo]->Write();
            hmdc_trend_meanSlope[       s][mo]->Write();
            hmdc_Slope[                 s][mo]->Write();

            //Not a trend one but summary for the file to see if everithing is OK
            hmdc_time1_everithing_summ[ s][mo]->Write();
            hmdc_time1_good_t1_summ[    s][mo]->Write();
            hmdc_time1_not_t1_summ[     s][mo]->Write();
	}
        else if(s!=-99&&mo!=-99&&l!=-99&&c==-99&&main==-99)
	{// write per layer

	}
        else if(s!=-99&&mo!=-99&&l!=-99&&c!=-99&&main==-99)
	{// write per cell


	}

    }

}
void HMdcLowLevelQA::fillHistogramsCal(Int_t s,Int_t m,Int_t l,Int_t c,Float_t time1,Float_t time2)
{

    hmdc_time1_everithing_summ[s][m]->Fill(time1);  // fill working hist per sector and module regardless on time cuts

    if(cutResults[3]==1)
    { // all time cuts passed
	hmdc_time1[s][m]   ->Fill(time1);  // fill working hist per sector and module
	hmdc_time1_plane[m]->Fill(time1);  // fill working hist per plane
        hmdc_time1_good_t1_summ[s][m]->Fill(time1); // fill working hist per sector and module only if all cuts are OK for the file at once (summary)
    }
    else if(cutResults[0]==0)
    { // cut on time1 not passed
	hmdc_time1not_t1[s][m]->Fill(time1);       // fill working hist per sector and module
        hmdc_time1_not_t1_summ[s][m]->Fill(time1); // fill working hist per sector and module only if time1 cuts failed for the file at once (summary)
    }
    else if(cutResults[1]==0)
    { // cut on time2 not passed
	hmdc_time1not_t2[s][m]->Fill(time1);  // fill working hist per sector and module
    }
    else if(cutResults[2]==0)
    { // cut on time2-time1 not passed
	hmdc_time1not_t12[s][m]->Fill(time1);  // fill working hist per sector and module
    }
}
void HMdcLowLevelQA::fillHistogramsRaw(Int_t s,Int_t m,Int_t mb,Int_t ch,Float_t time1,Float_t time2)
{
    // hmdc_summ_MBOvsTDC (independent from any cuts)
    hmdc_summ_MBOvsTDC[s][m]->Fill(ch+1, mb+1);
}

TDirectory *HMdcLowLevelQA::Mkdir(TDirectory *dirOld,const Char_t *c, Int_t i, Int_t p)    //! Makes new Dir, changes to Dir, returns pointer to new Dir
{
    // Function to create subdirectories
    static Char_t sDir[255];// = new Char_t[strlen(c)+3];
    static Char_t sFmt[10];
    if(i!=-99)
    {
	sprintf(sFmt, "%%s %%0%1ii", p);
	sprintf(sDir, sFmt, c, i);
    }
    else
    {
	sprintf(sDir,"%s", c);
    }
    TDirectory *dirNew = dirOld->mkdir(sDir);
    dirOld->cd(sDir);
    //  free (sDir);
    return dirNew;
}

void HMdcLowLevelQA::getSetup()
{
    HDetector *mdcDet = gHades->getSetup()->getDetector("Mdc");

    for(Int_t m=0; m<4; m++)
    {  //loop over modules
	numberOfSectorsPerModule[m]=0;
    }

    for(Int_t s=0; s<6; s++)
    {  //loop over sectors
	for(Int_t m=0; m<4; m++)
	{  //loop over modules
	    if (!mdcDet->getModule(s, m))
	    {
		mySetup[s][m]=0;
	    }
	    else
	    {
		mySetup[s][m]=1;
                numberOfSectorsPerModule[m]++;
	    }
	}
    }
}
Bool_t HMdcLowLevelQA::finalize(void)
{
    TFile *file = NULL;
    if (fNameRootHists)
    {
	file = new TFile(fNameRootHists,"RECREATE");
	file->cd();
	HDetector *mdcDet = gHades->getSetup()->getDetector("Mdc");

	if (!mdcDet){
	  ERROR_msg(HMessageMgr::DET_MDC,"HMdcOffsetCheck::finalize: Mdc-Detector setup (gHades->getSetup()->getDetector(\"Mdc\")) missing.");
	}
	/*cout << "Error in HMdcOffsetCheck::finalize: Mdc-Detector setup (gHades->getSetup()->getDetector(\"Mdc\")) missing." << endl;*/
	else
	    for(Int_t s=0; s<6; s++)
	    {  //loop over sectors
	      //cout<<"Sector "<<s<<endl;
		TDirectory *dirSec=NULL;
		if (file) dirSec=Mkdir(file, "sector", s);

		//################### WRITE PER SECTOR ##############################
		writeHistograms(s,-99,-99,-99,1,-99);// write hists of cal1


		//###################################################################
		for(Int_t mo=0; mo<4; mo++)
		{  //loop over modules
		  //cout<<"Module "<<mo<<endl;
		    if (!mdcDet->getModule(s, mo)) continue;
		    TDirectory *dirMod=NULL;
		    if (dirSec) dirMod=Mkdir(dirSec, "module", mo);

		    //################### WRITE PER MODULE ##############################
                    writeHistograms(s,mo,-99,-99,1,-99);// write hists of cal1
                         //################### WRITE PER MBO  ################################
                         for(Int_t mb=0; mb<16; mb++){
                         writeHistograms(s,mo,mb,-99,0,-99);// write hists of raw
                         }
		    //###################################################################
		   
			 //cout<<" "<<endl;
		    if (dirMod) dirMod->TDirectory::Cd("..");
		}
		//cout<<" "<<endl;
		if (dirSec) dirSec->TDirectory::Cd("..");
	    }
	//cout << endl;



	TDirectory *dirPlane=NULL;
        if (file) dirPlane=Mkdir(file, "Plane", -99);
	//################### WRITE PER PLANE ##############################
	for(Int_t m=0; m<4; m++)
	{  //loop over planes
	    writeHistograms(-99,m,-99,-99,1,2);
	}
	//##################################################################
        if (dirPlane) dirPlane->TDirectory::Cd("..");

	TDirectory *dirSummary=NULL;
        if (file) dirSummary=Mkdir(file, "Summary", -99);
	//################### WRITE SUMMARY ################################
	writeHistograms(-99,-99,-99,-99,0,1); //RAW
	writeHistograms(-99,-99,-99,-99,1,1); //CAL1
        writeTimeCuts();

	//##################################################################
	if (dirSummary) dirSummary->TDirectory::Cd("..");


	file->Save();
	file->Close();
    }
    else
    {
	Error("HMdcLowLevelQA:finalize()","NO OUTPUT DEFINED!");
    }
    return kTRUE;

}

Int_t HMdcLowLevelQA::execute()
{
    //cout << "----   ---- event ---- ----" << endl;
    Eventcounter++;
    //########################## FILL TREND HISTS ################################
    if(Eventcounter%stepsize_trend_meantime1==0)
    {
	if(step_trend_meantime1_counter<=200)
	{
	    for(Int_t i=0;i<6;i++)     // loop over sector
	    {
		for(Int_t j=0;j<4;j++) // loop over module
		{
		    if(hmdc_time1[i][j]->Integral()>0)
		    {

                        hmdc_trend_meanSlope[i][j]->SetBinContent(step_trend_meantime1_counter,hmdc_time1[i][j]->GetMean());

			hmdc_trend_meantime1[i][j]->SetBinContent(step_trend_meantime1_counter,hmdc_time1[i][j]->GetMean());
			hmdc_trend_meantime1[i][j]->SetBinError(  step_trend_meantime1_counter,stepsize_trend_meantime1/hmdc_time1[i][j]->Integral());
                        hmdc_summ_trend_meantime1->Fill(Double_t(j*6+i+0.5),Double_t(hmdc_time1[i][j]->GetMean()) );
		    }
		    hmdc_time1[i][j]->Reset();

		    if(hmdc_time1not_t1[i][j]->Integral()>0)
		    {
			hmdc_trend_meantime1not_t1[i][j]->SetBinContent(step_trend_meantime1_counter,hmdc_time1not_t1[i][j]->GetMean());
			hmdc_trend_meantime1not_t1[i][j]->SetBinError(  step_trend_meantime1_counter,stepsize_trend_meantime1/hmdc_time1not_t1[i][j]->Integral());
                        hmdc_summ_trend_meantime1not_t1->Fill(Double_t(j*6+i+0.5),Double_t(hmdc_time1not_t1[i][j]->GetMean()) );
		    }
		    hmdc_time1not_t1[i][j]->Reset();

		    if(hmdc_time1not_t2[i][j]->Integral()>0)
		    {
			hmdc_trend_meantime1not_t2[i][j]->SetBinContent(step_trend_meantime1_counter,hmdc_time1not_t2[i][j]->GetMean());
			hmdc_trend_meantime1not_t2[i][j]->SetBinError(  step_trend_meantime1_counter,stepsize_trend_meantime1/hmdc_time1not_t2[i][j]->Integral());
                        hmdc_summ_trend_meantime1not_t2->Fill(Double_t(j*6+i+0.5),Double_t(hmdc_time1not_t2[i][j]->GetMean()) );
		    }
                    hmdc_time1not_t2[i][j]->Reset();

		    if(hmdc_time1not_t12[i][j]->Integral()>0)
		    {
			hmdc_trend_meantime1not_t12[i][j]->SetBinContent(step_trend_meantime1_counter,hmdc_time1not_t12[i][j]->GetMean());
			hmdc_trend_meantime1not_t12[i][j]->SetBinError(  step_trend_meantime1_counter,stepsize_trend_meantime1/hmdc_time1not_t12[i][j]->Integral());
                        hmdc_summ_trend_meantime1not_t12->Fill(Double_t(j*6+i+0.5),Double_t(hmdc_time1not_t12[i][j]->GetMean()) );
		    }
		    hmdc_time1not_t12[i][j]->Reset();

		    if(double_all[i][j][1]!=0)
		    {
			hmdc_trend_neighbors[i][j]->SetBinContent(step_trend_meantime1_counter,(Float_t)double_all[i][j][0]/(Float_t)double_all[i][j][1]);
                        hmdc_summ_trend_neighbors->Fill( Double_t(j*6+i+0.5) , Double_t(double_all[i][j][0])/Double_t(double_all[i][j][1]) );
		    }
		    else
		    {
			hmdc_trend_neighbors[i][j]->SetBinContent(step_trend_meantime1_counter,0);
		    }

		    if(stepsize_trend_meantime1>0)
		    {
			hmdc_trend_123ratio[i][j]->SetBinContent(step_trend_meantime1_counter,(Float_t(cnt123[i][j])/Float_t(stepsize_trend_meantime1)) );
                        hmdc_summ_trend_123ratio->Fill(Double_t(j*6+i+0.5),(Double_t(cnt123[i][j])/Double_t(stepsize_trend_meantime1))  );
		    }
		    //################### reset "step" variables #######################
		    cnt123[i][j]=0;

		    //################### filling the trend histogram for s,m,mb counters ###############
		    for(Int_t mb=0; mb<16; mb++){
			if(stepsize_trend_meantime1>0)
			{
			    hmdc_trend_NhitsPERmbo[i][j][mb]->SetBinContent(step_trend_meantime1_counter,Float_t(NhitsPERmbo[i][j][mb])/Float_t(stepsize_trend_meantime1));
			}
			NhitsPERmbo[i][j][mb]=0; //resetting for the next iteration step
		    }

		    if(hmdc_multiplicity[i][j]->Integral()>0)
		    {
			hmdc_trend_multiplicity[i][j]->SetBinContent(step_trend_meantime1_counter,hmdc_multiplicity[i][j]->GetMean());
			hmdc_trend_multiplicity[i][j]->SetBinError(  step_trend_meantime1_counter,hmdc_multiplicity[i][j]->GetRMS()/hmdc_multiplicity[i][j]->Integral());
                        hmdc_summ_trend_multiplicity->Fill(Double_t(j*6+i+0.5),Double_t(hmdc_multiplicity[i][j]->GetMean()) );
		    }
		    hmdc_multiplicity[i][j]->Reset();
		}
	    }
	    for(Int_t j=0;j<4;j++)// loop over planes
	    {
		if(hmdc_time1_plane[j]->Integral()>0)
		{
		    hmdc_trend_meantime1_plane[j]->SetBinContent(step_trend_meantime1_counter,hmdc_time1_plane[j]->GetMean());
		    hmdc_trend_meantime1_plane[j]->SetBinError(step_trend_meantime1_counter,(stepsize_trend_meantime1*numberOfSectorsPerModule[j])/hmdc_time1_plane[j]->Integral());
                    hmdc_summ_trend_meantime1_plane->Fill(Double_t(j), Double_t(hmdc_time1_plane[j]->GetMean()));
		}
		hmdc_time1_plane[j]->Reset();
	    }

	    step_trend_meantime1_counter++;  // count up the bin to be filled
	    resetCounters();
	}
	else
	{
	    Error("HMdcLOwLevelQA:execute()","Maximum number of steps in trend histograms exceeded!");
	}
    }
    //############################################################################


    HMdcCal1* cal=0;
    HMdcRaw* raw=0;

    Int_t mb, ch;
    Int_t l, c;
    Int_t s,m;
    Float_t time1=-99;
    Float_t time2=-99;

    itercal1->Reset();
    iterraw->Reset();

    //########################## Fill RAW HISTS ##################################
    while ((raw=(HMdcRaw *)iterraw->Next())!=0) {
	raw->getAddress(s,m,mb,ch);
        //cout<<">>s,m,mb,ch =="<<s<<" "<<m<<" "<<mb<<" "<<ch<< endl;

	time1=raw->getTime(1);
        time2=raw->getTime(2);

	time1=-99;
        time2=-99;

	//############# s,m,mb combination counter ##############################
	{
	    if(s==smmb_old[0] && m==smmb_old[1] && mb==smmb_old[2]){
	    }else{
		//new chamber is read from "cal->getAddress(s,m,l,c);"
                smmb_old[0]=s, smmb_old[1]=m, smmb_old[2]=mb;  //store the old step values
	    }
            NhitsPERmbo[s][m][mb]++;
	}
        //#######################################################################

	fillHistogramsRaw(s, m, mb, ch, time1, time2);

    }
    //############################################################################

    //######################### FIll CAL1 HISTS ##################################
    while ((cal=(HMdcCal1 *)itercal1->Next())!=0) {
	cal->getAddress(s,m,l,c);
	//cout<<">>s,m,l,c =="<<s<<" "<<m<<" "<<l<<" "<<c<< endl;


	//############# 123 cells counter #######################################
	{
	    if(s==sm_old[0] && m==sm_old[1])
	    {
	    }
	    else
	    {
		//new chamber started to be red from "cal->getAddress(s,m,l,c);"
		if(sect_module_NumberOfHits[sm_old[0]][sm_old[1]]>0 &&
		   sect_module_NumberOfHits[sm_old[0]][sm_old[1]]<4    )
		{
                 cnt123[sm_old[0]][sm_old[1]]++;
		}
                hmdc_multiplicity[ s][m]->Fill(sect_module_NumberOfHits[s][m]);
                hmdc_summ_dNdNhits[s][m]->Fill(sect_module_NumberOfHits[s][m]); //the same as "hmdc_multiplicity" but will be saved and has less number of bins
		sect_module_NumberOfHits[s][m]=0;
                sm_old[0]=s, sm_old[1]=m;  //store the old step values
	    }
            sect_module_NumberOfHits[s][m]++;
	}
        //#######################################################################

	HMdcLookupCell& cell=(*lookupRaw)[s][m][l][c];
	mb=cell.getNMoth();
	ch=cell.getNChan();
	time1=cal->getTime1();
        time2=cal->getTime2();
        
        testTimeCuts(s,m,time1,time2);
        lookupSlopes(s,m);
	//############# FILL NEIGHBORS/ALL #######################################
        if(cutResults[3]==1)checkNeighboringCells(s,m,c);// if time cuts are passed
	//########################################################################
        fillHistogramsCal(s,m,l,c,time1,time2);

        hmdc_summ_dNdWire[s][m][l][0]->Fill(Double_t(c-0.5),1.);
        if(cutResults[0]==1){
           hmdc_summ_dNdWire[s][m][l][1]->Fill(Double_t(c-0.5),1.);
        }
        if(cutResults[3]==1){
           hmdc_summ_dNdWire[s][m][l][2]->Fill(Double_t(c-0.5),1.);
        }
        

	time1=-99;
        time2=-99;

    }
    //############################################################################



    return 0;
}

 hmdclowlevelqa.cc:1
 hmdclowlevelqa.cc:2
 hmdclowlevelqa.cc:3
 hmdclowlevelqa.cc:4
 hmdclowlevelqa.cc:5
 hmdclowlevelqa.cc:6
 hmdclowlevelqa.cc:7
 hmdclowlevelqa.cc:8
 hmdclowlevelqa.cc:9
 hmdclowlevelqa.cc:10
 hmdclowlevelqa.cc:11
 hmdclowlevelqa.cc:12
 hmdclowlevelqa.cc:13
 hmdclowlevelqa.cc:14
 hmdclowlevelqa.cc:15
 hmdclowlevelqa.cc:16
 hmdclowlevelqa.cc:17
 hmdclowlevelqa.cc:18
 hmdclowlevelqa.cc:19
 hmdclowlevelqa.cc:20
 hmdclowlevelqa.cc:21
 hmdclowlevelqa.cc:22
 hmdclowlevelqa.cc:23
 hmdclowlevelqa.cc:24
 hmdclowlevelqa.cc:25
 hmdclowlevelqa.cc:26
 hmdclowlevelqa.cc:27
 hmdclowlevelqa.cc:28
 hmdclowlevelqa.cc:29
 hmdclowlevelqa.cc:30
 hmdclowlevelqa.cc:31
 hmdclowlevelqa.cc:32
 hmdclowlevelqa.cc:33
 hmdclowlevelqa.cc:34
 hmdclowlevelqa.cc:35
 hmdclowlevelqa.cc:36
 hmdclowlevelqa.cc:37
 hmdclowlevelqa.cc:38
 hmdclowlevelqa.cc:39
 hmdclowlevelqa.cc:40
 hmdclowlevelqa.cc:41
 hmdclowlevelqa.cc:42
 hmdclowlevelqa.cc:43
 hmdclowlevelqa.cc:44
 hmdclowlevelqa.cc:45
 hmdclowlevelqa.cc:46
 hmdclowlevelqa.cc:47
 hmdclowlevelqa.cc:48
 hmdclowlevelqa.cc:49
 hmdclowlevelqa.cc:50
 hmdclowlevelqa.cc:51
 hmdclowlevelqa.cc:52
 hmdclowlevelqa.cc:53
 hmdclowlevelqa.cc:54
 hmdclowlevelqa.cc:55
 hmdclowlevelqa.cc:56
 hmdclowlevelqa.cc:57
 hmdclowlevelqa.cc:58
 hmdclowlevelqa.cc:59
 hmdclowlevelqa.cc:60
 hmdclowlevelqa.cc:61
 hmdclowlevelqa.cc:62
 hmdclowlevelqa.cc:63
 hmdclowlevelqa.cc:64
 hmdclowlevelqa.cc:65
 hmdclowlevelqa.cc:66
 hmdclowlevelqa.cc:67
 hmdclowlevelqa.cc:68
 hmdclowlevelqa.cc:69
 hmdclowlevelqa.cc:70
 hmdclowlevelqa.cc:71
 hmdclowlevelqa.cc:72
 hmdclowlevelqa.cc:73
 hmdclowlevelqa.cc:74
 hmdclowlevelqa.cc:75
 hmdclowlevelqa.cc:76
 hmdclowlevelqa.cc:77
 hmdclowlevelqa.cc:78
 hmdclowlevelqa.cc:79
 hmdclowlevelqa.cc:80
 hmdclowlevelqa.cc:81
 hmdclowlevelqa.cc:82
 hmdclowlevelqa.cc:83
 hmdclowlevelqa.cc:84
 hmdclowlevelqa.cc:85
 hmdclowlevelqa.cc:86
 hmdclowlevelqa.cc:87
 hmdclowlevelqa.cc:88
 hmdclowlevelqa.cc:89
 hmdclowlevelqa.cc:90
 hmdclowlevelqa.cc:91
 hmdclowlevelqa.cc:92
 hmdclowlevelqa.cc:93
 hmdclowlevelqa.cc:94
 hmdclowlevelqa.cc:95
 hmdclowlevelqa.cc:96
 hmdclowlevelqa.cc:97
 hmdclowlevelqa.cc:98
 hmdclowlevelqa.cc:99
 hmdclowlevelqa.cc:100
 hmdclowlevelqa.cc:101
 hmdclowlevelqa.cc:102
 hmdclowlevelqa.cc:103
 hmdclowlevelqa.cc:104
 hmdclowlevelqa.cc:105
 hmdclowlevelqa.cc:106
 hmdclowlevelqa.cc:107
 hmdclowlevelqa.cc:108
 hmdclowlevelqa.cc:109
 hmdclowlevelqa.cc:110
 hmdclowlevelqa.cc:111
 hmdclowlevelqa.cc:112
 hmdclowlevelqa.cc:113
 hmdclowlevelqa.cc:114
 hmdclowlevelqa.cc:115
 hmdclowlevelqa.cc:116
 hmdclowlevelqa.cc:117
 hmdclowlevelqa.cc:118
 hmdclowlevelqa.cc:119
 hmdclowlevelqa.cc:120
 hmdclowlevelqa.cc:121
 hmdclowlevelqa.cc:122
 hmdclowlevelqa.cc:123
 hmdclowlevelqa.cc:124
 hmdclowlevelqa.cc:125
 hmdclowlevelqa.cc:126
 hmdclowlevelqa.cc:127
 hmdclowlevelqa.cc:128
 hmdclowlevelqa.cc:129
 hmdclowlevelqa.cc:130
 hmdclowlevelqa.cc:131
 hmdclowlevelqa.cc:132
 hmdclowlevelqa.cc:133
 hmdclowlevelqa.cc:134
 hmdclowlevelqa.cc:135
 hmdclowlevelqa.cc:136
 hmdclowlevelqa.cc:137
 hmdclowlevelqa.cc:138
 hmdclowlevelqa.cc:139
 hmdclowlevelqa.cc:140
 hmdclowlevelqa.cc:141
 hmdclowlevelqa.cc:142
 hmdclowlevelqa.cc:143
 hmdclowlevelqa.cc:144
 hmdclowlevelqa.cc:145
 hmdclowlevelqa.cc:146
 hmdclowlevelqa.cc:147
 hmdclowlevelqa.cc:148
 hmdclowlevelqa.cc:149
 hmdclowlevelqa.cc:150
 hmdclowlevelqa.cc:151
 hmdclowlevelqa.cc:152
 hmdclowlevelqa.cc:153
 hmdclowlevelqa.cc:154
 hmdclowlevelqa.cc:155
 hmdclowlevelqa.cc:156
 hmdclowlevelqa.cc:157
 hmdclowlevelqa.cc:158
 hmdclowlevelqa.cc:159
 hmdclowlevelqa.cc:160
 hmdclowlevelqa.cc:161
 hmdclowlevelqa.cc:162
 hmdclowlevelqa.cc:163
 hmdclowlevelqa.cc:164
 hmdclowlevelqa.cc:165
 hmdclowlevelqa.cc:166
 hmdclowlevelqa.cc:167
 hmdclowlevelqa.cc:168
 hmdclowlevelqa.cc:169
 hmdclowlevelqa.cc:170
 hmdclowlevelqa.cc:171
 hmdclowlevelqa.cc:172
 hmdclowlevelqa.cc:173
 hmdclowlevelqa.cc:174
 hmdclowlevelqa.cc:175
 hmdclowlevelqa.cc:176
 hmdclowlevelqa.cc:177
 hmdclowlevelqa.cc:178
 hmdclowlevelqa.cc:179
 hmdclowlevelqa.cc:180
 hmdclowlevelqa.cc:181
 hmdclowlevelqa.cc:182
 hmdclowlevelqa.cc:183
 hmdclowlevelqa.cc:184
 hmdclowlevelqa.cc:185
 hmdclowlevelqa.cc:186
 hmdclowlevelqa.cc:187
 hmdclowlevelqa.cc:188
 hmdclowlevelqa.cc:189
 hmdclowlevelqa.cc:190
 hmdclowlevelqa.cc:191
 hmdclowlevelqa.cc:192
 hmdclowlevelqa.cc:193
 hmdclowlevelqa.cc:194
 hmdclowlevelqa.cc:195
 hmdclowlevelqa.cc:196
 hmdclowlevelqa.cc:197
 hmdclowlevelqa.cc:198
 hmdclowlevelqa.cc:199
 hmdclowlevelqa.cc:200
 hmdclowlevelqa.cc:201
 hmdclowlevelqa.cc:202
 hmdclowlevelqa.cc:203
 hmdclowlevelqa.cc:204
 hmdclowlevelqa.cc:205
 hmdclowlevelqa.cc:206
 hmdclowlevelqa.cc:207
 hmdclowlevelqa.cc:208
 hmdclowlevelqa.cc:209
 hmdclowlevelqa.cc:210
 hmdclowlevelqa.cc:211
 hmdclowlevelqa.cc:212
 hmdclowlevelqa.cc:213
 hmdclowlevelqa.cc:214
 hmdclowlevelqa.cc:215
 hmdclowlevelqa.cc:216
 hmdclowlevelqa.cc:217
 hmdclowlevelqa.cc:218
 hmdclowlevelqa.cc:219
 hmdclowlevelqa.cc:220
 hmdclowlevelqa.cc:221
 hmdclowlevelqa.cc:222
 hmdclowlevelqa.cc:223
 hmdclowlevelqa.cc:224
 hmdclowlevelqa.cc:225
 hmdclowlevelqa.cc:226
 hmdclowlevelqa.cc:227
 hmdclowlevelqa.cc:228
 hmdclowlevelqa.cc:229
 hmdclowlevelqa.cc:230
 hmdclowlevelqa.cc:231
 hmdclowlevelqa.cc:232
 hmdclowlevelqa.cc:233
 hmdclowlevelqa.cc:234
 hmdclowlevelqa.cc:235
 hmdclowlevelqa.cc:236
 hmdclowlevelqa.cc:237
 hmdclowlevelqa.cc:238
 hmdclowlevelqa.cc:239
 hmdclowlevelqa.cc:240
 hmdclowlevelqa.cc:241
 hmdclowlevelqa.cc:242
 hmdclowlevelqa.cc:243
 hmdclowlevelqa.cc:244
 hmdclowlevelqa.cc:245
 hmdclowlevelqa.cc:246
 hmdclowlevelqa.cc:247
 hmdclowlevelqa.cc:248
 hmdclowlevelqa.cc:249
 hmdclowlevelqa.cc:250
 hmdclowlevelqa.cc:251
 hmdclowlevelqa.cc:252
 hmdclowlevelqa.cc:253
 hmdclowlevelqa.cc:254
 hmdclowlevelqa.cc:255
 hmdclowlevelqa.cc:256
 hmdclowlevelqa.cc:257
 hmdclowlevelqa.cc:258
 hmdclowlevelqa.cc:259
 hmdclowlevelqa.cc:260
 hmdclowlevelqa.cc:261
 hmdclowlevelqa.cc:262
 hmdclowlevelqa.cc:263
 hmdclowlevelqa.cc:264
 hmdclowlevelqa.cc:265
 hmdclowlevelqa.cc:266
 hmdclowlevelqa.cc:267
 hmdclowlevelqa.cc:268
 hmdclowlevelqa.cc:269
 hmdclowlevelqa.cc:270
 hmdclowlevelqa.cc:271
 hmdclowlevelqa.cc:272
 hmdclowlevelqa.cc:273
 hmdclowlevelqa.cc:274
 hmdclowlevelqa.cc:275
 hmdclowlevelqa.cc:276
 hmdclowlevelqa.cc:277
 hmdclowlevelqa.cc:278
 hmdclowlevelqa.cc:279
 hmdclowlevelqa.cc:280
 hmdclowlevelqa.cc:281
 hmdclowlevelqa.cc:282
 hmdclowlevelqa.cc:283
 hmdclowlevelqa.cc:284
 hmdclowlevelqa.cc:285
 hmdclowlevelqa.cc:286
 hmdclowlevelqa.cc:287
 hmdclowlevelqa.cc:288
 hmdclowlevelqa.cc:289
 hmdclowlevelqa.cc:290
 hmdclowlevelqa.cc:291
 hmdclowlevelqa.cc:292
 hmdclowlevelqa.cc:293
 hmdclowlevelqa.cc:294
 hmdclowlevelqa.cc:295
 hmdclowlevelqa.cc:296
 hmdclowlevelqa.cc:297
 hmdclowlevelqa.cc:298
 hmdclowlevelqa.cc:299
 hmdclowlevelqa.cc:300
 hmdclowlevelqa.cc:301
 hmdclowlevelqa.cc:302
 hmdclowlevelqa.cc:303
 hmdclowlevelqa.cc:304
 hmdclowlevelqa.cc:305
 hmdclowlevelqa.cc:306
 hmdclowlevelqa.cc:307
 hmdclowlevelqa.cc:308
 hmdclowlevelqa.cc:309
 hmdclowlevelqa.cc:310
 hmdclowlevelqa.cc:311
 hmdclowlevelqa.cc:312
 hmdclowlevelqa.cc:313
 hmdclowlevelqa.cc:314
 hmdclowlevelqa.cc:315
 hmdclowlevelqa.cc:316
 hmdclowlevelqa.cc:317
 hmdclowlevelqa.cc:318
 hmdclowlevelqa.cc:319
 hmdclowlevelqa.cc:320
 hmdclowlevelqa.cc:321
 hmdclowlevelqa.cc:322
 hmdclowlevelqa.cc:323
 hmdclowlevelqa.cc:324
 hmdclowlevelqa.cc:325
 hmdclowlevelqa.cc:326
 hmdclowlevelqa.cc:327
 hmdclowlevelqa.cc:328
 hmdclowlevelqa.cc:329
 hmdclowlevelqa.cc:330
 hmdclowlevelqa.cc:331
 hmdclowlevelqa.cc:332
 hmdclowlevelqa.cc:333
 hmdclowlevelqa.cc:334
 hmdclowlevelqa.cc:335
 hmdclowlevelqa.cc:336
 hmdclowlevelqa.cc:337
 hmdclowlevelqa.cc:338
 hmdclowlevelqa.cc:339
 hmdclowlevelqa.cc:340
 hmdclowlevelqa.cc:341
 hmdclowlevelqa.cc:342
 hmdclowlevelqa.cc:343
 hmdclowlevelqa.cc:344
 hmdclowlevelqa.cc:345
 hmdclowlevelqa.cc:346
 hmdclowlevelqa.cc:347
 hmdclowlevelqa.cc:348
 hmdclowlevelqa.cc:349
 hmdclowlevelqa.cc:350
 hmdclowlevelqa.cc:351
 hmdclowlevelqa.cc:352
 hmdclowlevelqa.cc:353
 hmdclowlevelqa.cc:354
 hmdclowlevelqa.cc:355
 hmdclowlevelqa.cc:356
 hmdclowlevelqa.cc:357
 hmdclowlevelqa.cc:358
 hmdclowlevelqa.cc:359
 hmdclowlevelqa.cc:360
 hmdclowlevelqa.cc:361
 hmdclowlevelqa.cc:362
 hmdclowlevelqa.cc:363
 hmdclowlevelqa.cc:364
 hmdclowlevelqa.cc:365
 hmdclowlevelqa.cc:366
 hmdclowlevelqa.cc:367
 hmdclowlevelqa.cc:368
 hmdclowlevelqa.cc:369
 hmdclowlevelqa.cc:370
 hmdclowlevelqa.cc:371
 hmdclowlevelqa.cc:372
 hmdclowlevelqa.cc:373
 hmdclowlevelqa.cc:374
 hmdclowlevelqa.cc:375
 hmdclowlevelqa.cc:376
 hmdclowlevelqa.cc:377
 hmdclowlevelqa.cc:378
 hmdclowlevelqa.cc:379
 hmdclowlevelqa.cc:380
 hmdclowlevelqa.cc:381
 hmdclowlevelqa.cc:382
 hmdclowlevelqa.cc:383
 hmdclowlevelqa.cc:384
 hmdclowlevelqa.cc:385
 hmdclowlevelqa.cc:386
 hmdclowlevelqa.cc:387
 hmdclowlevelqa.cc:388
 hmdclowlevelqa.cc:389
 hmdclowlevelqa.cc:390
 hmdclowlevelqa.cc:391
 hmdclowlevelqa.cc:392
 hmdclowlevelqa.cc:393
 hmdclowlevelqa.cc:394
 hmdclowlevelqa.cc:395
 hmdclowlevelqa.cc:396
 hmdclowlevelqa.cc:397
 hmdclowlevelqa.cc:398
 hmdclowlevelqa.cc:399
 hmdclowlevelqa.cc:400
 hmdclowlevelqa.cc:401
 hmdclowlevelqa.cc:402
 hmdclowlevelqa.cc:403
 hmdclowlevelqa.cc:404
 hmdclowlevelqa.cc:405
 hmdclowlevelqa.cc:406
 hmdclowlevelqa.cc:407
 hmdclowlevelqa.cc:408
 hmdclowlevelqa.cc:409
 hmdclowlevelqa.cc:410
 hmdclowlevelqa.cc:411
 hmdclowlevelqa.cc:412
 hmdclowlevelqa.cc:413
 hmdclowlevelqa.cc:414
 hmdclowlevelqa.cc:415
 hmdclowlevelqa.cc:416
 hmdclowlevelqa.cc:417
 hmdclowlevelqa.cc:418
 hmdclowlevelqa.cc:419
 hmdclowlevelqa.cc:420
 hmdclowlevelqa.cc:421
 hmdclowlevelqa.cc:422
 hmdclowlevelqa.cc:423
 hmdclowlevelqa.cc:424
 hmdclowlevelqa.cc:425
 hmdclowlevelqa.cc:426
 hmdclowlevelqa.cc:427
 hmdclowlevelqa.cc:428
 hmdclowlevelqa.cc:429
 hmdclowlevelqa.cc:430
 hmdclowlevelqa.cc:431
 hmdclowlevelqa.cc:432
 hmdclowlevelqa.cc:433
 hmdclowlevelqa.cc:434
 hmdclowlevelqa.cc:435
 hmdclowlevelqa.cc:436
 hmdclowlevelqa.cc:437
 hmdclowlevelqa.cc:438
 hmdclowlevelqa.cc:439
 hmdclowlevelqa.cc:440
 hmdclowlevelqa.cc:441
 hmdclowlevelqa.cc:442
 hmdclowlevelqa.cc:443
 hmdclowlevelqa.cc:444
 hmdclowlevelqa.cc:445
 hmdclowlevelqa.cc:446
 hmdclowlevelqa.cc:447
 hmdclowlevelqa.cc:448
 hmdclowlevelqa.cc:449
 hmdclowlevelqa.cc:450
 hmdclowlevelqa.cc:451
 hmdclowlevelqa.cc:452
 hmdclowlevelqa.cc:453
 hmdclowlevelqa.cc:454
 hmdclowlevelqa.cc:455
 hmdclowlevelqa.cc:456
 hmdclowlevelqa.cc:457
 hmdclowlevelqa.cc:458
 hmdclowlevelqa.cc:459
 hmdclowlevelqa.cc:460
 hmdclowlevelqa.cc:461
 hmdclowlevelqa.cc:462
 hmdclowlevelqa.cc:463
 hmdclowlevelqa.cc:464
 hmdclowlevelqa.cc:465
 hmdclowlevelqa.cc:466
 hmdclowlevelqa.cc:467
 hmdclowlevelqa.cc:468
 hmdclowlevelqa.cc:469
 hmdclowlevelqa.cc:470
 hmdclowlevelqa.cc:471
 hmdclowlevelqa.cc:472
 hmdclowlevelqa.cc:473
 hmdclowlevelqa.cc:474
 hmdclowlevelqa.cc:475
 hmdclowlevelqa.cc:476
 hmdclowlevelqa.cc:477
 hmdclowlevelqa.cc:478
 hmdclowlevelqa.cc:479
 hmdclowlevelqa.cc:480
 hmdclowlevelqa.cc:481
 hmdclowlevelqa.cc:482
 hmdclowlevelqa.cc:483
 hmdclowlevelqa.cc:484
 hmdclowlevelqa.cc:485
 hmdclowlevelqa.cc:486
 hmdclowlevelqa.cc:487
 hmdclowlevelqa.cc:488
 hmdclowlevelqa.cc:489
 hmdclowlevelqa.cc:490
 hmdclowlevelqa.cc:491
 hmdclowlevelqa.cc:492
 hmdclowlevelqa.cc:493
 hmdclowlevelqa.cc:494
 hmdclowlevelqa.cc:495
 hmdclowlevelqa.cc:496
 hmdclowlevelqa.cc:497
 hmdclowlevelqa.cc:498
 hmdclowlevelqa.cc:499
 hmdclowlevelqa.cc:500
 hmdclowlevelqa.cc:501
 hmdclowlevelqa.cc:502
 hmdclowlevelqa.cc:503
 hmdclowlevelqa.cc:504
 hmdclowlevelqa.cc:505
 hmdclowlevelqa.cc:506
 hmdclowlevelqa.cc:507
 hmdclowlevelqa.cc:508
 hmdclowlevelqa.cc:509
 hmdclowlevelqa.cc:510
 hmdclowlevelqa.cc:511
 hmdclowlevelqa.cc:512
 hmdclowlevelqa.cc:513
 hmdclowlevelqa.cc:514
 hmdclowlevelqa.cc:515
 hmdclowlevelqa.cc:516
 hmdclowlevelqa.cc:517
 hmdclowlevelqa.cc:518
 hmdclowlevelqa.cc:519
 hmdclowlevelqa.cc:520
 hmdclowlevelqa.cc:521
 hmdclowlevelqa.cc:522
 hmdclowlevelqa.cc:523
 hmdclowlevelqa.cc:524
 hmdclowlevelqa.cc:525
 hmdclowlevelqa.cc:526
 hmdclowlevelqa.cc:527
 hmdclowlevelqa.cc:528
 hmdclowlevelqa.cc:529
 hmdclowlevelqa.cc:530
 hmdclowlevelqa.cc:531
 hmdclowlevelqa.cc:532
 hmdclowlevelqa.cc:533
 hmdclowlevelqa.cc:534
 hmdclowlevelqa.cc:535
 hmdclowlevelqa.cc:536
 hmdclowlevelqa.cc:537
 hmdclowlevelqa.cc:538
 hmdclowlevelqa.cc:539
 hmdclowlevelqa.cc:540
 hmdclowlevelqa.cc:541
 hmdclowlevelqa.cc:542
 hmdclowlevelqa.cc:543
 hmdclowlevelqa.cc:544
 hmdclowlevelqa.cc:545
 hmdclowlevelqa.cc:546
 hmdclowlevelqa.cc:547
 hmdclowlevelqa.cc:548
 hmdclowlevelqa.cc:549
 hmdclowlevelqa.cc:550
 hmdclowlevelqa.cc:551
 hmdclowlevelqa.cc:552
 hmdclowlevelqa.cc:553
 hmdclowlevelqa.cc:554
 hmdclowlevelqa.cc:555
 hmdclowlevelqa.cc:556
 hmdclowlevelqa.cc:557
 hmdclowlevelqa.cc:558
 hmdclowlevelqa.cc:559
 hmdclowlevelqa.cc:560
 hmdclowlevelqa.cc:561
 hmdclowlevelqa.cc:562
 hmdclowlevelqa.cc:563
 hmdclowlevelqa.cc:564
 hmdclowlevelqa.cc:565
 hmdclowlevelqa.cc:566
 hmdclowlevelqa.cc:567
 hmdclowlevelqa.cc:568
 hmdclowlevelqa.cc:569
 hmdclowlevelqa.cc:570
 hmdclowlevelqa.cc:571
 hmdclowlevelqa.cc:572
 hmdclowlevelqa.cc:573
 hmdclowlevelqa.cc:574
 hmdclowlevelqa.cc:575
 hmdclowlevelqa.cc:576
 hmdclowlevelqa.cc:577
 hmdclowlevelqa.cc:578
 hmdclowlevelqa.cc:579
 hmdclowlevelqa.cc:580
 hmdclowlevelqa.cc:581
 hmdclowlevelqa.cc:582
 hmdclowlevelqa.cc:583
 hmdclowlevelqa.cc:584
 hmdclowlevelqa.cc:585
 hmdclowlevelqa.cc:586
 hmdclowlevelqa.cc:587
 hmdclowlevelqa.cc:588
 hmdclowlevelqa.cc:589
 hmdclowlevelqa.cc:590
 hmdclowlevelqa.cc:591
 hmdclowlevelqa.cc:592
 hmdclowlevelqa.cc:593
 hmdclowlevelqa.cc:594
 hmdclowlevelqa.cc:595
 hmdclowlevelqa.cc:596
 hmdclowlevelqa.cc:597
 hmdclowlevelqa.cc:598
 hmdclowlevelqa.cc:599
 hmdclowlevelqa.cc:600
 hmdclowlevelqa.cc:601
 hmdclowlevelqa.cc:602
 hmdclowlevelqa.cc:603
 hmdclowlevelqa.cc:604
 hmdclowlevelqa.cc:605
 hmdclowlevelqa.cc:606
 hmdclowlevelqa.cc:607
 hmdclowlevelqa.cc:608
 hmdclowlevelqa.cc:609
 hmdclowlevelqa.cc:610
 hmdclowlevelqa.cc:611
 hmdclowlevelqa.cc:612
 hmdclowlevelqa.cc:613
 hmdclowlevelqa.cc:614
 hmdclowlevelqa.cc:615
 hmdclowlevelqa.cc:616
 hmdclowlevelqa.cc:617
 hmdclowlevelqa.cc:618
 hmdclowlevelqa.cc:619
 hmdclowlevelqa.cc:620
 hmdclowlevelqa.cc:621
 hmdclowlevelqa.cc:622
 hmdclowlevelqa.cc:623
 hmdclowlevelqa.cc:624
 hmdclowlevelqa.cc:625
 hmdclowlevelqa.cc:626
 hmdclowlevelqa.cc:627
 hmdclowlevelqa.cc:628
 hmdclowlevelqa.cc:629
 hmdclowlevelqa.cc:630
 hmdclowlevelqa.cc:631
 hmdclowlevelqa.cc:632
 hmdclowlevelqa.cc:633
 hmdclowlevelqa.cc:634
 hmdclowlevelqa.cc:635
 hmdclowlevelqa.cc:636
 hmdclowlevelqa.cc:637
 hmdclowlevelqa.cc:638
 hmdclowlevelqa.cc:639
 hmdclowlevelqa.cc:640
 hmdclowlevelqa.cc:641
 hmdclowlevelqa.cc:642
 hmdclowlevelqa.cc:643
 hmdclowlevelqa.cc:644
 hmdclowlevelqa.cc:645
 hmdclowlevelqa.cc:646
 hmdclowlevelqa.cc:647
 hmdclowlevelqa.cc:648
 hmdclowlevelqa.cc:649
 hmdclowlevelqa.cc:650
 hmdclowlevelqa.cc:651
 hmdclowlevelqa.cc:652
 hmdclowlevelqa.cc:653
 hmdclowlevelqa.cc:654
 hmdclowlevelqa.cc:655
 hmdclowlevelqa.cc:656
 hmdclowlevelqa.cc:657
 hmdclowlevelqa.cc:658
 hmdclowlevelqa.cc:659
 hmdclowlevelqa.cc:660
 hmdclowlevelqa.cc:661
 hmdclowlevelqa.cc:662
 hmdclowlevelqa.cc:663
 hmdclowlevelqa.cc:664
 hmdclowlevelqa.cc:665
 hmdclowlevelqa.cc:666
 hmdclowlevelqa.cc:667
 hmdclowlevelqa.cc:668
 hmdclowlevelqa.cc:669
 hmdclowlevelqa.cc:670
 hmdclowlevelqa.cc:671
 hmdclowlevelqa.cc:672
 hmdclowlevelqa.cc:673
 hmdclowlevelqa.cc:674
 hmdclowlevelqa.cc:675
 hmdclowlevelqa.cc:676
 hmdclowlevelqa.cc:677
 hmdclowlevelqa.cc:678
 hmdclowlevelqa.cc:679
 hmdclowlevelqa.cc:680
 hmdclowlevelqa.cc:681
 hmdclowlevelqa.cc:682
 hmdclowlevelqa.cc:683
 hmdclowlevelqa.cc:684
 hmdclowlevelqa.cc:685
 hmdclowlevelqa.cc:686
 hmdclowlevelqa.cc:687
 hmdclowlevelqa.cc:688
 hmdclowlevelqa.cc:689
 hmdclowlevelqa.cc:690
 hmdclowlevelqa.cc:691
 hmdclowlevelqa.cc:692
 hmdclowlevelqa.cc:693
 hmdclowlevelqa.cc:694
 hmdclowlevelqa.cc:695
 hmdclowlevelqa.cc:696
 hmdclowlevelqa.cc:697
 hmdclowlevelqa.cc:698
 hmdclowlevelqa.cc:699
 hmdclowlevelqa.cc:700
 hmdclowlevelqa.cc:701
 hmdclowlevelqa.cc:702
 hmdclowlevelqa.cc:703
 hmdclowlevelqa.cc:704
 hmdclowlevelqa.cc:705
 hmdclowlevelqa.cc:706
 hmdclowlevelqa.cc:707
 hmdclowlevelqa.cc:708
 hmdclowlevelqa.cc:709
 hmdclowlevelqa.cc:710
 hmdclowlevelqa.cc:711
 hmdclowlevelqa.cc:712
 hmdclowlevelqa.cc:713
 hmdclowlevelqa.cc:714
 hmdclowlevelqa.cc:715
 hmdclowlevelqa.cc:716
 hmdclowlevelqa.cc:717
 hmdclowlevelqa.cc:718
 hmdclowlevelqa.cc:719
 hmdclowlevelqa.cc:720
 hmdclowlevelqa.cc:721
 hmdclowlevelqa.cc:722
 hmdclowlevelqa.cc:723
 hmdclowlevelqa.cc:724
 hmdclowlevelqa.cc:725
 hmdclowlevelqa.cc:726
 hmdclowlevelqa.cc:727
 hmdclowlevelqa.cc:728
 hmdclowlevelqa.cc:729
 hmdclowlevelqa.cc:730
 hmdclowlevelqa.cc:731
 hmdclowlevelqa.cc:732
 hmdclowlevelqa.cc:733
 hmdclowlevelqa.cc:734
 hmdclowlevelqa.cc:735
 hmdclowlevelqa.cc:736
 hmdclowlevelqa.cc:737
 hmdclowlevelqa.cc:738
 hmdclowlevelqa.cc:739
 hmdclowlevelqa.cc:740
 hmdclowlevelqa.cc:741
 hmdclowlevelqa.cc:742
 hmdclowlevelqa.cc:743
 hmdclowlevelqa.cc:744
 hmdclowlevelqa.cc:745
 hmdclowlevelqa.cc:746
 hmdclowlevelqa.cc:747
 hmdclowlevelqa.cc:748
 hmdclowlevelqa.cc:749
 hmdclowlevelqa.cc:750
 hmdclowlevelqa.cc:751
 hmdclowlevelqa.cc:752
 hmdclowlevelqa.cc:753
 hmdclowlevelqa.cc:754
 hmdclowlevelqa.cc:755
 hmdclowlevelqa.cc:756
 hmdclowlevelqa.cc:757
 hmdclowlevelqa.cc:758
 hmdclowlevelqa.cc:759
 hmdclowlevelqa.cc:760
 hmdclowlevelqa.cc:761
 hmdclowlevelqa.cc:762
 hmdclowlevelqa.cc:763
 hmdclowlevelqa.cc:764
 hmdclowlevelqa.cc:765
 hmdclowlevelqa.cc:766
 hmdclowlevelqa.cc:767
 hmdclowlevelqa.cc:768
 hmdclowlevelqa.cc:769
 hmdclowlevelqa.cc:770
 hmdclowlevelqa.cc:771
 hmdclowlevelqa.cc:772
 hmdclowlevelqa.cc:773
 hmdclowlevelqa.cc:774
 hmdclowlevelqa.cc:775
 hmdclowlevelqa.cc:776
 hmdclowlevelqa.cc:777
 hmdclowlevelqa.cc:778
 hmdclowlevelqa.cc:779
 hmdclowlevelqa.cc:780
 hmdclowlevelqa.cc:781
 hmdclowlevelqa.cc:782
 hmdclowlevelqa.cc:783
 hmdclowlevelqa.cc:784
 hmdclowlevelqa.cc:785
 hmdclowlevelqa.cc:786
 hmdclowlevelqa.cc:787
 hmdclowlevelqa.cc:788
 hmdclowlevelqa.cc:789
 hmdclowlevelqa.cc:790
 hmdclowlevelqa.cc:791
 hmdclowlevelqa.cc:792
 hmdclowlevelqa.cc:793
 hmdclowlevelqa.cc:794
 hmdclowlevelqa.cc:795
 hmdclowlevelqa.cc:796
 hmdclowlevelqa.cc:797
 hmdclowlevelqa.cc:798
 hmdclowlevelqa.cc:799
 hmdclowlevelqa.cc:800
 hmdclowlevelqa.cc:801
 hmdclowlevelqa.cc:802
 hmdclowlevelqa.cc:803
 hmdclowlevelqa.cc:804
 hmdclowlevelqa.cc:805
 hmdclowlevelqa.cc:806
 hmdclowlevelqa.cc:807
 hmdclowlevelqa.cc:808
 hmdclowlevelqa.cc:809
 hmdclowlevelqa.cc:810
 hmdclowlevelqa.cc:811
 hmdclowlevelqa.cc:812
 hmdclowlevelqa.cc:813
 hmdclowlevelqa.cc:814
 hmdclowlevelqa.cc:815
 hmdclowlevelqa.cc:816
 hmdclowlevelqa.cc:817
 hmdclowlevelqa.cc:818
 hmdclowlevelqa.cc:819
 hmdclowlevelqa.cc:820
 hmdclowlevelqa.cc:821
 hmdclowlevelqa.cc:822
 hmdclowlevelqa.cc:823
 hmdclowlevelqa.cc:824
 hmdclowlevelqa.cc:825
 hmdclowlevelqa.cc:826
 hmdclowlevelqa.cc:827
 hmdclowlevelqa.cc:828
 hmdclowlevelqa.cc:829
 hmdclowlevelqa.cc:830
 hmdclowlevelqa.cc:831
 hmdclowlevelqa.cc:832
 hmdclowlevelqa.cc:833
 hmdclowlevelqa.cc:834
 hmdclowlevelqa.cc:835
 hmdclowlevelqa.cc:836
 hmdclowlevelqa.cc:837
 hmdclowlevelqa.cc:838
 hmdclowlevelqa.cc:839
 hmdclowlevelqa.cc:840
 hmdclowlevelqa.cc:841
 hmdclowlevelqa.cc:842
 hmdclowlevelqa.cc:843
 hmdclowlevelqa.cc:844
 hmdclowlevelqa.cc:845
 hmdclowlevelqa.cc:846
 hmdclowlevelqa.cc:847
 hmdclowlevelqa.cc:848
 hmdclowlevelqa.cc:849
 hmdclowlevelqa.cc:850
 hmdclowlevelqa.cc:851
 hmdclowlevelqa.cc:852
 hmdclowlevelqa.cc:853
 hmdclowlevelqa.cc:854
 hmdclowlevelqa.cc:855
 hmdclowlevelqa.cc:856
 hmdclowlevelqa.cc:857
 hmdclowlevelqa.cc:858
 hmdclowlevelqa.cc:859
 hmdclowlevelqa.cc:860
 hmdclowlevelqa.cc:861
 hmdclowlevelqa.cc:862
 hmdclowlevelqa.cc:863
 hmdclowlevelqa.cc:864
 hmdclowlevelqa.cc:865
 hmdclowlevelqa.cc:866
 hmdclowlevelqa.cc:867
 hmdclowlevelqa.cc:868
 hmdclowlevelqa.cc:869
 hmdclowlevelqa.cc:870
 hmdclowlevelqa.cc:871
 hmdclowlevelqa.cc:872
 hmdclowlevelqa.cc:873
 hmdclowlevelqa.cc:874
 hmdclowlevelqa.cc:875
 hmdclowlevelqa.cc:876
 hmdclowlevelqa.cc:877
 hmdclowlevelqa.cc:878
 hmdclowlevelqa.cc:879
 hmdclowlevelqa.cc:880
 hmdclowlevelqa.cc:881
 hmdclowlevelqa.cc:882
 hmdclowlevelqa.cc:883
 hmdclowlevelqa.cc:884
 hmdclowlevelqa.cc:885
 hmdclowlevelqa.cc:886
 hmdclowlevelqa.cc:887
 hmdclowlevelqa.cc:888
 hmdclowlevelqa.cc:889
 hmdclowlevelqa.cc:890
 hmdclowlevelqa.cc:891
 hmdclowlevelqa.cc:892
 hmdclowlevelqa.cc:893
 hmdclowlevelqa.cc:894
 hmdclowlevelqa.cc:895
 hmdclowlevelqa.cc:896
 hmdclowlevelqa.cc:897
 hmdclowlevelqa.cc:898
 hmdclowlevelqa.cc:899
 hmdclowlevelqa.cc:900
 hmdclowlevelqa.cc:901
 hmdclowlevelqa.cc:902
 hmdclowlevelqa.cc:903
 hmdclowlevelqa.cc:904
 hmdclowlevelqa.cc:905
 hmdclowlevelqa.cc:906
 hmdclowlevelqa.cc:907
 hmdclowlevelqa.cc:908
 hmdclowlevelqa.cc:909
 hmdclowlevelqa.cc:910
 hmdclowlevelqa.cc:911
 hmdclowlevelqa.cc:912
 hmdclowlevelqa.cc:913
 hmdclowlevelqa.cc:914
 hmdclowlevelqa.cc:915
 hmdclowlevelqa.cc:916
 hmdclowlevelqa.cc:917
 hmdclowlevelqa.cc:918
 hmdclowlevelqa.cc:919
 hmdclowlevelqa.cc:920
 hmdclowlevelqa.cc:921
 hmdclowlevelqa.cc:922
 hmdclowlevelqa.cc:923
 hmdclowlevelqa.cc:924
 hmdclowlevelqa.cc:925
 hmdclowlevelqa.cc:926
 hmdclowlevelqa.cc:927
 hmdclowlevelqa.cc:928
 hmdclowlevelqa.cc:929
 hmdclowlevelqa.cc:930
 hmdclowlevelqa.cc:931
 hmdclowlevelqa.cc:932
 hmdclowlevelqa.cc:933
 hmdclowlevelqa.cc:934
 hmdclowlevelqa.cc:935
 hmdclowlevelqa.cc:936
 hmdclowlevelqa.cc:937
 hmdclowlevelqa.cc:938
 hmdclowlevelqa.cc:939
 hmdclowlevelqa.cc:940
 hmdclowlevelqa.cc:941
 hmdclowlevelqa.cc:942
 hmdclowlevelqa.cc:943
 hmdclowlevelqa.cc:944
 hmdclowlevelqa.cc:945
 hmdclowlevelqa.cc:946
 hmdclowlevelqa.cc:947
 hmdclowlevelqa.cc:948
 hmdclowlevelqa.cc:949
 hmdclowlevelqa.cc:950
 hmdclowlevelqa.cc:951
 hmdclowlevelqa.cc:952
 hmdclowlevelqa.cc:953
 hmdclowlevelqa.cc:954
 hmdclowlevelqa.cc:955
 hmdclowlevelqa.cc:956
 hmdclowlevelqa.cc:957
 hmdclowlevelqa.cc:958
 hmdclowlevelqa.cc:959
 hmdclowlevelqa.cc:960
 hmdclowlevelqa.cc:961
 hmdclowlevelqa.cc:962
 hmdclowlevelqa.cc:963
 hmdclowlevelqa.cc:964
 hmdclowlevelqa.cc:965
 hmdclowlevelqa.cc:966
 hmdclowlevelqa.cc:967
 hmdclowlevelqa.cc:968
 hmdclowlevelqa.cc:969
 hmdclowlevelqa.cc:970
 hmdclowlevelqa.cc:971
 hmdclowlevelqa.cc:972
 hmdclowlevelqa.cc:973
 hmdclowlevelqa.cc:974
 hmdclowlevelqa.cc:975
 hmdclowlevelqa.cc:976
 hmdclowlevelqa.cc:977
 hmdclowlevelqa.cc:978
 hmdclowlevelqa.cc:979
 hmdclowlevelqa.cc:980
 hmdclowlevelqa.cc:981
 hmdclowlevelqa.cc:982
 hmdclowlevelqa.cc:983
 hmdclowlevelqa.cc:984
 hmdclowlevelqa.cc:985
 hmdclowlevelqa.cc:986
 hmdclowlevelqa.cc:987
 hmdclowlevelqa.cc:988
 hmdclowlevelqa.cc:989
 hmdclowlevelqa.cc:990
 hmdclowlevelqa.cc:991
 hmdclowlevelqa.cc:992
 hmdclowlevelqa.cc:993
 hmdclowlevelqa.cc:994
 hmdclowlevelqa.cc:995
 hmdclowlevelqa.cc:996
 hmdclowlevelqa.cc:997
 hmdclowlevelqa.cc:998
 hmdclowlevelqa.cc:999
 hmdclowlevelqa.cc:1000
 hmdclowlevelqa.cc:1001
 hmdclowlevelqa.cc:1002
 hmdclowlevelqa.cc:1003
 hmdclowlevelqa.cc:1004
 hmdclowlevelqa.cc:1005
 hmdclowlevelqa.cc:1006
 hmdclowlevelqa.cc:1007
 hmdclowlevelqa.cc:1008
 hmdclowlevelqa.cc:1009
 hmdclowlevelqa.cc:1010
 hmdclowlevelqa.cc:1011
 hmdclowlevelqa.cc:1012
 hmdclowlevelqa.cc:1013
 hmdclowlevelqa.cc:1014
 hmdclowlevelqa.cc:1015
 hmdclowlevelqa.cc:1016
 hmdclowlevelqa.cc:1017
 hmdclowlevelqa.cc:1018
 hmdclowlevelqa.cc:1019
 hmdclowlevelqa.cc:1020
 hmdclowlevelqa.cc:1021
 hmdclowlevelqa.cc:1022
 hmdclowlevelqa.cc:1023
 hmdclowlevelqa.cc:1024
 hmdclowlevelqa.cc:1025
 hmdclowlevelqa.cc:1026
 hmdclowlevelqa.cc:1027
 hmdclowlevelqa.cc:1028
 hmdclowlevelqa.cc:1029
 hmdclowlevelqa.cc:1030
 hmdclowlevelqa.cc:1031
 hmdclowlevelqa.cc:1032
 hmdclowlevelqa.cc:1033
 hmdclowlevelqa.cc:1034
 hmdclowlevelqa.cc:1035
 hmdclowlevelqa.cc:1036
 hmdclowlevelqa.cc:1037
 hmdclowlevelqa.cc:1038
 hmdclowlevelqa.cc:1039
 hmdclowlevelqa.cc:1040
 hmdclowlevelqa.cc:1041
 hmdclowlevelqa.cc:1042
 hmdclowlevelqa.cc:1043
 hmdclowlevelqa.cc:1044
 hmdclowlevelqa.cc:1045
 hmdclowlevelqa.cc:1046
 hmdclowlevelqa.cc:1047
 hmdclowlevelqa.cc:1048
 hmdclowlevelqa.cc:1049
 hmdclowlevelqa.cc:1050
 hmdclowlevelqa.cc:1051
 hmdclowlevelqa.cc:1052
 hmdclowlevelqa.cc:1053
 hmdclowlevelqa.cc:1054
 hmdclowlevelqa.cc:1055
 hmdclowlevelqa.cc:1056
 hmdclowlevelqa.cc:1057
 hmdclowlevelqa.cc:1058
 hmdclowlevelqa.cc:1059
 hmdclowlevelqa.cc:1060
 hmdclowlevelqa.cc:1061
 hmdclowlevelqa.cc:1062
 hmdclowlevelqa.cc:1063
 hmdclowlevelqa.cc:1064
 hmdclowlevelqa.cc:1065
 hmdclowlevelqa.cc:1066
 hmdclowlevelqa.cc:1067
 hmdclowlevelqa.cc:1068
 hmdclowlevelqa.cc:1069
 hmdclowlevelqa.cc:1070
 hmdclowlevelqa.cc:1071
 hmdclowlevelqa.cc:1072
 hmdclowlevelqa.cc:1073
 hmdclowlevelqa.cc:1074
 hmdclowlevelqa.cc:1075
 hmdclowlevelqa.cc:1076
 hmdclowlevelqa.cc:1077
 hmdclowlevelqa.cc:1078
 hmdclowlevelqa.cc:1079
 hmdclowlevelqa.cc:1080
 hmdclowlevelqa.cc:1081
 hmdclowlevelqa.cc:1082
 hmdclowlevelqa.cc:1083
 hmdclowlevelqa.cc:1084
 hmdclowlevelqa.cc:1085
 hmdclowlevelqa.cc:1086
 hmdclowlevelqa.cc:1087
 hmdclowlevelqa.cc:1088
 hmdclowlevelqa.cc:1089
 hmdclowlevelqa.cc:1090
 hmdclowlevelqa.cc:1091
 hmdclowlevelqa.cc:1092
 hmdclowlevelqa.cc:1093
 hmdclowlevelqa.cc:1094
 hmdclowlevelqa.cc:1095
 hmdclowlevelqa.cc:1096
 hmdclowlevelqa.cc:1097
 hmdclowlevelqa.cc:1098
 hmdclowlevelqa.cc:1099
 hmdclowlevelqa.cc:1100
 hmdclowlevelqa.cc:1101
 hmdclowlevelqa.cc:1102
 hmdclowlevelqa.cc:1103
 hmdclowlevelqa.cc:1104
 hmdclowlevelqa.cc:1105
 hmdclowlevelqa.cc:1106
 hmdclowlevelqa.cc:1107
 hmdclowlevelqa.cc:1108
 hmdclowlevelqa.cc:1109
 hmdclowlevelqa.cc:1110
 hmdclowlevelqa.cc:1111
 hmdclowlevelqa.cc:1112
 hmdclowlevelqa.cc:1113
 hmdclowlevelqa.cc:1114
 hmdclowlevelqa.cc:1115
 hmdclowlevelqa.cc:1116
 hmdclowlevelqa.cc:1117
 hmdclowlevelqa.cc:1118
 hmdclowlevelqa.cc:1119
 hmdclowlevelqa.cc:1120
 hmdclowlevelqa.cc:1121
 hmdclowlevelqa.cc:1122
 hmdclowlevelqa.cc:1123
 hmdclowlevelqa.cc:1124
 hmdclowlevelqa.cc:1125
 hmdclowlevelqa.cc:1126
 hmdclowlevelqa.cc:1127
 hmdclowlevelqa.cc:1128
 hmdclowlevelqa.cc:1129
 hmdclowlevelqa.cc:1130
 hmdclowlevelqa.cc:1131
 hmdclowlevelqa.cc:1132
 hmdclowlevelqa.cc:1133
 hmdclowlevelqa.cc:1134
 hmdclowlevelqa.cc:1135
 hmdclowlevelqa.cc:1136
 hmdclowlevelqa.cc:1137
 hmdclowlevelqa.cc:1138
 hmdclowlevelqa.cc:1139
 hmdclowlevelqa.cc:1140
 hmdclowlevelqa.cc:1141
 hmdclowlevelqa.cc:1142
 hmdclowlevelqa.cc:1143
 hmdclowlevelqa.cc:1144
 hmdclowlevelqa.cc:1145
 hmdclowlevelqa.cc:1146
 hmdclowlevelqa.cc:1147
 hmdclowlevelqa.cc:1148
 hmdclowlevelqa.cc:1149
 hmdclowlevelqa.cc:1150
 hmdclowlevelqa.cc:1151
 hmdclowlevelqa.cc:1152
 hmdclowlevelqa.cc:1153
 hmdclowlevelqa.cc:1154
 hmdclowlevelqa.cc:1155
 hmdclowlevelqa.cc:1156
 hmdclowlevelqa.cc:1157
 hmdclowlevelqa.cc:1158
 hmdclowlevelqa.cc:1159
 hmdclowlevelqa.cc:1160
 hmdclowlevelqa.cc:1161
 hmdclowlevelqa.cc:1162
 hmdclowlevelqa.cc:1163
 hmdclowlevelqa.cc:1164
 hmdclowlevelqa.cc:1165
 hmdclowlevelqa.cc:1166
 hmdclowlevelqa.cc:1167
 hmdclowlevelqa.cc:1168
 hmdclowlevelqa.cc:1169
 hmdclowlevelqa.cc:1170
 hmdclowlevelqa.cc:1171
 hmdclowlevelqa.cc:1172
 hmdclowlevelqa.cc:1173