ROOT logo
//*-- AUTHOR : J. Markert

//_HADES_CLASS_DESCRIPTION 
////////////////////////////////////////////////////////////////////////////
// HMdcSetup
//
// Container class for the parameters for HMdcTaskset
// Setup objects for the tasks of HMdcTaskSet are created:
// HMdcDitizerSetup,HMdcCalibrater1Setup,HMdcTrackFinderSetup,
// HMdcClusterHitSetup,HMdcFitterSetup and HMdcCommonSetup.
// These setup objects hold all parameters to configure the tasks
// in all possible ways. The objects are initialized with some non valid
// values (-99 for Int_t variables and 3 for Bool_t).
//
// The parameters contain (example):
// ############################################################################################
// HMdcSetup:
// --------------------------------------------------------------------------------------------
// HMdcCommonSetup:
// isSimulation    =  0 :  0 = real data, 1 = simulation, 2 = merge
// analysisLevel   =  4 :  0 = raw, 1 = cal1, 2 = cal2, 3 = hit, 4 = fit
// tracker         =  1 :  1 = dubna, 2 = santiago
// --------------------------------------------------------------------------------------------
// HMdcCalibrater1Setup:
// ModeFlagCal1    =  2 :  1 = NoStartandCal, 2 = StartandCal, 3 = NoStartandNoCal
// TimeCutFlagCal1 =  1 :  0 = noTimeCut    , 1 = TimeCut
// --------------------------------------------------------------------------------------------
// HMdcTrackFinderSetup:
// MagnetStatus    =  0 :  0 = MagnetOn,  1 = MagnetOff
// ClustFinderType =  0 :  0 = combined chamber clusters, 1 = single chamber clusters
// LevelsSegment1  =  10,50  : max. occupancy of MDC for level of cl.finding 4 & 5 layers
// LevelsSegment2  =  10,30  : max. occupancy of MDC for level of cl.finding 4 & 5 layers
// NumLayersPerMod = {{6,6,6,6},
//                    {6,6,6,6},
//                    {6,6,6,6},
//                    {6,6,6,6},
//                    {6,6,6,6},
//                    {6,6,6,6}}
// --------------------------------------------------------------------------------------------
// HMdcClusterToHitSetup:
// ModForSeg1      =  1 : -1 = don't fill HMdcSeg for segment 1,
//                         0 = fill HMdcSeg by cluster in MDC1 if typeClFinder=1
//                             and sector has mdc1&2, else by cluster in existing MDC,
//                         1 =  -/- in mdc2,
// ModForSeg2      =  3 : -1 = don't fill HMdcSeg for segment 2,
//                         2 = fill HMdcSeg by cluster in MDC3 if typeClFinder=1
//                             and sector has mdc3&4 and MagnetOff,
//                             else by cluster in existing MDC,
//                         3 =  -/- in MDC4
// --------------------------------------------------------------------------------------------
// HMdc12FitSetup:
// FitAuthor       =  1 :  0 = Hejdar     , 1 = Alexander\n",
// DrTimeCalcVers  =  1 :  0 = polynom    , 1 = HMdCal2ParSim::calcTime\n"
// FitType         =  0 :  0 = segment fit, 1 = independent mdc fit
// DebugCategorie  =  0 :  1 = create and fill catMdcClusFit&catMdcWireFit, 0 = don't cr.
// DebugPrint      =  0 :  1 = print debug information, 0 = don't print
// --------------------------------------------------------------------------------------------
// HMdcDigiSetup:
// tdcModeDigi     =  2 :  1 = two leading edges, 2 = leading and trailing edge
// NtupleDigi      =  1 :  0 = noNtuple, 1 = digitizer.root
// useTofDigi      =  1 :  0 = NoTof in cal1, 1 = Tof in cal1
// 
// useErrorDigi      =  1 :  0 = NoErr in cal1, 1 = Err in cal1
//
// useWireOffset     =  1 :  1 = add wireOffset to drift time, 0 = don't add wireOffsets
// useWireStat       =  1 :  1 = use wirestat container (dead wires/efficiency), 0 = don't use
// useTimeCuts       =  1 :  1 = use timecut container , 0 = don't use timecut container
// embeddingModeDigi =  1 :  1 = override geant by real, 2 = keep geant cells
//
// offsetsOnDigi   =  1 :  0 = global offsets off, 1 = global offsets on
// offsetsDigi     =  1.5   2.5    4.5   5.5 ns offset per plane (substracted from (drift time + tof))
// 
// noiseModeDigi   =  1 :  1 = override geant by noise, 2 = keep geant cells
// noiseOnDigi     =  0 :  0 = noise off, 1 = noise on
// noiseLevelDigi  =  5.0%  5.0%   5.0%  5.0% noise level per plane
// noiseRangeDigi  = -700  -700  -700  -700  1000  1000  1000  1000 ns lower/upper limit of noise
// 
// cellEffOnDigi   =  1 :  0 = cellEff off, 1 = cellEff
// cellEffDigi     =  82.0% 82.0%  88.0% 88.0% level of cellEff per plane
// ############################################################################################ 
////////////////////////////////////////////////////////////////////////////
//#include <stdlib.h>

#include "hmdcsetup.h"
#include "hades.h"
#include "hparamlist.h"
#include "hmdcdigitizer.h"
#include "hmdccalibrater1.h"
#include "hmdctrackdset.h"
#include "hmessagemgr.h"


ClassImp(HMdcSetup)
ClassImp(HMdcDigitizerSetup)
ClassImp(HMdcCalibrater1Setup)
ClassImp(HMdcTrackFinderSetup)
ClassImp(HMdcClusterToHitSetup)
ClassImp(HMdc12FitSetup)
ClassImp(HMdcCommonSetup)

HMdcSetup::HMdcSetup(const Char_t* name,const Char_t* title,
                       const Char_t* context)
    : HParCond(name,title,context)
{
    // creates setup objects for the tasks of HMdcTaskSet:
    // HMdcDitizerSetup,HMdcCalibrater1Setup,HMdcTrackFinderSetup,
    // HMdcClusterHitSetup,HMdc12FitSetup and HMdcCommonSetup.
    // These setup objects hold all parameters to configure the tasks
    // in all possible ways. The objects are initialized with some non valid
    // values (-99 for Int_t variables and 3 for Bool_t).
  digiset        = new HMdcDigitizerSetup("MdcDigitizerSetup",""      ,this);
  cal1set        = new HMdcCalibrater1Setup("MdcCalibrater1Setup",""  ,this);
  trackfinderset = new HMdcTrackFinderSetup("MdcTrackFinderSetup",""  ,this);
  clustertohitset= new HMdcClusterToHitSetup("MdcClusterToHitSetup","",this);
  fitterset      = new HMdc12FitSetup("Mdc12FitSetup",""              ,this);
  commonset      = new HMdcCommonSetup("MdcCommonSetup",""            ,this);
  clear();
}

HMdcSetup::~HMdcSetup()
{
  // destructor
    delete digiset;
    delete cal1set;
    delete trackfinderset;
    delete clustertohitset;
    delete fitterset;
    delete commonset;
}
void HMdcSetup::copySet(HMdcSetup* parParent)
{
    HMdcDigitizerSetup*     par=parParent->getMdcDigitizerSet();
    HMdcCalibrater1Setup*  par1=parParent->getMdcCalibrater1Set();
    HMdcTrackFinderSetup*  par2=parParent->getMdcTrackFinderSet();
    HMdcClusterToHitSetup* par3=parParent->getMdcClusterToHitSet();
    HMdc12FitSetup*        par4=parParent->getMdc12FitSet();
    HMdcCommonSetup*       par5=parParent->getMdcCommonSet();


    digiset        ->copySet(par);
    cal1set        ->copySet(par1);
    trackfinderset ->copySet(par2);
    clustertohitset->copySet(par3);
    fitterset      ->copySet(par4);
    commonset      ->copySet(par5);
}
Bool_t HMdcSetup::isEqual(HMdcSetup* parParent)
{
    HMdcDigitizerSetup*     par=parParent->getMdcDigitizerSet();
    HMdcCalibrater1Setup*  par1=parParent->getMdcCalibrater1Set();
    HMdcTrackFinderSetup*  par2=parParent->getMdcTrackFinderSet();
    HMdcClusterToHitSetup* par3=parParent->getMdcClusterToHitSet();
    HMdc12FitSetup*        par4=parParent->getMdc12FitSet();
    HMdcCommonSetup*       par5=parParent->getMdcCommonSet();


    if(!digiset        ->isEqual(par)) return kFALSE;
    if(!cal1set        ->isEqual(par1))return kFALSE;
    if(!trackfinderset ->isEqual(par2))return kFALSE;
    if(!clustertohitset->isEqual(par3))return kFALSE;
    if(!fitterset      ->isEqual(par4))return kFALSE;
    if(!commonset      ->isEqual(par5))return kFALSE;
    return kTRUE;
}
void HMdcSetup::clear()
{
    digiset        ->clear();
    cal1set        ->clear();
    trackfinderset ->clear();
    clustertohitset->clear();
    fitterset      ->clear();
    commonset      ->clear();

    status=kFALSE;
    resetInputVersions();
    changed=kFALSE;
}
Bool_t HMdcSetup::check()
{
    // all parameters are checked for non valid values
    if(!digiset        ->check()) {Error("HMdcSetup:check()","HMdcDitizerSetup not fully initialized");     return kFALSE;}
    if(!cal1set        ->check()) {Error("HMdcSetup:check()","HMdcCalibrater1Setup not fully initialized"); return kFALSE;}
    if(!trackfinderset ->check()) {Error("HMdcSetup:check()","HMdcTrackFinderSetup not fully initialized"); return kFALSE;}
    if(!clustertohitset->check()) {Error("HMdcSetup:check()","HMdcClusterToHitSetup not fully initialized");return kFALSE;}
    if(!fitterset      ->check()) {Error("HMdcSetup:check()","HMdc12FitSetup not fully initialized");       return kFALSE;}
    if(!commonset      ->check()) {Error("HMdcSetup:check()","HMdcCommonSetup not fully initialized");      return kFALSE;}

    return kTRUE;
}
void HMdcSetup::printParam(void)
{
    // prints the parameters of HMdcSetup to the screen.
    // The printParam() of the subobjects are called to print the
    // parameters of the corresponding subobject.
    SEPERATOR_msg("#",60);
    INFO_msg(10,HMessageMgr::DET_MDC,"HMdcSetup:");
    commonset      ->printParam();
    cal1set        ->printParam();
    trackfinderset ->printParam();
    clustertohitset->printParam();
    fitterset      ->printParam();
    digiset        ->printParam();
    SEPERATOR_msg("#",60);
}
void HMdcSetup::putParams(HParamList* l)
{
    // Puts all params of HMdcSetup to the parameter list of
    // HParamList (which ist used by the io);
    // The  putParams() functions of all subobjects are called to add the
    // parameters of the corresponding subobject.
    if (!l) return;
    commonset      ->putParams(l);
    cal1set        ->putParams(l);
    trackfinderset ->putParams(l);
    clustertohitset->putParams(l);
    fitterset      ->putParams(l);
    digiset        ->putParams(l);
}
Bool_t HMdcSetup::getParams(HParamList* l)
{
    if (!l) return kFALSE;
    if(!commonset      ->getParams(l)) return kFALSE;
    if(!cal1set        ->getParams(l)) return kFALSE;
    if(!trackfinderset ->getParams(l)) return kFALSE;
    if(!clustertohitset->getParams(l)) return kFALSE;
    if(!fitterset      ->getParams(l)) return kFALSE;
    if(!digiset        ->getParams(l)) return kFALSE;
    return kTRUE;
}
//################################## DIGISETUP #############################
HMdcDigitizerSetup::HMdcDigitizerSetup(const Char_t* name,const Char_t* title,HMdcSetup* set)
    : TNamed(name,title)
{
    // Constructor of the setup object for HMdcDigitizer
    setup=set;
    offsetsDigi     .Set(4);
    cellEffDigi     .Set(4);
    noiseLevelDigi  .Set(4);
    noiseRangeLoDigi.Set(4);
    noiseRangeHiDigi.Set(4);
    clear();
}
HMdcDigitizerSetup::~HMdcDigitizerSetup()
{
  // destructor of the setup object for HMdcDigitizer
}
void HMdcDigitizerSetup::copySet(HMdcDigitizerSetup* par)
{
    setTdcModeDigi      (par->getTdcModeDigi());
    setNtupleDigi       (par->getNtupleDigi());
    setUseTofDigi       (par->getUseTofDigi());
    setUseErrorDigi     (par->getUseErrorDigi());
    setUseWireOffsetDigi(par->getUseWireOffsetDigi());
    setUseWireStatDigi  (par->getUseWireStatDigi());
    setUseTimeCutsDigi  (par->getUseTimeCutsDigi());
    setEmbeddingModeDigi(par->getEmbeddingModeDigi());
    setNoiseModeDigi    (par->getNoiseModeDigi());

    setOffsetsOffDigi   (par->getOffsetsOffDigi());
    setCellEffOffDigi   (par->getCellEffOffDigi());
    setNoiseOffDigi     (par->getNoiseOffDigi());

    Float_t f1,f2,f3,f4;
    par    ->getNoiseLevelDigi(&f1,&f2,&f3,&f4);
    setNoiseLevelDigi(f1,f2,f3,f4);
    par    ->getOffsetsDigi(&f1,&f2,&f3,&f4);
    setOffsetsDigi(f1,f2,f3,f4);
    par    ->getCellEffDigi(&f1,&f2,&f3,&f4);
    setCellEffDigi(f1,f2,f3,f4);
    Int_t i1,i2,i3,i4,i5,i6,i7,i8;
    par    ->getNoiseRangeDigi(&i1,&i2,&i3,&i4,&i5,&i6,&i7,&i8);
    setNoiseRangeDigi(i1,i2,i3,i4,i5,i6,i7,i8);
}
Bool_t HMdcDigitizerSetup::isEqual(HMdcDigitizerSetup* par)
{
    if(getTdcModeDigi()      !=par->getTdcModeDigi())      return kFALSE;
    if(getNtupleDigi ()      !=par->getNtupleDigi())       return kFALSE;
    if(getUseTofDigi ()      !=par->getUseTofDigi())       return kFALSE;
    if(getUseErrorDigi()     !=par->getUseErrorDigi())     return kFALSE;
    if(getUseWireOffsetDigi()!=par->getUseWireOffsetDigi())return kFALSE;
    if(getUseWireStatDigi()  !=par->getUseWireStatDigi())  return kFALSE;
    if(getUseTimeCutsDigi()  !=par->getUseTimeCutsDigi())  return kFALSE;
    if(getEmbeddingModeDigi()!=par->getEmbeddingModeDigi())return kFALSE;
    if(getNoiseModeDigi()    !=par->getNoiseModeDigi())    return kFALSE;
    if(getOffsetsOffDigi()   !=par->getOffsetsOffDigi())   return kFALSE;
    if(getCellEffOffDigi()   !=par->getCellEffOffDigi())   return kFALSE;
    if(getNoiseOffDigi()     !=par->getNoiseOffDigi())     return kFALSE;

    Float_t f [4];
    Float_t f2[4];
    par->getNoiseLevelDigi(&f[0],&f[1],&f[2],&f[3]);
    getNoiseLevelDigi(&f2[0],&f2[1],&f2[2],&f2[3]);
    for(Int_t i=0;i<4;i++){if(f[i]!=f2[i]) return kFALSE;}

    par->getOffsetsDigi(&f[0],&f[1],&f[2],&f[3]);
    getOffsetsDigi(&f2[0],&f2[1],&f2[2],&f2[3]);
    for(Int_t i=0;i<4;i++){if(f[i]!=f2[i]) return kFALSE;}

    par->getCellEffDigi(&f[0],&f[1],&f[2],&f[3]);
    getCellEffDigi(&f2[0],&f2[1],&f2[2],&f2[3]);
    for(Int_t i=0;i<4;i++){if(f[i]!=f2[i]) return kFALSE;}

    Int_t i[8];
    Int_t i2[8];
    par->getNoiseRangeDigi(&i[0],&i[1],&i[2],&i[3],&i[4],&i[5],&i[6],&i[7]);
    getNoiseRangeDigi(&i2[0],&i2[1],&i2[2],&i2[3],&i2[4],&i2[5],&i2[6],&i2[7]);
    for(Int_t j=0;j<8;j++){if(i[j]!=i2[j]) return kFALSE;}

    return kTRUE;
}
void HMdcDigitizerSetup::clear()
{
    // all parameters of the object are initialized with
    // non valid values.
    tdcModeDigi       =-99;    // 1,2 :default 2(leading and trailing edge)
    NtupleDigi        =-99;    //default kFALSE
    useTofDigi        =-99;    //default kTRUE
    useErrorDigi      =-99;    //default kTRUE
    useWireOffsetDigi =-99;    //default kTRUE
    useWireStatDigi   =-99;    //default kTRUE
    useTimeCutsDigi   =-99;    //default kTRUE
    embeddingModeDigi =-99;    //default 1
    noiseModeDigi     =-99;    // 1,2: default 1 override geant

    offsetsOnDigi =-99;    // switch on/off this option
    cellEffOnDigi =-99;    // switch on/off this option
    noiseOnDigi   =-99;    // switch on/off this option

    for(Int_t i=0;i<4;i++)
    {
	noiseLevelDigi[i]  =-99; // 0.,0.,0.,0.
	offsetsDigi[i]     =-99; // default 1.5,2.5,4.5,5.5
	cellEffDigi[i]     =-99; // default 82.,82.,88.,88.
	noiseRangeLoDigi[i]=-99; // -700,-700,-700,-700
	noiseRangeHiDigi[i]=-99; // 1000,1000,1000,1000
    }
}
Bool_t HMdcDigitizerSetup::check()
{
    // all parameters of the object are checked for non valid values.
    if(tdcModeDigi        ==-99) return kFALSE;
    if(NtupleDigi         ==-99) return kFALSE;
    if(useTofDigi         ==-99) return kFALSE;
    if(useErrorDigi       ==-99) return kFALSE;
    if(useWireOffsetDigi  ==-99) return kFALSE;
    if(useWireStatDigi    ==-99) return kFALSE;
    if(useTimeCutsDigi    ==-99) return kFALSE;
    if(embeddingModeDigi  ==-99) return kFALSE;
    if(noiseModeDigi      ==-99) return kFALSE;

    if(offsetsOnDigi      ==-99) return kFALSE;
    if(cellEffOnDigi      ==-99) return kFALSE;
    if(noiseOnDigi        ==-99) return kFALSE;

    for(Int_t i=0;i<4;i++)
    {
	if(noiseLevelDigi[i]  ==-99) return kFALSE;
	if(offsetsDigi[i]     ==-99) return kFALSE;
	if(cellEffDigi[i]     ==-99) return kFALSE;
	if(noiseRangeLoDigi[i]==-99) return kFALSE;
	if(noiseRangeHiDigi[i]==-99) return kFALSE;
    }
   return kTRUE;
}
void HMdcDigitizerSetup::printParam(void)
{
    // prints the parameters to the screen
    SEPERATOR_msg("-",60);
    INFO_msg(10,HMessageMgr::DET_MDC,"HMdcDigitizerSetup:");
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"tdcModeDigi       =  %i :  1 = two leading edges, 2 = leading and trailing edge"
			   ,tdcModeDigi);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"NtupleDigi        =  %i :  0 = noNtuple, 1 = digitizer.root"
			   , NtupleDigi);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"useTofDigi        =  %i :  0 = NoTof in cal1, 1 = Tof in cal1"
			   , useTofDigi);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"useErrorDigi      =  %i :  0 = NoErr in cal1, 1 = Err in cal1"
			   , useErrorDigi);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"useWireOffsetDigi =  %i :  1 = add wireOffset to drift time, 0 = don't add wireOffsets"
			   , useWireOffsetDigi);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"useWireStatDigi   =  %i :  1 = use wirestat container, 0 = don't use wirestat container"
			   , useWireStatDigi);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"useTimeCutsDigi   =  %i :  1 = use timecut container, 0 = don't use timecut container"
			   , useTimeCutsDigi);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"offsetsOnDigi     =  %i :  0 = global offsets off, 1 = global offsets on"
			   , offsetsOnDigi);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"offsetsDigi       = %4.1f  %4.1f   %4.1f  %4.1f ns offset per plane (substracted from (drift time + tof))"
			   ,offsetsDigi[0],offsetsDigi[1],offsetsDigi[2],offsetsDigi[3]);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"noiseModeDigi     =  %i :  1 = override geant by noise, 2 = keep geant cells"
			   ,  noiseModeDigi);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"noiseOnDigi       =  %i :  0 = noise off, 1 = noise on"
			   , noiseOnDigi);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"noiseLevelDigi    = %4.1f%% %4.1f%%  %4.1f%% %4.1f%% noise level per plane"
			   ,noiseLevelDigi[0],noiseLevelDigi[1],noiseLevelDigi[2],noiseLevelDigi[3]);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"noiseRangeDigi    =%5i %5i %5i %5i %5i %5i %5i %5i ns lower/upper limit of noise"
			   ,noiseRangeLoDigi[0],noiseRangeLoDigi[1],noiseRangeLoDigi[2],noiseRangeLoDigi[3],noiseRangeHiDigi[0],noiseRangeHiDigi[1],noiseRangeHiDigi[2],noiseRangeHiDigi[3]);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"cellEffOnDigi     =  %i :  0 = cellEff off, 1 = cellEff"
			   ,cellEffOnDigi);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"cellEffDigi       =  %4.1f%% %4.1f%%  %4.1f%% %4.1f%% level of cellEff per plane"
			   ,cellEffDigi[0],cellEffDigi[1],cellEffDigi[2],cellEffDigi[3]);
}
Bool_t HMdcDigitizerSetup::getParams(HParamList* l)
{
   // gets the parameters from HParamList, which is used for io.
   if(!( l->fill("tdcModeDigi",      &tdcModeDigi)))       return kFALSE;
   if(!( l->fill("NtupleDigi",       &NtupleDigi) ))       return kFALSE;
   if(!( l->fill("useTofDigi",       &useTofDigi) ))       return kFALSE;
   if(!( l->fill("useErrorDigi",     &useErrorDigi) ))     return kFALSE;
   if(!( l->fill("useWireOffsetDigi",&useWireOffsetDigi) ))return kFALSE;
   if(!( l->fill("useWireStatDigi",  &useWireStatDigi) ))  return kFALSE;
   if(!( l->fill("useTimeCutsDigi",  &useTimeCutsDigi) ))  return kFALSE;
   if(!( l->fill("embeddingModeDigi",&embeddingModeDigi) ))return kFALSE;
   if(!( l->fill("offsetsOnDigi",    &offsetsOnDigi)))     return kFALSE;
   if(!( l->fill("offsetsDigi",      &offsetsDigi)))       return kFALSE;
   if(!( l->fill("cellEffOnDigi",    &cellEffOnDigi)))     return kFALSE;
   if(!( l->fill("cellEffDigi",      &cellEffDigi)))       return kFALSE;
   if(!( l->fill("noiseModeDigi",    &noiseModeDigi)))     return kFALSE;
   if(!( l->fill("noiseOnDigi",      &noiseOnDigi)))       return kFALSE;
   if(!( l->fill("noiseLevelDigi",   &noiseLevelDigi)))    return kFALSE;
   if(!( l->fill("noiseRangeLoDigi", &noiseRangeLoDigi)))  return kFALSE;
   if(!( l->fill("noiseRangeHiDigi", &noiseRangeHiDigi)))  return kFALSE;

   return kTRUE;
}
void HMdcDigitizerSetup::putParams(HParamList* l)
{
    // puts the parameters of HMdcDigiSetup to
    // HParamList, which is used for io.
    l->add("tdcModeDigi",      tdcModeDigi);
    l->add("NtupleDigi",       NtupleDigi);
    l->add("useTofDigi",       useTofDigi);
    l->add("useErrorDigi",     useErrorDigi);
    l->add("useWireOffsetDigi",useWireOffsetDigi);
    l->add("useWireStatDigi",  useWireStatDigi);
    l->add("useTimeCutsDigi",  useTimeCutsDigi);
    l->add("embeddingModeDigi",embeddingModeDigi);
    l->add("offsetsOnDigi",    offsetsOnDigi);
    l->add("offsetsDigi",      offsetsDigi);
    l->add("cellEffOnDigi",    cellEffOnDigi);
    l->add("cellEffDigi",      cellEffDigi);
    l->add("noiseOnDigi",      noiseOnDigi);
    l->add("noiseModeDigi",    noiseModeDigi);
    l->add("noiseLevelDigi",   noiseLevelDigi);
    l->add("noiseRangeLoDigi", noiseRangeLoDigi);
    l->add("noiseRangeHiDigi", noiseRangeHiDigi);
}
void HMdcDigitizerSetup::setupMdcDigitizer(HMdcDigitizer* digi)
{
    // calls the Set functions of HMdcDigitizer to set the parameters
    // from HMdcDigiSetup.

    digi->setTdcMode      (tdcModeDigi);
    digi->setNTuple       ((Bool_t)NtupleDigi);
    digi->setTofUse       ((Bool_t)useTofDigi);
    digi->setErrorUse     ((Bool_t)useErrorDigi);
    digi->setWireOffsetUse((Bool_t)useWireOffsetDigi);
    digi->setWireStatUse  ((Bool_t)useWireStatDigi);
    digi->setTimeCutUse   ((Bool_t)useTimeCutsDigi);
    digi->setEmbeddingMode(embeddingModeDigi);
    digi->setOffsets   (offsetsDigi[0]     ,offsetsDigi[1]     ,offsetsDigi[2]     ,offsetsDigi[3]   ,offsetsOnDigi);
    digi->setEffLevel  (cellEffDigi[0]     ,cellEffDigi[1]     ,cellEffDigi[2]     ,cellEffDigi[3]   ,cellEffOnDigi);
    digi->setNoiseLevel(noiseLevelDigi[0]  ,noiseLevelDigi[1]  ,noiseLevelDigi[2]  ,noiseLevelDigi[3],noiseOnDigi);
    digi->setNoiseRange(noiseRangeLoDigi[0],noiseRangeLoDigi[1],noiseRangeLoDigi[2],noiseRangeLoDigi[3],
			noiseRangeHiDigi[0],noiseRangeHiDigi[1],noiseRangeHiDigi[2],noiseRangeHiDigi[3]);
    digi->setNoiseMode (noiseModeDigi);
}
//################################## CALIBRATER1SETUP #############################
HMdcCalibrater1Setup::HMdcCalibrater1Setup(const Char_t* name,const Char_t* title,HMdcSetup* set)
    : TNamed(name,title)
{
    // constructor for HMdcCalibrater1Setup
    // The parameters are initialized with non valid values.
    setup=set;
    clear();
}
HMdcCalibrater1Setup::~HMdcCalibrater1Setup()
{
  // destructor of HMdcCalibrater1Setup
}
void HMdcCalibrater1Setup::copySet(HMdcCalibrater1Setup* par1)
{
    setModeFlagCal1(par1->getModeFlagCal1());
    setTimeCutFlagCal1(par1->getTimeCutFlagCal1());
}
Bool_t HMdcCalibrater1Setup::isEqual(HMdcCalibrater1Setup* par1)
{
    if(getModeFlagCal1()   !=par1->getModeFlagCal1())   return kFALSE;
    if(getTimeCutFlagCal1()!=par1->getTimeCutFlagCal1())return kFALSE;
    return kTRUE;
}
void HMdcCalibrater1Setup::clear()
{
    // The parameters are initialized with non valid values.
    ModeFlagCal1   =-99; //1,2,3
    TimeCutFlagCal1=-99; //0,1
}
Bool_t HMdcCalibrater1Setup::check()
{
    // The parameters are checked for non valid values.
    if(ModeFlagCal1   ==-99) return kFALSE;
    if(TimeCutFlagCal1==-99) return kFALSE;
    return kTRUE;
}
void HMdcCalibrater1Setup::printParam(void)
{
    // prints the parameters to the screen
    SEPERATOR_msg("-",60);
    INFO_msg(10,HMessageMgr::DET_MDC,"HMdcCalibrater1Setup:");
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"ModeFlagCal1    =  %i :  1 = NoStartandCal, 2 = StartandCal, 3 = NoStartandNoCal"
			   ,ModeFlagCal1);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"TimeCutFlagCal1 =  %i :  0 = noTimeCut    , 1 = TimeCut"
			   ,TimeCutFlagCal1);
}
Bool_t HMdcCalibrater1Setup::getParams(HParamList* l)
{
    // gets the parameters from HParamList, which is used for io.
    if(!(l->fill("ModeFlagCal1",   &ModeFlagCal1   ))) return kFALSE;
    if(!(l->fill("TimeCutFlagCal1",&TimeCutFlagCal1))) return kFALSE;
    return kTRUE;
}
void HMdcCalibrater1Setup::putParams(HParamList* l)
{
    // puts the parameters of HMdcCalibrater1Setup to
    // HParamList, which is used for io.
    l->add("ModeFlagCal1",   ModeFlagCal1);
    l->add("TimeCutFlagCal1",TimeCutFlagCal1);
}
void HMdcCalibrater1Setup::setupMdcCalibrater1(HMdcCalibrater1* calibrater1,Int_t merge)
{
    if(setup)
    {
	if(setup->getMdcCommonSet()->getIsSimulation()==2) merge=1;
    }
    calibrater1->switchArguments(ModeFlagCal1,TimeCutFlagCal1, merge);
}
//################################## TRACKFINDERSETUP #############################
HMdcTrackFinderSetup::HMdcTrackFinderSetup(const Char_t* name,const Char_t* title,HMdcSetup* set)
    : TNamed(name,title)
{
    // constructor of HMdcTrackFinderSetup
    // The parameters are initialized with non valid values
    setup=set;
    nLayers.Set(24);
    nLevel.Set(4);
    clear();
}
HMdcTrackFinderSetup::~HMdcTrackFinderSetup()
{
  // destructor HMdcTrackFinderSetup
}
void HMdcTrackFinderSetup::copySet(HMdcTrackFinderSetup* par2)
{
    setIsCoilOff(par2->getIsCoilOff());
    setTypeClustFinder(par2->getTypeClustFinder());
    Int_t myLayers[24];
    par2          ->getNLayers(&myLayers[0]);
    setNLayers(&myLayers[0]);
    Int_t myLevel[4];
    par2          ->getNLevel(&myLevel[0]);
    setNLevel(&myLevel[0]);
}
Bool_t HMdcTrackFinderSetup::isEqual(HMdcTrackFinderSetup* par2)
{
    if(getIsCoilOff()!=par2->getIsCoilOff())            return kFALSE;
    if(getTypeClustFinder()!=par2->getTypeClustFinder())return kFALSE;
    Int_t myLayers[24];
    Int_t myLayers2[24];
    par2          ->getNLayers(&myLayers[0]);
    getNLayers(&myLayers2[0]);
    for(Int_t i=0;i<24;i++){if(myLayers[i]!=myLayers2[i]) return kFALSE;}
    Int_t myLevel[4];
    Int_t myLevel2[4];
    par2          ->getNLevel(&myLevel[0]);
    getNLevel(&myLevel2[0]);
    for(Int_t i=0;i<4;i++){if(myLevel[i]!=myLevel2[i]) return kFALSE;}
    return kTRUE;
}
void HMdcTrackFinderSetup::clear()
{
    // The parameters are initialized with non valid values
    isCoilOff      =-99;   // kTRUE=magnet off
    typeClustFinder=-99; // 0 segment, 1 mdc
    for(Int_t i=0;i<24;i++){nLayers[i]=-99;}
    for(Int_t i=0;i<4;i++) {nLevel [i]=-99;}
}
Bool_t HMdcTrackFinderSetup::check()
{
    // The parameters are checked for non valid values
    if(isCoilOff      ==-99) return kFALSE;
    if(typeClustFinder==-99) return kFALSE;
    for(Int_t i=0;i<24;i++)
    {
	if(nLayers[i]==-99)  return kFALSE;
    }
    for(Int_t i=0;i<4;i++)
    {
	if(nLevel [i]==-99)  return kFALSE;
    }
    return kTRUE;
}
void HMdcTrackFinderSetup::printParam(void)
{
    // prints the parameters to the screen
    SEPERATOR_msg("-",60);
    INFO_msg(10,HMessageMgr::DET_MDC,"HMdcTrackFinderSetup:");
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"MagnetStatus    =  %i :  0 = MagnetOn,  1 = MagnetOff"
			   ,isCoilOff);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"ClustFinderType =  %i :  0 = combined chamber clusters, 1 = single chamber clusters, 2 = mixed clusters"
			   ,typeClustFinder);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"LevelsSegment1  =  %2i,%2i  : max. occupancy of MDC for level of cl.finding 4 & 5 layers"
			   ,nLevel[0],nLevel[1]);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"LevelsSegment2  =  %2i,%2i  : max. occupancy of MDC for level of cl.finding 4 & 5 layers"
			   ,nLevel[2],nLevel[3]);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"NumLayersPerMod = {{%i,%i,%i,%i},"
			   ,nLayers[0] ,nLayers[1] ,nLayers[2] ,nLayers[3] );
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"                   {%i,%i,%i,%i},"
			   ,nLayers[4] ,nLayers[5] ,nLayers[6] ,nLayers[7] );
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"                   {%i,%i,%i,%i},"
			   ,nLayers[8] ,nLayers[9] ,nLayers[10],nLayers[11]);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"                   {%i,%i,%i,%i},"
			   ,nLayers[12],nLayers[13],nLayers[14],nLayers[15]);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"                   {%i,%i,%i,%i},"
			   ,nLayers[16],nLayers[17],nLayers[18],nLayers[19]);
    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName()
			   ,"                   {%i,%i,%i,%i}}"
			   ,nLayers[20],nLayers[21],nLayers[22],nLayers[23]);
}
Bool_t HMdcTrackFinderSetup::getParams(HParamList* l)
{
   // gets the parameters from HParamList, which is used for io.
    if(!(l->fill("isCoilOff",      &isCoilOff      ))) return kFALSE;
    if(!(l->fill("typeClustFinder",&typeClustFinder))) return kFALSE;
    if(!(l->fill("nLevel" ,        &nLevel         ))) return kFALSE;
    if(!(l->fill("nLayers",        &nLayers        ))) return kFALSE;
    return kTRUE;
}
void HMdcTrackFinderSetup::putParams(HParamList* l)
{
    // puts the parameters of HMdcTrackFinderSetup to
    // HParamList, which is used for io.
    l->add("isCoilOff",      isCoilOff);
    l->add("typeClustFinder",typeClustFinder);
    l->add("nLevel" ,        nLevel);
    l->add("nLayers",        nLayers);
}
void HMdcTrackFinderSetup::setupMdcTrackFinder()
{
    Int_t myLayers[6][4];
    getNLayers(&myLayers[0][0]);
    HMdcTrackDSet::setMdcTrackFinder((Bool_t)isCoilOff,typeClustFinder);
    HMdcTrackDSet::setTrFnNLayers(&myLayers[0][0]);
    HMdcTrackDSet::setTrFnLevel(nLevel[0],nLevel[1],nLevel[2],nLevel[3]);
}
//################################## CLUSTERTOSEGSETUP #############################
HMdcClusterToHitSetup::HMdcClusterToHitSetup(const Char_t* name,const Char_t* title,HMdcSetup* set)
    : TNamed(name,title)
{
    // constructor of HMdcClusterToHitSetup
    // The parameters are initialized with non valid values
    setup=set;
    clear();
}
HMdcClusterToHitSetup::~HMdcClusterToHitSetup()
{
  // destructor HMdcClusterHitSetup
}
void HMdcClusterToHitSetup::copySet(HMdcClusterToHitSetup* par3)
{
    setMdcForSeg1(par3->getMdcForSeg1());
    setMdcForSeg2(par3->getMdcForSeg2());
}
Bool_t HMdcClusterToHitSetup::isEqual(HMdcClusterToHitSetup* par3)
{
    if(getMdcForSeg1()!=par3->getMdcForSeg1())return kFALSE;
    if(getMdcForSeg2()!=par3->getMdcForSeg2())return kFALSE;
    return kTRUE;
}
void HMdcClusterToHitSetup::clear()
{
    // The parameters are initialized with non valid values
    mdcForSeg1=-99;
    mdcForSeg2=-99;
}
Bool_t HMdcClusterToHitSetup::check()
{
    // The parameters are checked for non valid values
    if(mdcForSeg1==-99) return kFALSE;
    if(mdcForSeg2==-99) return kFALSE;
    return kTRUE;
}
void HMdcClusterToHitSetup::printParam(void)
{
    // prints the parameters to the screen
  SEPERATOR_msg("-",60);
  INFO_msg(10,HMessageMgr::DET_MDC,"HMdcClusterToHitSetup:");
  gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"ModForSeg1      =  %i : -1 = don't fill HMdcSeg for segment 1,"
			 ,mdcForSeg1);
  gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"                        0 = fill HMdcSeg by cluster in MDC1 if typeClFinder=1");
  gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"                            and sector has mdc1&2, else by cluster in existing MDC,");
  gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"                        1 =  -/- in mdc2,");
  gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"ModForSeg2      =  %i : -1 = don't fill HMdcSeg for segment 2,"
			 ,mdcForSeg2);
  gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"                        2 = fill HMdcSeg by cluster in MDC3 if typeClFinder=1");
  gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"                           and sector has mdc3&4 and MagnetOff,");
  gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"                            else by cluster in existing MDC,");
  gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"                        3 =  -/- in MDC4\n");
}
Bool_t HMdcClusterToHitSetup::getParams(HParamList* l)
{
    // gets the parameters from HParamList, which is used for io.
    if(!(l->fill("mdcForSeg1",&mdcForSeg1))) return kFALSE;
    if(!(l->fill("mdcForSeg2",&mdcForSeg2))) return kFALSE;
    return kTRUE;
}
void HMdcClusterToHitSetup::putParams(HParamList* l)
{
    // puts the parameters of HMdcClusterHitSetup to
    // HParamList, which is used for io.
    l->add("mdcForSeg1",mdcForSeg1);
    l->add("mdcForSeg2",mdcForSeg2);
}
void HMdcClusterToHitSetup::setupMdcClusterToHit()
{
    HMdcTrackDSet::setMdcClusterToHit(mdcForSeg1,mdcForSeg2);
}
//################################## FITTERSETUP #############################
HMdc12FitSetup::HMdc12FitSetup(const Char_t* name,const Char_t* title,HMdcSetup* set)
    : TNamed(name,title)
{
    // constructor of HMdc12FitSetup
    // The parameters are initialized with non valid values
    setup=set;
    clear();
}
HMdc12FitSetup::~HMdc12FitSetup()
{
  // destructor HMdc12FitSetup
}
void HMdc12FitSetup::copySet(HMdc12FitSetup* par4)
{
    setFitAuthor (par4->getFitAuthor());
    setFitVersion(par4->getFitVersion());
    setFitIndep  (par4->getFitIndep());
    setFitNTuple (par4->getFitNTuple());
    setFitPrint  (par4->getFitPrint());
}
Bool_t HMdc12FitSetup::isEqual(HMdc12FitSetup* par4)
{
    if(getFitAuthor ()!=par4->getFitAuthor()) return kFALSE;
    if(getFitVersion()!=par4->getFitVersion())return kFALSE;
    if(getFitIndep  ()!=par4->getFitIndep())  return kFALSE;
    if(getFitNTuple ()!=par4->getFitNTuple()) return kFALSE;
    if(getFitPrint  ()!=par4->getFitPrint())  return kFALSE;
    return kTRUE;
}
void HMdc12FitSetup::clear()
{
    // The parameters are initialized with non valid values
    fitauthor =-99;  // 0 Hejdar, 1 Alexander
    fitVersion=-99;  // 0 polynom 1 cal2parsim
    fitIndep  =-99;  // 0 segment 1 mdc
    fitNTuple =-99;  // kTRUE fill NTuple
    fitPrint  =-99;  // kTRUE print debug
}
Bool_t HMdc12FitSetup::check()
{
    // The parameters are checked for non valid values
    if(fitauthor ==-99) return kFALSE;
    if(fitVersion==-99) return kFALSE;
    if(fitIndep  ==-99) return kFALSE;
    if(fitNTuple ==-99) return kFALSE;
    if(fitPrint  ==-99) return kFALSE;
    return kTRUE;
}
void HMdc12FitSetup::printParam(void)
{
    // prints the parameters to the screen
  SEPERATOR_msg("-",60);
  INFO_msg(10,HMessageMgr::DET_MDC,"HMdc12FitSetup:");
  gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"FitAuthor       =  %i :  0 = Hejdar     , 1 = Alexander"
			 ,fitauthor);
  gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"DrTimeCalcVers  =  %i :  0 = polynom    , 1 = HMdCal2ParSim::calcTime"
			 ,fitVersion);
  gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"FitType         =  %i :  0 = segment fit, 1 = independent mdc fit"
			 ,fitIndep);
  gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"DebugCategorie  =  %i :  1 = create and fill catMdcClusFit&catMdcWireFit, 0 = don't cr."
			 ,fitNTuple);
  gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"DebugPrint      =  %i :  1 = print debug information, 0 = don't print"
			 ,fitPrint);
  gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"DebugPrint      =  %i :  1 = print debug information, 0 = don't print"
			 ,fitPrint);
}
Bool_t HMdc12FitSetup::getParams(HParamList* l)
{
    // gets the parameters from HParamList, which is used for io.
    if(!(l->fill("fitAuthor",        &fitauthor ))) return kFALSE;
    if(!(l->fill("fitVersion",       &fitVersion))) return kFALSE;
    if(!(l->fill("fitIndep",         &fitIndep  ))) return kFALSE;
    if(!(l->fill("fitNTuple",        &fitNTuple ))) return kFALSE;
    if(!(l->fill("fitPrint",         &fitPrint  ))) return kFALSE;
    return kTRUE;
}
void HMdc12FitSetup::putParams(HParamList* l)
{
    // puts the parameters of HMdc12FitSetup to
    // HParamList, which is used for io.
    l->add("fitAuthor",       fitauthor);
    l->add("fitVersion",      fitVersion);
    l->add("fitIndep",        fitIndep);
    l->add("fitNTuple",       fitNTuple);
    l->add("fitPrint",        fitPrint);
}
void HMdc12FitSetup::setupMdc12Fit()
{
    HMdcTrackDSet::setMdc12Fit(fitauthor,fitVersion,fitIndep, (Bool_t)fitNTuple,(Bool_t)fitPrint);

    if(setup)
    {   // if HMdcTrackDSet was created via HMdcSetup
        Bool_t wireoffset= setup->getMdcDigitizerSet()->getUseWireOffsetDigi();
        Int_t geant      = setup->getMdcCommonSet()   ->getIsSimulation();

	if( geant==0 || geant==2)
	{   // real and merge
	    HMdcTrackDSet::setUseWireOffset(kTRUE);
	}
	else
	{   // simulation
	    HMdcTrackDSet::setUseWireOffset(wireoffset);
	}
    }
    else
    {   // if HMdcTrackDSet was created stand alone
	HMdcTrackDSet::setUseWireOffset(kTRUE);
    }
}
//################################## COMMONSETUP #############################
HMdcCommonSetup::HMdcCommonSetup(const Char_t* name,const Char_t* title,HMdcSetup* set)
    : TNamed(name,title)
{
    // constructor of HMdcCommonSetup
    // The parameters are initialized with non valid values
    setup=set;
    clear();
}
HMdcCommonSetup::~HMdcCommonSetup()
{
  // destructor of HMdcCommonSetup
}
void HMdcCommonSetup::copySet(HMdcCommonSetup* par5)
{
    setIsSimulation(par5->getIsSimulation());
    setAnalysisLevel(par5->getAnalysisLevel());
    setTracker(par5->getTracker());
}
Bool_t HMdcCommonSetup::isEqual(HMdcCommonSetup* par5)
{
    if(getIsSimulation()!=par5->getIsSimulation())  return kFALSE;
    if(getAnalysisLevel()!=par5->getAnalysisLevel())return kFALSE;
    if(getTracker()!=par5->getTracker())            return kFALSE;
    return kTRUE;
}
void HMdcCommonSetup::clear()
{
    // The parameters are initialized with non valid values
    isSimulation =-99;
    analysisLevel=-99;
    tracker      =-99;          // 1,2 1:dubna
}
Bool_t HMdcCommonSetup::check()
{
    // The parameters are are checked for non valid values
    if(isSimulation ==-99) return kFALSE;
    if(analysisLevel==-99) return kFALSE;
    if(tracker      ==-99) return kFALSE;
    return kTRUE;
}
void HMdcCommonSetup::printParam(void)
{
    // prints the parameters to the screen
  SEPERATOR_msg("-",60);
  INFO_msg(10,HMessageMgr::DET_MDC,"HMdcCommonSetup:");
  gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"isSimulation    =  %i :  0 = real data, 1 = simulation"
			 ,isSimulation);
  gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"analysisLevel   =  %i :  0 = raw, 1 = cal1, 2 = cal2, 3 = hit, 4 = fit"
			 ,analysisLevel);
  gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"tracker         =  %i :  1 = dubna, 2 = santiago"
			 ,tracker);
}
Bool_t HMdcCommonSetup::getParams(HParamList* l)
{
    // gets the parameters from HParamList, which is used for io.
    if(!(l->fill("isSimulation", &isSimulation ))) return kFALSE;
    if(!(l->fill("analysisLevel",&analysisLevel))) return kFALSE;
    if(!(l->fill("tracker",      &tracker      ))) return kFALSE;
    return kTRUE;
}
void HMdcCommonSetup::putParams(HParamList* l)
{
    // puts the parameters of HMdcCommonSetup to
    // HParamList, which is used for io.
    l->add("isSimulation", isSimulation);
    l->add("analysisLevel",analysisLevel);
    l->add("tracker",      tracker);
}
 hmdcsetup.cc:1
 hmdcsetup.cc:2
 hmdcsetup.cc:3
 hmdcsetup.cc:4
 hmdcsetup.cc:5
 hmdcsetup.cc:6
 hmdcsetup.cc:7
 hmdcsetup.cc:8
 hmdcsetup.cc:9
 hmdcsetup.cc:10
 hmdcsetup.cc:11
 hmdcsetup.cc:12
 hmdcsetup.cc:13
 hmdcsetup.cc:14
 hmdcsetup.cc:15
 hmdcsetup.cc:16
 hmdcsetup.cc:17
 hmdcsetup.cc:18
 hmdcsetup.cc:19
 hmdcsetup.cc:20
 hmdcsetup.cc:21
 hmdcsetup.cc:22
 hmdcsetup.cc:23
 hmdcsetup.cc:24
 hmdcsetup.cc:25
 hmdcsetup.cc:26
 hmdcsetup.cc:27
 hmdcsetup.cc:28
 hmdcsetup.cc:29
 hmdcsetup.cc:30
 hmdcsetup.cc:31
 hmdcsetup.cc:32
 hmdcsetup.cc:33
 hmdcsetup.cc:34
 hmdcsetup.cc:35
 hmdcsetup.cc:36
 hmdcsetup.cc:37
 hmdcsetup.cc:38
 hmdcsetup.cc:39
 hmdcsetup.cc:40
 hmdcsetup.cc:41
 hmdcsetup.cc:42
 hmdcsetup.cc:43
 hmdcsetup.cc:44
 hmdcsetup.cc:45
 hmdcsetup.cc:46
 hmdcsetup.cc:47
 hmdcsetup.cc:48
 hmdcsetup.cc:49
 hmdcsetup.cc:50
 hmdcsetup.cc:51
 hmdcsetup.cc:52
 hmdcsetup.cc:53
 hmdcsetup.cc:54
 hmdcsetup.cc:55
 hmdcsetup.cc:56
 hmdcsetup.cc:57
 hmdcsetup.cc:58
 hmdcsetup.cc:59
 hmdcsetup.cc:60
 hmdcsetup.cc:61
 hmdcsetup.cc:62
 hmdcsetup.cc:63
 hmdcsetup.cc:64
 hmdcsetup.cc:65
 hmdcsetup.cc:66
 hmdcsetup.cc:67
 hmdcsetup.cc:68
 hmdcsetup.cc:69
 hmdcsetup.cc:70
 hmdcsetup.cc:71
 hmdcsetup.cc:72
 hmdcsetup.cc:73
 hmdcsetup.cc:74
 hmdcsetup.cc:75
 hmdcsetup.cc:76
 hmdcsetup.cc:77
 hmdcsetup.cc:78
 hmdcsetup.cc:79
 hmdcsetup.cc:80
 hmdcsetup.cc:81
 hmdcsetup.cc:82
 hmdcsetup.cc:83
 hmdcsetup.cc:84
 hmdcsetup.cc:85
 hmdcsetup.cc:86
 hmdcsetup.cc:87
 hmdcsetup.cc:88
 hmdcsetup.cc:89
 hmdcsetup.cc:90
 hmdcsetup.cc:91
 hmdcsetup.cc:92
 hmdcsetup.cc:93
 hmdcsetup.cc:94
 hmdcsetup.cc:95
 hmdcsetup.cc:96
 hmdcsetup.cc:97
 hmdcsetup.cc:98
 hmdcsetup.cc:99
 hmdcsetup.cc:100
 hmdcsetup.cc:101
 hmdcsetup.cc:102
 hmdcsetup.cc:103
 hmdcsetup.cc:104
 hmdcsetup.cc:105
 hmdcsetup.cc:106
 hmdcsetup.cc:107
 hmdcsetup.cc:108
 hmdcsetup.cc:109
 hmdcsetup.cc:110
 hmdcsetup.cc:111
 hmdcsetup.cc:112
 hmdcsetup.cc:113
 hmdcsetup.cc:114
 hmdcsetup.cc:115
 hmdcsetup.cc:116
 hmdcsetup.cc:117
 hmdcsetup.cc:118
 hmdcsetup.cc:119
 hmdcsetup.cc:120
 hmdcsetup.cc:121
 hmdcsetup.cc:122
 hmdcsetup.cc:123
 hmdcsetup.cc:124
 hmdcsetup.cc:125
 hmdcsetup.cc:126
 hmdcsetup.cc:127
 hmdcsetup.cc:128
 hmdcsetup.cc:129
 hmdcsetup.cc:130
 hmdcsetup.cc:131
 hmdcsetup.cc:132
 hmdcsetup.cc:133
 hmdcsetup.cc:134
 hmdcsetup.cc:135
 hmdcsetup.cc:136
 hmdcsetup.cc:137
 hmdcsetup.cc:138
 hmdcsetup.cc:139
 hmdcsetup.cc:140
 hmdcsetup.cc:141
 hmdcsetup.cc:142
 hmdcsetup.cc:143
 hmdcsetup.cc:144
 hmdcsetup.cc:145
 hmdcsetup.cc:146
 hmdcsetup.cc:147
 hmdcsetup.cc:148
 hmdcsetup.cc:149
 hmdcsetup.cc:150
 hmdcsetup.cc:151
 hmdcsetup.cc:152
 hmdcsetup.cc:153
 hmdcsetup.cc:154
 hmdcsetup.cc:155
 hmdcsetup.cc:156
 hmdcsetup.cc:157
 hmdcsetup.cc:158
 hmdcsetup.cc:159
 hmdcsetup.cc:160
 hmdcsetup.cc:161
 hmdcsetup.cc:162
 hmdcsetup.cc:163
 hmdcsetup.cc:164
 hmdcsetup.cc:165
 hmdcsetup.cc:166
 hmdcsetup.cc:167
 hmdcsetup.cc:168
 hmdcsetup.cc:169
 hmdcsetup.cc:170
 hmdcsetup.cc:171
 hmdcsetup.cc:172
 hmdcsetup.cc:173
 hmdcsetup.cc:174
 hmdcsetup.cc:175
 hmdcsetup.cc:176
 hmdcsetup.cc:177
 hmdcsetup.cc:178
 hmdcsetup.cc:179
 hmdcsetup.cc:180
 hmdcsetup.cc:181
 hmdcsetup.cc:182
 hmdcsetup.cc:183
 hmdcsetup.cc:184
 hmdcsetup.cc:185
 hmdcsetup.cc:186
 hmdcsetup.cc:187
 hmdcsetup.cc:188
 hmdcsetup.cc:189
 hmdcsetup.cc:190
 hmdcsetup.cc:191
 hmdcsetup.cc:192
 hmdcsetup.cc:193
 hmdcsetup.cc:194
 hmdcsetup.cc:195
 hmdcsetup.cc:196
 hmdcsetup.cc:197
 hmdcsetup.cc:198
 hmdcsetup.cc:199
 hmdcsetup.cc:200
 hmdcsetup.cc:201
 hmdcsetup.cc:202
 hmdcsetup.cc:203
 hmdcsetup.cc:204
 hmdcsetup.cc:205
 hmdcsetup.cc:206
 hmdcsetup.cc:207
 hmdcsetup.cc:208
 hmdcsetup.cc:209
 hmdcsetup.cc:210
 hmdcsetup.cc:211
 hmdcsetup.cc:212
 hmdcsetup.cc:213
 hmdcsetup.cc:214
 hmdcsetup.cc:215
 hmdcsetup.cc:216
 hmdcsetup.cc:217
 hmdcsetup.cc:218
 hmdcsetup.cc:219
 hmdcsetup.cc:220
 hmdcsetup.cc:221
 hmdcsetup.cc:222
 hmdcsetup.cc:223
 hmdcsetup.cc:224
 hmdcsetup.cc:225
 hmdcsetup.cc:226
 hmdcsetup.cc:227
 hmdcsetup.cc:228
 hmdcsetup.cc:229
 hmdcsetup.cc:230
 hmdcsetup.cc:231
 hmdcsetup.cc:232
 hmdcsetup.cc:233
 hmdcsetup.cc:234
 hmdcsetup.cc:235
 hmdcsetup.cc:236
 hmdcsetup.cc:237
 hmdcsetup.cc:238
 hmdcsetup.cc:239
 hmdcsetup.cc:240
 hmdcsetup.cc:241
 hmdcsetup.cc:242
 hmdcsetup.cc:243
 hmdcsetup.cc:244
 hmdcsetup.cc:245
 hmdcsetup.cc:246
 hmdcsetup.cc:247
 hmdcsetup.cc:248
 hmdcsetup.cc:249
 hmdcsetup.cc:250
 hmdcsetup.cc:251
 hmdcsetup.cc:252
 hmdcsetup.cc:253
 hmdcsetup.cc:254
 hmdcsetup.cc:255
 hmdcsetup.cc:256
 hmdcsetup.cc:257
 hmdcsetup.cc:258
 hmdcsetup.cc:259
 hmdcsetup.cc:260
 hmdcsetup.cc:261
 hmdcsetup.cc:262
 hmdcsetup.cc:263
 hmdcsetup.cc:264
 hmdcsetup.cc:265
 hmdcsetup.cc:266
 hmdcsetup.cc:267
 hmdcsetup.cc:268
 hmdcsetup.cc:269
 hmdcsetup.cc:270
 hmdcsetup.cc:271
 hmdcsetup.cc:272
 hmdcsetup.cc:273
 hmdcsetup.cc:274
 hmdcsetup.cc:275
 hmdcsetup.cc:276
 hmdcsetup.cc:277
 hmdcsetup.cc:278
 hmdcsetup.cc:279
 hmdcsetup.cc:280
 hmdcsetup.cc:281
 hmdcsetup.cc:282
 hmdcsetup.cc:283
 hmdcsetup.cc:284
 hmdcsetup.cc:285
 hmdcsetup.cc:286
 hmdcsetup.cc:287
 hmdcsetup.cc:288
 hmdcsetup.cc:289
 hmdcsetup.cc:290
 hmdcsetup.cc:291
 hmdcsetup.cc:292
 hmdcsetup.cc:293
 hmdcsetup.cc:294
 hmdcsetup.cc:295
 hmdcsetup.cc:296
 hmdcsetup.cc:297
 hmdcsetup.cc:298
 hmdcsetup.cc:299
 hmdcsetup.cc:300
 hmdcsetup.cc:301
 hmdcsetup.cc:302
 hmdcsetup.cc:303
 hmdcsetup.cc:304
 hmdcsetup.cc:305
 hmdcsetup.cc:306
 hmdcsetup.cc:307
 hmdcsetup.cc:308
 hmdcsetup.cc:309
 hmdcsetup.cc:310
 hmdcsetup.cc:311
 hmdcsetup.cc:312
 hmdcsetup.cc:313
 hmdcsetup.cc:314
 hmdcsetup.cc:315
 hmdcsetup.cc:316
 hmdcsetup.cc:317
 hmdcsetup.cc:318
 hmdcsetup.cc:319
 hmdcsetup.cc:320
 hmdcsetup.cc:321
 hmdcsetup.cc:322
 hmdcsetup.cc:323
 hmdcsetup.cc:324
 hmdcsetup.cc:325
 hmdcsetup.cc:326
 hmdcsetup.cc:327
 hmdcsetup.cc:328
 hmdcsetup.cc:329
 hmdcsetup.cc:330
 hmdcsetup.cc:331
 hmdcsetup.cc:332
 hmdcsetup.cc:333
 hmdcsetup.cc:334
 hmdcsetup.cc:335
 hmdcsetup.cc:336
 hmdcsetup.cc:337
 hmdcsetup.cc:338
 hmdcsetup.cc:339
 hmdcsetup.cc:340
 hmdcsetup.cc:341
 hmdcsetup.cc:342
 hmdcsetup.cc:343
 hmdcsetup.cc:344
 hmdcsetup.cc:345
 hmdcsetup.cc:346
 hmdcsetup.cc:347
 hmdcsetup.cc:348
 hmdcsetup.cc:349
 hmdcsetup.cc:350
 hmdcsetup.cc:351
 hmdcsetup.cc:352
 hmdcsetup.cc:353
 hmdcsetup.cc:354
 hmdcsetup.cc:355
 hmdcsetup.cc:356
 hmdcsetup.cc:357
 hmdcsetup.cc:358
 hmdcsetup.cc:359
 hmdcsetup.cc:360
 hmdcsetup.cc:361
 hmdcsetup.cc:362
 hmdcsetup.cc:363
 hmdcsetup.cc:364
 hmdcsetup.cc:365
 hmdcsetup.cc:366
 hmdcsetup.cc:367
 hmdcsetup.cc:368
 hmdcsetup.cc:369
 hmdcsetup.cc:370
 hmdcsetup.cc:371
 hmdcsetup.cc:372
 hmdcsetup.cc:373
 hmdcsetup.cc:374
 hmdcsetup.cc:375
 hmdcsetup.cc:376
 hmdcsetup.cc:377
 hmdcsetup.cc:378
 hmdcsetup.cc:379
 hmdcsetup.cc:380
 hmdcsetup.cc:381
 hmdcsetup.cc:382
 hmdcsetup.cc:383
 hmdcsetup.cc:384
 hmdcsetup.cc:385
 hmdcsetup.cc:386
 hmdcsetup.cc:387
 hmdcsetup.cc:388
 hmdcsetup.cc:389
 hmdcsetup.cc:390
 hmdcsetup.cc:391
 hmdcsetup.cc:392
 hmdcsetup.cc:393
 hmdcsetup.cc:394
 hmdcsetup.cc:395
 hmdcsetup.cc:396
 hmdcsetup.cc:397
 hmdcsetup.cc:398
 hmdcsetup.cc:399
 hmdcsetup.cc:400
 hmdcsetup.cc:401
 hmdcsetup.cc:402
 hmdcsetup.cc:403
 hmdcsetup.cc:404
 hmdcsetup.cc:405
 hmdcsetup.cc:406
 hmdcsetup.cc:407
 hmdcsetup.cc:408
 hmdcsetup.cc:409
 hmdcsetup.cc:410
 hmdcsetup.cc:411
 hmdcsetup.cc:412
 hmdcsetup.cc:413
 hmdcsetup.cc:414
 hmdcsetup.cc:415
 hmdcsetup.cc:416
 hmdcsetup.cc:417
 hmdcsetup.cc:418
 hmdcsetup.cc:419
 hmdcsetup.cc:420
 hmdcsetup.cc:421
 hmdcsetup.cc:422
 hmdcsetup.cc:423
 hmdcsetup.cc:424
 hmdcsetup.cc:425
 hmdcsetup.cc:426
 hmdcsetup.cc:427
 hmdcsetup.cc:428
 hmdcsetup.cc:429
 hmdcsetup.cc:430
 hmdcsetup.cc:431
 hmdcsetup.cc:432
 hmdcsetup.cc:433
 hmdcsetup.cc:434
 hmdcsetup.cc:435
 hmdcsetup.cc:436
 hmdcsetup.cc:437
 hmdcsetup.cc:438
 hmdcsetup.cc:439
 hmdcsetup.cc:440
 hmdcsetup.cc:441
 hmdcsetup.cc:442
 hmdcsetup.cc:443
 hmdcsetup.cc:444
 hmdcsetup.cc:445
 hmdcsetup.cc:446
 hmdcsetup.cc:447
 hmdcsetup.cc:448
 hmdcsetup.cc:449
 hmdcsetup.cc:450
 hmdcsetup.cc:451
 hmdcsetup.cc:452
 hmdcsetup.cc:453
 hmdcsetup.cc:454
 hmdcsetup.cc:455
 hmdcsetup.cc:456
 hmdcsetup.cc:457
 hmdcsetup.cc:458
 hmdcsetup.cc:459
 hmdcsetup.cc:460
 hmdcsetup.cc:461
 hmdcsetup.cc:462
 hmdcsetup.cc:463
 hmdcsetup.cc:464
 hmdcsetup.cc:465
 hmdcsetup.cc:466
 hmdcsetup.cc:467
 hmdcsetup.cc:468
 hmdcsetup.cc:469
 hmdcsetup.cc:470
 hmdcsetup.cc:471
 hmdcsetup.cc:472
 hmdcsetup.cc:473
 hmdcsetup.cc:474
 hmdcsetup.cc:475
 hmdcsetup.cc:476
 hmdcsetup.cc:477
 hmdcsetup.cc:478
 hmdcsetup.cc:479
 hmdcsetup.cc:480
 hmdcsetup.cc:481
 hmdcsetup.cc:482
 hmdcsetup.cc:483
 hmdcsetup.cc:484
 hmdcsetup.cc:485
 hmdcsetup.cc:486
 hmdcsetup.cc:487
 hmdcsetup.cc:488
 hmdcsetup.cc:489
 hmdcsetup.cc:490
 hmdcsetup.cc:491
 hmdcsetup.cc:492
 hmdcsetup.cc:493
 hmdcsetup.cc:494
 hmdcsetup.cc:495
 hmdcsetup.cc:496
 hmdcsetup.cc:497
 hmdcsetup.cc:498
 hmdcsetup.cc:499
 hmdcsetup.cc:500
 hmdcsetup.cc:501
 hmdcsetup.cc:502
 hmdcsetup.cc:503
 hmdcsetup.cc:504
 hmdcsetup.cc:505
 hmdcsetup.cc:506
 hmdcsetup.cc:507
 hmdcsetup.cc:508
 hmdcsetup.cc:509
 hmdcsetup.cc:510
 hmdcsetup.cc:511
 hmdcsetup.cc:512
 hmdcsetup.cc:513
 hmdcsetup.cc:514
 hmdcsetup.cc:515
 hmdcsetup.cc:516
 hmdcsetup.cc:517
 hmdcsetup.cc:518
 hmdcsetup.cc:519
 hmdcsetup.cc:520
 hmdcsetup.cc:521
 hmdcsetup.cc:522
 hmdcsetup.cc:523
 hmdcsetup.cc:524
 hmdcsetup.cc:525
 hmdcsetup.cc:526
 hmdcsetup.cc:527
 hmdcsetup.cc:528
 hmdcsetup.cc:529
 hmdcsetup.cc:530
 hmdcsetup.cc:531
 hmdcsetup.cc:532
 hmdcsetup.cc:533
 hmdcsetup.cc:534
 hmdcsetup.cc:535
 hmdcsetup.cc:536
 hmdcsetup.cc:537
 hmdcsetup.cc:538
 hmdcsetup.cc:539
 hmdcsetup.cc:540
 hmdcsetup.cc:541
 hmdcsetup.cc:542
 hmdcsetup.cc:543
 hmdcsetup.cc:544
 hmdcsetup.cc:545
 hmdcsetup.cc:546
 hmdcsetup.cc:547
 hmdcsetup.cc:548
 hmdcsetup.cc:549
 hmdcsetup.cc:550
 hmdcsetup.cc:551
 hmdcsetup.cc:552
 hmdcsetup.cc:553
 hmdcsetup.cc:554
 hmdcsetup.cc:555
 hmdcsetup.cc:556
 hmdcsetup.cc:557
 hmdcsetup.cc:558
 hmdcsetup.cc:559
 hmdcsetup.cc:560
 hmdcsetup.cc:561
 hmdcsetup.cc:562
 hmdcsetup.cc:563
 hmdcsetup.cc:564
 hmdcsetup.cc:565
 hmdcsetup.cc:566
 hmdcsetup.cc:567
 hmdcsetup.cc:568
 hmdcsetup.cc:569
 hmdcsetup.cc:570
 hmdcsetup.cc:571
 hmdcsetup.cc:572
 hmdcsetup.cc:573
 hmdcsetup.cc:574
 hmdcsetup.cc:575
 hmdcsetup.cc:576
 hmdcsetup.cc:577
 hmdcsetup.cc:578
 hmdcsetup.cc:579
 hmdcsetup.cc:580
 hmdcsetup.cc:581
 hmdcsetup.cc:582
 hmdcsetup.cc:583
 hmdcsetup.cc:584
 hmdcsetup.cc:585
 hmdcsetup.cc:586
 hmdcsetup.cc:587
 hmdcsetup.cc:588
 hmdcsetup.cc:589
 hmdcsetup.cc:590
 hmdcsetup.cc:591
 hmdcsetup.cc:592
 hmdcsetup.cc:593
 hmdcsetup.cc:594
 hmdcsetup.cc:595
 hmdcsetup.cc:596
 hmdcsetup.cc:597
 hmdcsetup.cc:598
 hmdcsetup.cc:599
 hmdcsetup.cc:600
 hmdcsetup.cc:601
 hmdcsetup.cc:602
 hmdcsetup.cc:603
 hmdcsetup.cc:604
 hmdcsetup.cc:605
 hmdcsetup.cc:606
 hmdcsetup.cc:607
 hmdcsetup.cc:608
 hmdcsetup.cc:609
 hmdcsetup.cc:610
 hmdcsetup.cc:611
 hmdcsetup.cc:612
 hmdcsetup.cc:613
 hmdcsetup.cc:614
 hmdcsetup.cc:615
 hmdcsetup.cc:616
 hmdcsetup.cc:617
 hmdcsetup.cc:618
 hmdcsetup.cc:619
 hmdcsetup.cc:620
 hmdcsetup.cc:621
 hmdcsetup.cc:622
 hmdcsetup.cc:623
 hmdcsetup.cc:624
 hmdcsetup.cc:625
 hmdcsetup.cc:626
 hmdcsetup.cc:627
 hmdcsetup.cc:628
 hmdcsetup.cc:629
 hmdcsetup.cc:630
 hmdcsetup.cc:631
 hmdcsetup.cc:632
 hmdcsetup.cc:633
 hmdcsetup.cc:634
 hmdcsetup.cc:635
 hmdcsetup.cc:636
 hmdcsetup.cc:637
 hmdcsetup.cc:638
 hmdcsetup.cc:639
 hmdcsetup.cc:640
 hmdcsetup.cc:641
 hmdcsetup.cc:642
 hmdcsetup.cc:643
 hmdcsetup.cc:644
 hmdcsetup.cc:645
 hmdcsetup.cc:646
 hmdcsetup.cc:647
 hmdcsetup.cc:648
 hmdcsetup.cc:649
 hmdcsetup.cc:650
 hmdcsetup.cc:651
 hmdcsetup.cc:652
 hmdcsetup.cc:653
 hmdcsetup.cc:654
 hmdcsetup.cc:655
 hmdcsetup.cc:656
 hmdcsetup.cc:657
 hmdcsetup.cc:658
 hmdcsetup.cc:659
 hmdcsetup.cc:660
 hmdcsetup.cc:661
 hmdcsetup.cc:662
 hmdcsetup.cc:663
 hmdcsetup.cc:664
 hmdcsetup.cc:665
 hmdcsetup.cc:666
 hmdcsetup.cc:667
 hmdcsetup.cc:668
 hmdcsetup.cc:669
 hmdcsetup.cc:670
 hmdcsetup.cc:671
 hmdcsetup.cc:672
 hmdcsetup.cc:673
 hmdcsetup.cc:674
 hmdcsetup.cc:675
 hmdcsetup.cc:676
 hmdcsetup.cc:677
 hmdcsetup.cc:678
 hmdcsetup.cc:679
 hmdcsetup.cc:680
 hmdcsetup.cc:681
 hmdcsetup.cc:682
 hmdcsetup.cc:683
 hmdcsetup.cc:684
 hmdcsetup.cc:685
 hmdcsetup.cc:686
 hmdcsetup.cc:687
 hmdcsetup.cc:688
 hmdcsetup.cc:689
 hmdcsetup.cc:690
 hmdcsetup.cc:691
 hmdcsetup.cc:692
 hmdcsetup.cc:693
 hmdcsetup.cc:694
 hmdcsetup.cc:695
 hmdcsetup.cc:696
 hmdcsetup.cc:697
 hmdcsetup.cc:698
 hmdcsetup.cc:699
 hmdcsetup.cc:700
 hmdcsetup.cc:701
 hmdcsetup.cc:702
 hmdcsetup.cc:703
 hmdcsetup.cc:704
 hmdcsetup.cc:705
 hmdcsetup.cc:706
 hmdcsetup.cc:707
 hmdcsetup.cc:708
 hmdcsetup.cc:709
 hmdcsetup.cc:710
 hmdcsetup.cc:711
 hmdcsetup.cc:712
 hmdcsetup.cc:713
 hmdcsetup.cc:714
 hmdcsetup.cc:715
 hmdcsetup.cc:716
 hmdcsetup.cc:717
 hmdcsetup.cc:718
 hmdcsetup.cc:719
 hmdcsetup.cc:720
 hmdcsetup.cc:721
 hmdcsetup.cc:722
 hmdcsetup.cc:723
 hmdcsetup.cc:724
 hmdcsetup.cc:725
 hmdcsetup.cc:726
 hmdcsetup.cc:727
 hmdcsetup.cc:728
 hmdcsetup.cc:729
 hmdcsetup.cc:730
 hmdcsetup.cc:731
 hmdcsetup.cc:732
 hmdcsetup.cc:733
 hmdcsetup.cc:734
 hmdcsetup.cc:735
 hmdcsetup.cc:736
 hmdcsetup.cc:737
 hmdcsetup.cc:738
 hmdcsetup.cc:739
 hmdcsetup.cc:740
 hmdcsetup.cc:741
 hmdcsetup.cc:742
 hmdcsetup.cc:743
 hmdcsetup.cc:744
 hmdcsetup.cc:745
 hmdcsetup.cc:746
 hmdcsetup.cc:747
 hmdcsetup.cc:748
 hmdcsetup.cc:749
 hmdcsetup.cc:750
 hmdcsetup.cc:751
 hmdcsetup.cc:752
 hmdcsetup.cc:753
 hmdcsetup.cc:754
 hmdcsetup.cc:755
 hmdcsetup.cc:756
 hmdcsetup.cc:757
 hmdcsetup.cc:758
 hmdcsetup.cc:759
 hmdcsetup.cc:760
 hmdcsetup.cc:761
 hmdcsetup.cc:762
 hmdcsetup.cc:763
 hmdcsetup.cc:764
 hmdcsetup.cc:765
 hmdcsetup.cc:766
 hmdcsetup.cc:767
 hmdcsetup.cc:768
 hmdcsetup.cc:769
 hmdcsetup.cc:770
 hmdcsetup.cc:771
 hmdcsetup.cc:772
 hmdcsetup.cc:773
 hmdcsetup.cc:774
 hmdcsetup.cc:775
 hmdcsetup.cc:776
 hmdcsetup.cc:777
 hmdcsetup.cc:778
 hmdcsetup.cc:779
 hmdcsetup.cc:780
 hmdcsetup.cc:781
 hmdcsetup.cc:782
 hmdcsetup.cc:783
 hmdcsetup.cc:784
 hmdcsetup.cc:785
 hmdcsetup.cc:786
 hmdcsetup.cc:787
 hmdcsetup.cc:788
 hmdcsetup.cc:789
 hmdcsetup.cc:790
 hmdcsetup.cc:791
 hmdcsetup.cc:792
 hmdcsetup.cc:793
 hmdcsetup.cc:794
 hmdcsetup.cc:795
 hmdcsetup.cc:796
 hmdcsetup.cc:797
 hmdcsetup.cc:798
 hmdcsetup.cc:799
 hmdcsetup.cc:800
 hmdcsetup.cc:801
 hmdcsetup.cc:802
 hmdcsetup.cc:803
 hmdcsetup.cc:804
 hmdcsetup.cc:805
 hmdcsetup.cc:806
 hmdcsetup.cc:807
 hmdcsetup.cc:808
 hmdcsetup.cc:809
 hmdcsetup.cc:810
 hmdcsetup.cc:811
 hmdcsetup.cc:812
 hmdcsetup.cc:813
 hmdcsetup.cc:814
 hmdcsetup.cc:815
 hmdcsetup.cc:816
 hmdcsetup.cc:817
 hmdcsetup.cc:818
 hmdcsetup.cc:819
 hmdcsetup.cc:820
 hmdcsetup.cc:821
 hmdcsetup.cc:822
 hmdcsetup.cc:823
 hmdcsetup.cc:824
 hmdcsetup.cc:825
 hmdcsetup.cc:826
 hmdcsetup.cc:827
 hmdcsetup.cc:828
 hmdcsetup.cc:829
 hmdcsetup.cc:830
 hmdcsetup.cc:831
 hmdcsetup.cc:832
 hmdcsetup.cc:833
 hmdcsetup.cc:834
 hmdcsetup.cc:835
 hmdcsetup.cc:836
 hmdcsetup.cc:837
 hmdcsetup.cc:838
 hmdcsetup.cc:839
 hmdcsetup.cc:840
 hmdcsetup.cc:841
 hmdcsetup.cc:842
 hmdcsetup.cc:843
 hmdcsetup.cc:844
 hmdcsetup.cc:845
 hmdcsetup.cc:846
 hmdcsetup.cc:847
 hmdcsetup.cc:848
 hmdcsetup.cc:849
 hmdcsetup.cc:850
 hmdcsetup.cc:851
 hmdcsetup.cc:852
 hmdcsetup.cc:853
 hmdcsetup.cc:854
 hmdcsetup.cc:855
 hmdcsetup.cc:856
 hmdcsetup.cc:857
 hmdcsetup.cc:858
 hmdcsetup.cc:859
 hmdcsetup.cc:860
 hmdcsetup.cc:861
 hmdcsetup.cc:862
 hmdcsetup.cc:863
 hmdcsetup.cc:864
 hmdcsetup.cc:865
 hmdcsetup.cc:866
 hmdcsetup.cc:867
 hmdcsetup.cc:868
 hmdcsetup.cc:869
 hmdcsetup.cc:870
 hmdcsetup.cc:871
 hmdcsetup.cc:872
 hmdcsetup.cc:873
 hmdcsetup.cc:874
 hmdcsetup.cc:875
 hmdcsetup.cc:876
 hmdcsetup.cc:877
 hmdcsetup.cc:878
 hmdcsetup.cc:879
 hmdcsetup.cc:880
 hmdcsetup.cc:881
 hmdcsetup.cc:882
 hmdcsetup.cc:883
 hmdcsetup.cc:884
 hmdcsetup.cc:885
 hmdcsetup.cc:886
 hmdcsetup.cc:887
 hmdcsetup.cc:888
 hmdcsetup.cc:889
 hmdcsetup.cc:890
 hmdcsetup.cc:891
 hmdcsetup.cc:892
 hmdcsetup.cc:893
 hmdcsetup.cc:894
 hmdcsetup.cc:895
 hmdcsetup.cc:896
 hmdcsetup.cc:897
 hmdcsetup.cc:898
 hmdcsetup.cc:899
 hmdcsetup.cc:900
 hmdcsetup.cc:901
 hmdcsetup.cc:902
 hmdcsetup.cc:903
 hmdcsetup.cc:904
 hmdcsetup.cc:905
 hmdcsetup.cc:906
 hmdcsetup.cc:907
 hmdcsetup.cc:908
 hmdcsetup.cc:909
 hmdcsetup.cc:910
 hmdcsetup.cc:911
 hmdcsetup.cc:912
 hmdcsetup.cc:913
 hmdcsetup.cc:914
 hmdcsetup.cc:915
 hmdcsetup.cc:916
 hmdcsetup.cc:917
 hmdcsetup.cc:918
 hmdcsetup.cc:919
 hmdcsetup.cc:920
 hmdcsetup.cc:921
 hmdcsetup.cc:922
 hmdcsetup.cc:923
 hmdcsetup.cc:924
 hmdcsetup.cc:925
 hmdcsetup.cc:926
 hmdcsetup.cc:927
 hmdcsetup.cc:928
 hmdcsetup.cc:929