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

//_HADES_CLASS_DESCRIPTION 
////////////////////////////////////////////////////////////////////////////
// HMdcGarMacroMaker
// Class to create a GARFIELD Macro for Batch farm processing to simulate
// a couple of tracks for each sample point (distance from wire). The produced
// signals on the sense wire will be written to an ascii file, which can be read in
// via HMdcGarSignalReader afterwards.
// As input you have to specify the Mdc (0-3) and the angle (0-85 degree)
// where 0 degree is perpendicular impact of the track.
////////////////////////////////////////////////////////////////////////////
using namespace std;
#include <stdlib.h>
#include <iostream> 
#include <iomanip>
#include "hmdcgarmacromaker.h"
#include "TString.h"
#include "TObjString.h"
#include "TMath.h"
#include "TList.h"
                                                  
ClassImp(HMdcGarMacroMaker)

Float_t HMdcGarMacroMaker::cathodth   [4]={0.01 ,0.01 ,0.01 ,0.01 };
Float_t HMdcGarMacroMaker::senseth    [4]={0.002,0.002,0.002,0.002};
Float_t HMdcGarMacroMaker::fieldth    [4]={0.01 ,0.01 ,0.01 ,0.01 };

Float_t HMdcGarMacroMaker::cathodpitch[4]={0.2,0.2,0.3,0.4};
Float_t HMdcGarMacroMaker::sensepitch [4]={0.5,0.6,1.2,1.4};
Float_t HMdcGarMacroMaker::fieldpitch [4]={0.5,0.6,1.2,1.4};

Int_t   HMdcGarMacroMaker::cathodhv   [4]={-1750,-1800,-2000,-2400};
Int_t   HMdcGarMacroMaker::sensehv    [4]={    0,    0,    0,    0};
Int_t   HMdcGarMacroMaker::fieldhv    [4]={-1750,-1800,-2000,-2400};

Int_t   HMdcGarMacroMaker::cathodhvmod   [4]={0,0,0,0};
Int_t   HMdcGarMacroMaker::sensehvmod    [4]={0,0,0,0};
Int_t   HMdcGarMacroMaker::fieldhvmod    [4]={0,0,0,0};

Int_t   HMdcGarMacroMaker::ncathod    [4]={10,10,13,13};
Int_t   HMdcGarMacroMaker::nsense     [4]={3 ,3 ,3 ,3 };
Int_t   HMdcGarMacroMaker::nfield     [4]={4 ,4 ,4 ,4 };

Float_t HMdcGarMacroMaker::dc_s       [4]={0.25,0.25,0.4,0.5};
Float_t HMdcGarMacroMaker::cathodx    [4]={0.9 ,0.9 ,1.8 ,2.4};
Float_t HMdcGarMacroMaker::sensex     [4]={0.5 ,0.6 ,1.2 ,1.4};
Float_t HMdcGarMacroMaker::fieldx     [4]={0.75,0.9 ,1.8 ,2.1};

Float_t HMdcGarMacroMaker::area    [4][4]={{-0.30,-0.30, 0.30, 0.30},
                                           {-0.30,-0.30, 0.30, 0.30},
                                           {-0.91,-0.41, 0.91, 0.41},
					   {-0.81,-0.52, 0.81, 0.52}};

Int_t   HMdcGarMacroMaker::cwire      [4]={43,43,52,52};
Int_t   HMdcGarMacroMaker::cwire_foil [4]={6,6,6,6};
Float_t HMdcGarMacroMaker::time_up    [4]={0.3,0.3,0.5,0.5};
Float_t HMdcGarMacroMaker::time_low   [4]={0.0,0.0,0.0,0.0};

Float_t HMdcGarMacroMaker::B_components[3]={0.0 ,0.0 ,0.0};

/*
Int_t   HMdcGarMacroMaker::maxLoop[4][18]={{25,26,26,26,27,28,29,31,33,36,33,31,29,28,27,26,26,26},
                                           {30,31,31,32,32,32,35,37,40,37,34,32,31,29,28,27,27,27},
                                           {60,61,61,63,64,67,70,70,63,57,53,49,47,45,43,42,41,41},
					   {70,71,72,73,75,78,81,86,78,71,66,62,58,56,54,52,51,51}};

Int_t   HMdcGarMacroMaker::minLoop[4][18]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
                                           {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
                                           {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
					   {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
                                           */

Int_t   HMdcGarMacroMaker::minLoop[4][18]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                                           {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                                           {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
					   {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};

Int_t   HMdcGarMacroMaker::maxLoop[4][18]={{25,28,29,31,33,34,35,35,36,36,36,35,35,34,33,31,29,28},
                                           {30,33,35,36,38,39,39,40,40,40,40,39,38,37,35,33,31,29},
					   {60,64,67,69,71,72,72,73,72,71,70,68,65,62,59,55,50,46},
					   {70,75,78,81,83,85,86,87,86,85,84,82,79,75,71,67,62,56 }};

Double_t  HMdcGarMacroMaker::maxstep[4] = {0.001 ,0.001 ,0.003,0.003};
Double_t  HMdcGarMacroMaker::mc_dist[4] = {0.0005,0.0005,0.001,0.001};


HMdcGarMacroMaker::HMdcGarMacroMaker(const Char_t* name,const Char_t* title)
    : TNamed(name,title)
{
    // constructor for HMdcGarMacroMaker
    // The parameters are initialized with non valid values.
    initVariables();
}
HMdcGarMacroMaker::~HMdcGarMacroMaker()
{
  // destructor of HMdcGarMacroMaker
}
void HMdcGarMacroMaker::setArgon(Int_t ar)
{
   if (helium > 0)
   {
      Error("HMdcGarMacroMaker:setArgon()","ADMIXTURE OF HELIUM NOT ALLOWED!");
      exit(1);
   }
   if (ar + (ibutane > 0 ) ? ibutane : co2 > 100)
   {
      Error("HMdcGarMacroMaker:setArgon()","GAX MIXTURE EXCEEDS 100%%!");
      exit(1);
   }
   argon = ar;
}
void HMdcGarMacroMaker::setHelium(Int_t he)
{
   if (argon > 0)
   {
      Error("HMdcGarMacroMaker:setHelium()","ADMIXTURE OF ARGON NOT ALLOWED!");
      exit(1);
   }
   if (he + ibutane > 100)
   {
      Error("HMdcGarMacroMaker:setHelium()","GAX MIXTURE EXCEEDS 100%%!");
      exit(1);
   }
   helium = he;
}
void HMdcGarMacroMaker::setIButane(Int_t b)
{
   if ((helium  ?  helium  :  argon) + ibutane > 100)
   {
      Error("HMdcGarMacroMaker:setIButane()","GAX MIXTURE EXCEEDS 100%%!");
      exit(1);
   }
   ibutane = b;
}

void   HMdcGarMacroMaker::setCO2(Int_t co){

   if (helium > 0)
   {
      Error("HMdcGarMacroMaker:setCO2()","ADMIXTURE OF HELIUM NOT ALLOWED!");
      exit(1);
   }
   if(argon + ibutane > 100)
   {
      Error("HMdcGarMacroMaker:setCO2()","GAX MIXTURE EXCEEDS 100%%!");
      exit(1);
   }
   co2 = co;
}
void   HMdcGarMacroMaker::setArgonCO2(Int_t ar,Int_t co)
{
    ibutane = 0;
    helium  = 0;
    argon   = ar;
    co2     = co;

    if(argon + co2 > 100)
    {
	Error("HMdcGarMacroMaker:setArgonCO2()","GAX MIXTURE EXCEEDS 100%%!");
	exit(1);
    }
}
void   HMdcGarMacroMaker::setArgonIButane(Int_t ar,Int_t ib)
{
    ibutane = ib;
    helium  = 0;
    argon   = ar;
    co2     = 0;

    if(argon + ibutane > 100)
    {
	Error("HMdcGarMacroMaker:setArgonIButane()","GAX MIXTURE EXCEEDS 100%%!");
	exit(1);
    }
}
void   HMdcGarMacroMaker::setHeliumIButane(Int_t he,Int_t ib)
{
    ibutane = ib;
    helium  = he;
    argon   = 0;
    co2     = 0;

    if(he + ibutane > 100)
    {
	Error("HMdcGarMacroMaker:setHeliumIButane()","GAX MIXTURE EXCEEDS 100%%!");
	exit(1);
    }
}
void HMdcGarMacroMaker::setFileNameOut(TString myfile)
{
    // Sets ascii output of HMdcGarMacroMaker
    fNameAsciiOut=myfile;
    if(fNameAsciiOut.CompareTo("")==0)
    {
	Error("HMdcGarMacroMaker:setFileNameOut()","NO OUTPUT FILE SEPCIFIED!");
        exit(1);
    };
    cout<<"HMdcGarMacroMaker::setFileNameOut(): OUTPUT FILE= "<<fNameAsciiOut.Data()<<endl;
}
void HMdcGarMacroMaker::setFileNameSignals(TString myfile)
{
    // Sets ascii output of HMdcGarMacroMaker
    fNameSignalOut=myfile;
    if(fNameSignalOut.CompareTo("")==0)
    {
	Error("HMdcGarMacroMaker:setFileNameSignals()","NO OUTPUT FILE SEPCIFIED!");
        exit(1);
    };
    cout<<"HMdcGarMacroMaker::setFileNameSignals(): OUTPUT FILE= "<<fNameSignalOut.Data()<<endl;
}
void HMdcGarMacroMaker::setFileNameGasFile(TString myfile)
{
    // Sets ascii output of HMdcGarMacroMaker
    fNameGasIn=myfile;
    if(fNameGasIn.CompareTo("")==0)
    {
	Error("HMdcGarMacroMaker:setFileNameGasFile()","NO OUTPUT FILE SEPCIFIED!");
        exit(1);
    };
    cout<<"HMdcGarMacroMaker::setFileNameGasFile(): OUTPUT FILE= "<<fNameGasIn.Data()<<endl;
}
void HMdcGarMacroMaker::setPsFileName(TString myfile)
{
    // Sets ascii output of HMdcGarMacroMaker
    if(myfile.CompareTo("")==0)
    {
	Warning("HMdcGarMacroMaker:setPsFileName()","NO OUTPUT PSFILE SPECIFIED, FILE WILL BE TRACK.PS!");
    }
    else
    {
	postscriptfile=myfile;
    }
    postscript=kTRUE;
}
void HMdcGarMacroMaker::setPrintSetup(TString myset)
{
    if(myset.CompareTo("")==0)
    {
	Error("HMdcGarMacroMaker::setPrintSetup()","NO PRINT SETUP SPECIFIED!");
        exit(1);
    }
    parseArguments(myset);
}
void HMdcGarMacroMaker::setBFieldComponents(Float_t bx,Float_t by,Float_t bz)
{
    B_components[0]=bx;
    B_components[1]=by;
    B_components[2]=bz;
}

void HMdcGarMacroMaker::parseArguments(TString s1)
{
    // The option string is searched for known arguments and
    // the internal variables of the class are defined according
    // to the arguments.
    // If unknown arguments are found error messages will be displayed
    // and the program will be exited.
    // Not found options will be switched to kFALSE.

    // switch print key words
    TString scell    ="cell";
    TString soption  ="option";
    TString sgas     ="gas";
    TString sfield   ="field";
    TString sdrift   ="drift";
    TString ssignal  ="signal";
    TString s3d      ="3d";

    Int_t icell    =0;
    Int_t ioption  =0;
    Int_t igas     =0;
    Int_t ifield   =0;
    Int_t idrift   =0;
    Int_t isignal  =0;
    Int_t i3d      =0;

    TString s2=s1;  // make copy of string

    s1.ToLower();
    s1.ReplaceAll(" ","");
    Ssiz_t len = s1.Length();
    if(len != 0)
    {
	TObjArray* myarguments = s1.Tokenize(",");
	TObjString *stemp;
	TString argument;
	TIterator* myiter=myarguments->MakeIterator();

	// iterate over the lis of arguments and compare the
        // to known key words.
	while ((stemp=(TObjString*)myiter->Next())!= 0)
	{
	    argument=stemp->GetString();
	    if(argument.CompareTo(scell)==0)
	    {
                icell++;
		if(icell>1)
		{
		    Error("HMdcGarMacroMaker:parseArguments()","Multiple appearence of same arguent!");
		    cout<<"INPUT SETUPSTRING: "<<s2<<endl;
                    printKeyWords();
		    exit(1);
		}

		printcell=kTRUE;
	    }
            else if(argument.CompareTo(soption)==0)
	    {
                ioption++;
		if(ioption>1)
		{
		    Error("HMdcGarMacroMaker:parseArguments()","Multiple appearence of same arguent!");
		    cout<<"INPUT SETUPSTRING: "<<s2<<endl;
		    printKeyWords();
		    exit(1);
		}
		printoption=kTRUE;
	    }
            else if(argument.CompareTo(sgas)==0)
	    {
                igas++;
		if(igas>1)
		{
		    Error("HMdcGarMacroMaker:parseArguments()","Multiple appearence of same arguent!");
		    cout<<"INPUT SETUPSTRING: "<<s2<<endl;
		    printKeyWords();
		    exit(1);
		}
		printgas=kTRUE;
	    }
            else if(argument.CompareTo(sfield)==0)
	    {
                ifield++;
		if(ifield>1)
		{
		    Error("HMdcGarMacroMaker:parseArguments()","Multiple appearence of same arguent!");
		    cout<<"INPUT SETUPSTRING: "<<s2<<endl;
		    printKeyWords();
		    exit(1);
		}
		printfield=kTRUE;
	    }
            else if(argument.CompareTo(sdrift)==0)
	    {
                idrift++;
		if(idrift>1)
		{
		    Error("HMdcGarMacroMaker:parseArguments()","Multiple appearence of same arguent!");
		    cout<<"INPUT SETUPSTRING: "<<s2<<endl;
		    printKeyWords();
		    exit(1);
		}
		printdrift=kTRUE;
	    }
            else if(argument.CompareTo(ssignal)==0)
	    {
                isignal++;
		if(isignal>1)
		{
		    Error("HMdcGarMacroMaker:parseArguments()","Multiple appearence of same arguent!");
		    cout<<"INPUT SETUPSTRING: "<<s2<<endl;
		    printKeyWords();
		    exit(1);
		}
		printsignal=kTRUE;
	    }
            else if(argument.CompareTo(s3d)==0)
	    {
                i3d++;
		if(i3d>1)
		{
		    Error("HMdcGarMacroMaker:parseArguments()","Multiple appearence of same arguent!");
		    cout<<"INPUT SETUPSTRING: "<<s2<<endl;
		    printKeyWords();
		    exit(1);
		}
		print3d=kTRUE;
	    }
	    else
	    {
		Error("HMdcGarMacroMaker:parseArguments()","\n unknown argument %s !",argument.Data());
		cout<<"INPUT SETUPSTRING: "<<s2<<endl;
		printKeyWords();
		exit(1);
	    }
	}

	myarguments->Delete();
	delete myarguments;
        delete myiter;
    }
    if(icell==0)  printcell=kFALSE;
    if(ioption==0)printoption=kFALSE;
    if(igas==0)   printgas=kFALSE;
    if(ifield==0) printfield=kFALSE;
    if(idrift==0) printdrift=kFALSE;
    if(isignal==0)printsignal=kFALSE;
    if(i3d==0)    print3d=kFALSE;
}
void HMdcGarMacroMaker::initVariables()
{
    // inits all variables
    fNameAsciiOut      ="";
    fNameSignalOut     ="";
    fNameGasIn         ="";
    output             =0;
    postscript         =kFALSE;         // print pictures to ps
    postscriptfile     ="Track.ps";     // file name of ps output file
    mdc                =0;
    temperature        =293;
    pressure           =760;
    helium             =0;
    argon              =0;
    ibutane            =0;
    co2                =0;
    mobility           =1;
    avalanche          =44130;
    collisions         =500;
    trap_radius        = 1.01;
    particle           ="electron";
    energy             =0.7;
    range              =7.;
    timebin            =0.001;
    nTimeBin           =1000;
    angleDeg           =0;
    angleStep          =0;
    angleStepSize      =5.;
    nSignals           =100;
    writeData          =kFALSE;
    isochrones         =0.005;
    nLines             =100;
    printclusters=kFALSE;
    printcell    =kTRUE;
    printoption  =kTRUE;
    printgas     =kTRUE;
    printfield   =kTRUE;
    printdrift   =kTRUE;
    printsignal  =kTRUE;
    print3d      =kTRUE;
    cathode_foils=kFALSE;
    doRungeKutta =kTRUE;
}
void HMdcGarMacroMaker::printKeyWords()
{
    // Prints the known keywords to the screen
    printf ("--------------------------------------------------------------------------------------------\n");
    printf ("HMdcGarMacroMaker::setPrintSetup() OPTIONS: cell, option, gas, field, drift, signal, 3d\n");
}
void HMdcGarMacroMaker::printStatus(void)
{
    // prints the parameters to the screen
    printKeyWords();
    printf ("--------------------------------------------------------------------------------------------\n");
    printf ("HMdcGarMacroMaker:\n");
    printf ("Print Setup:      = ");
    if(printcell)  printf ("cell");
    if(printoption)printf (", option");
    if(printgas)   printf (", gas");
    if(printfield) printf (", field");
    if(printdrift) printf (", drift");
    if(printsignal)printf (", signal");
    if(print3d)    printf (", 3d");
    printf ("\n");
    printf ("Macro output file = %s\n",fNameAsciiOut.Data());
    if(postscript)printf ("PS output file    =%s\n",postscriptfile.Data());
    printf ("MDC TYPE          = %i\n",mdc);
    printf ("Impact angle      = %3.1f degree\n",angleDeg);
    if(cathode_foils)
    {
	printf ("Cathod foils are used\n");
    }
    if(!cathode_foils)
    {
	printf ("Cathod wires are used\n");
    }
    printf ("HV cathods        = %i V (GSI), %i V (DUBNA), %i V (FZR), %i V (ORRSAY),\n"
	    ,cathodhv[0],cathodhv[1],cathodhv[2],cathodhv[3]);
    printf ("HV field          = %i V (GSI), %i V (DUBNA), %i V (FZR), %i V (ORRSAY),\n"
	    ,fieldhv[0] ,fieldhv[1] ,fieldhv[2] ,fieldhv[3]);
    printf ("HV sense          = %i V (GSI), %i V (DUBNA), %i V (FZR), %i V (ORRSAY),\n"
	    ,sensehv[0] ,sensehv[1] ,sensehv[2] ,sensehv[3]);
    if (argon > 0 && ibutane > 0)
    {
       printf ("Gasmixture        = Ar/i-Butane(%i/%i), temperature %i K, pressure %i torr\n"
	       ,argon,ibutane,temperature,pressure);
    }
    else if (argon > 0 && co2 > 0)
    {
       printf ("Gasmixture        = Ar/CO2(%i/%i), temperature %i K, pressure %i torr\n"
	       ,argon,co2,temperature,pressure);
    }
    else if (helium > 0 && ibutane > 0)
    {
       printf ("Gasmixture        = He/i-Butane(%i/%i), temperature %i K, pressure %i torr\n"
	       ,helium,ibutane,temperature,pressure);
    } else {
	Error("HMdcGarMacroMaker:printStatus()","Unknown gas mixture!");
        exit(1);
    }

    printf ("Track Conditions  = %s, energy %3.2f GeV,\n \
	            avalanche %i, range %f cm, collisions %i\n"
	    ,particle.Data(),energy,avalanche,range,collisions);
    printf ("Signals           = %i Signals per point, %5.3f ns timebin\n",nSignals,timebin);
    printf ("Dataset flag      = %i\n",writeData);
    printf ("Isochrones        = %5.3f, nLines= %i\n",isochrones,nLines);
    printf ("--------------------------------------------------------------------------------------------\n");
}
void HMdcGarMacroMaker::putOut(const Char_t* buffer)
{
    // Prints the buffer to the screen and to the ascii output file
    printf("%s\n",buffer);
    if(output)fprintf(output,"%s",buffer);
}
void HMdcGarMacroMaker::openOutPut()
{
    // Opens the output file
    if(fNameAsciiOut.CompareTo("")!=0)
    {
	output=fopen(fNameAsciiOut.Data(),"w");
    }
    else
    {
	Error("HMdcGarMacroMaker::openOutPut()","NO OUTPUT SPECIFIED!");
	exit(1);
    }
}
void HMdcGarMacroMaker::closeOutPut()
{
    // Close the output file
    if(output)fclose(output);
}
void HMdcGarMacroMaker::printMacro()
{
    // Print the macro to the screen and the ascii file output
    printStatus();
    openOutPut();
    printMetaHeader();
    printCell();
    printOptions();
    printGeometry();
    printField();
    printMagnetic();
    printGas();
    printDrift();
    printSignal();
    print3D();
    printMetaTrailer();
    closeOutPut();
}
void HMdcGarMacroMaker::printMetaHeader()
{
    // Prints the Metafile Header of the macro
    if(postscript)
    {
	Char_t buffer[2048];
	sprintf(buffer,"*****************HEADER*********************\n"); putOut(buffer);
	sprintf(buffer,"!opt linear-x\n");                                putOut(buffer);
	sprintf(buffer,"!add meta type PostScript file-name \"%s\"\n"
		,postscriptfile.Data());                                  putOut(buffer);
        sprintf(buffer,"!open meta\n");                                   putOut(buffer);
	sprintf(buffer,"!act meta\n");                                    putOut(buffer);
	sprintf(buffer,"!reset-colours\n");                               putOut(buffer);
	sprintf(buffer,"\n");                                             putOut(buffer);
    }
}
void HMdcGarMacroMaker::printCell()
{
    // Prints the cell Id
    if(printcell)
    {
	Char_t buffer[2048];
	sprintf(buffer,"*****************CELL***********************\n");  putOut(buffer);
	sprintf(buffer,"&cell\n");                                         putOut(buffer);
	sprintf(buffer,"cell-id \"+=cathode,x=potential,o=sense\"\n");     putOut(buffer);
	sprintf(buffer,"\n");                                              putOut(buffer);
    }
}
void HMdcGarMacroMaker::printOptions()
{
    // Print some options
    if(printoption)
    {
	Char_t buffer[2048];
	sprintf(buffer,"*****************OPTIONS********************\n");  putOut(buffer);
	sprintf(buffer,"reset planes\n");                                  putOut(buffer);
	sprintf(buffer,"reset rows\n");                                    putOut(buffer);
	if(printclusters||postscript)
	{
	    sprintf(buffer,"opt layout\n");                                    putOut(buffer);
	    sprintf(buffer,"opt wire-markers\n");                              putOut(buffer);
	    sprintf(buffer,"opt cell-print\n");                                putOut(buffer);
	}
	sprintf(buffer,"\n");                                              putOut(buffer);
    }
}
void HMdcGarMacroMaker::printGeometry()
{
    // Print the Geometry of the drift cell
    Char_t buffer[2048];
    sprintf(buffer,"*****************GEOMETRY*******************\n");  putOut(buffer);
    if(!cathode_foils)
    {   // if cathode wires are used
	sprintf(buffer,"ROWS\n");                                          putOut(buffer);
	sprintf(buffer,"*label wire# thickness pitch x y voltage MDC%i\n"
		,mdc);                                                     putOut(buffer);
	sprintf(buffer,"c %2i %4.3f  (%3.2f*I)-%3.2f %5.2f %5i\n",
		ncathod[mdc],cathodth[mdc],cathodpitch[mdc],cathodx[mdc]
		, 3*dc_s[mdc],cathodhvmod[0]==0? cathodhv[mdc]:cathodhvmod[0]); putOut(buffer);
	sprintf(buffer,"p %2i %4.3f  (%3.2f*I)-%3.2f %5.2f %5i\n",
		nfield[mdc] ,fieldth[mdc] ,fieldpitch[mdc] ,fieldx[mdc]
		, 2*dc_s[mdc],fieldhvmod[0]==0? fieldhv[mdc]:fieldhvmod[0]);    putOut(buffer);
	sprintf(buffer,"S %2i %4.3f  (%3.2f*I)-%3.2f %5.2f %5i\n",
		nsense[mdc] ,senseth[mdc] ,sensepitch[mdc] ,sensex[mdc]
		, 2*dc_s[mdc],sensehvmod[0]==0? sensehv[mdc]:sensehvmod[0]);    putOut(buffer);
	sprintf(buffer,"c %2i %4.3f  (%3.2f*I)-%3.2f %5.2f %5i\n",
		ncathod[mdc],cathodth[mdc],cathodpitch[mdc],cathodx[mdc]
		,-1*dc_s[mdc],cathodhvmod[1]==0? cathodhv[mdc]:cathodhvmod[1]); putOut(buffer);
        sprintf(buffer,"c %2i %4.3f  (%3.2f*I)-%3.2f %5.2f %5i\n",
		ncathod[mdc],cathodth[mdc],cathodpitch[mdc],cathodx[mdc]
		, 1*dc_s[mdc],cathodhvmod[2]==0? cathodhv[mdc]:cathodhvmod[2]); putOut(buffer);
	sprintf(buffer,"p %2i %4.3f  (%3.2f*I)-%3.2f %5.2f %5i\n",
		nfield[mdc] ,fieldth[mdc] ,fieldpitch[mdc] ,fieldx[mdc]
		, 0*dc_s[mdc],fieldhvmod[1]==0? fieldhv[mdc]:fieldhvmod[1]);    putOut(buffer);
        sprintf(buffer,"S %2i %4.3f  (%3.2f*I)-%3.2f %5.2f %5i\n",
		nsense[mdc] ,senseth[mdc] ,sensepitch[mdc] ,sensex[mdc]
		, 0*dc_s[mdc],sensehvmod[1]==0? sensehv[mdc]:sensehvmod[1]);    putOut(buffer);
        sprintf(buffer,"c %2i %4.3f  (%3.2f*I)-%3.2f %5.2f %5i\n",
		ncathod[mdc],cathodth[mdc],cathodpitch[mdc],cathodx[mdc]
		,-3*dc_s[mdc],cathodhvmod[3]==0? cathodhv[mdc]:cathodhvmod[3]); putOut(buffer);
	sprintf(buffer,"p %2i %4.3f  (%3.2f*I)-%3.2f %5.2f %5i\n",
		nfield[mdc] ,fieldth[mdc] ,fieldpitch[mdc] ,fieldx[mdc]
		,-2*dc_s[mdc],fieldhvmod[2]==0? fieldhv[mdc]:fieldhvmod[2]);    putOut(buffer);
        sprintf(buffer,"S %2i %4.3f  (%3.2f*I)-%3.2f %5.2f %5i\n",
		nsense[mdc] ,senseth[mdc] ,sensepitch[mdc] ,sensex[mdc]
		,-2*dc_s[mdc],sensehvmod[2]==0? sensehv[mdc]:sensehvmod[2]);    putOut(buffer);

    }
    else
    { // if cathode foils are used
	sprintf(buffer,"plane y=%5.2f ,V=%5i\n",
		-1*dc_s[mdc],cathodhvmod[2]==0? cathodhv[mdc]:cathodhvmod[2]);  putOut(buffer);
        sprintf(buffer,"plane y=%5.2f ,V=%5i\n",
		1*dc_s[mdc],cathodhvmod[2]==0? cathodhv[mdc]:cathodhvmod[2]);   putOut(buffer);
	sprintf(buffer,"ROWS\n");                                          putOut(buffer);
	sprintf(buffer,"*label wire# thickness pitch x y voltage MDC%i\n"
		,mdc);                                                     putOut(buffer);
	sprintf(buffer,"p %2i %4.3f  (%3.2f*I)-%3.2f %5.2f %5i\n",
		nfield[mdc] ,fieldth[mdc] ,fieldpitch[mdc] ,fieldx[mdc]
		, 0*dc_s[mdc],fieldhvmod[1]==0? fieldhv[mdc]:fieldhvmod[1]);    putOut(buffer);
        sprintf(buffer,"S %2i %4.3f  (%3.2f*I)-%3.2f %5.2f %5i\n",
		nsense[mdc] ,senseth[mdc] ,sensepitch[mdc] ,sensex[mdc]
		, 0*dc_s[mdc],sensehvmod[1]==0? sensehv[mdc]:sensehvmod[1]);    putOut(buffer);

    }

    sprintf(buffer,"\n");                                              putOut(buffer);
}
void HMdcGarMacroMaker::printField()
{
    // Print the field section of the macro
    if(printfield)
    {
	Char_t buffer[2048];
	sprintf(buffer,"*****************FIELD**********************\n");  putOut(buffer);
	sprintf(buffer,"&field\n");                                        putOut(buffer);
	sprintf(buffer,"track FROM 0. 1. TO 0. -1.\n");                    putOut(buffer);
	sprintf(buffer,"grid 40 40\n");                                    putOut(buffer);
	sprintf(buffer,"*xmin ymin xmax ymax\n");                          putOut(buffer);
	if(postscript)
	{
	    if(mdc==0){sprintf(buffer,"area -0.32 -0.27 0.32 0.27\n");      putOut(buffer);}
	    if(mdc==1){sprintf(buffer,"area -0.32 -0.28 0.32 0.28\n");      putOut(buffer);}
	    if(mdc==2){sprintf(buffer,"area -0.62 -0.42 0.62 0.42\n");      putOut(buffer);}
	    if(mdc==3){sprintf(buffer,"area -0.82 -0.62 0.82 0.62\n");      putOut(buffer);}
	    sprintf(buffer,"*-------------------------------------------\n");  putOut(buffer);
	    sprintf(buffer,"plot  contour e N 50 NOLABEL\n");              putOut(buffer);
	    sprintf(buffer,"plot  contour v N 50 NOLABEL\n");              putOut(buffer);
	    sprintf(buffer,"plot  surface e\n");                           putOut(buffer);
	    sprintf(buffer,"plot  graph e\n");                             putOut(buffer);
	    sprintf(buffer,"plot  graph v\n");                             putOut(buffer);
	    if(writeData)
	    {
		sprintf(buffer,"*-------------------------------------------\n");  putOut(buffer);
		sprintf(buffer,"> graph_e_mdc%i.dat\n",mdc);               putOut(buffer);
		sprintf(buffer,"plot graph e N 200 print\n");              putOut(buffer);
		sprintf(buffer,">\n");                                     putOut(buffer);
	    }
	}
	sprintf(buffer,"\n");                                              putOut(buffer);
    }
}
void HMdcGarMacroMaker::printMagnetic()
{
    // Prints the magnetic field settings
    if(printcell)
    {
	Char_t buffer[2048];
	sprintf(buffer,"*****************MAGNETIC*******************\n");  putOut(buffer);
	sprintf(buffer,"&magnetic\n");                                     putOut(buffer);
	sprintf(buffer,"components %5.2f %5.2f %5.2f T \n",
	       B_components[0],B_components[1],B_components[2]);           putOut(buffer);
	sprintf(buffer,"\n");                                              putOut(buffer);
    }
}

void HMdcGarMacroMaker::printGas()
{
    // Print the Gas section of the macro
    if(printgas)
    {
	Char_t name[300];
	if (argon > 0 && ibutane > 0)
	{
	   sprintf(name,"ar_ibutane%i-%i-%i-%i.dat",argon,ibutane,temperature,pressure);
	}
        else if (argon > 0 && co2 > 0)
	{
	   sprintf(name,"ar_co2%i-%i-%i-%i.dat",argon,co2,temperature,pressure);
	}
        else if (helium > 0 && ibutane > 0)
	{
	   sprintf(name,"he_ibutane%i-%i-%i-%i.dat",helium,ibutane,temperature,pressure);
	} else {

	    Error("printGas()","Unknown gas mixture!");
            exit(1);
	}

	if(fNameGasIn.CompareTo("")==0)fNameGasIn=name;

	Char_t buffer[2048];
	sprintf(buffer,"*****************GAS************************\n");  putOut(buffer);
	sprintf(buffer,"&gas\n");                                          putOut(buffer);
	if (argon > 0 && ibutane > 0)
	{
	   sprintf(buffer,"gas-id \"ar/iso-butane %i/%i\"\n"
		   ,argon,ibutane);                                        putOut(buffer);
	}
	else if (argon > 0 && co2 > 0)
	{
	   sprintf(buffer,"gas-id \"ar/co2 %i/%i\"\n"
		   ,argon,co2);                                            putOut(buffer);
	}
	else if (helium > 0 && ibutane > 0)
	{
	   sprintf(buffer,"gas-id \"he/iso-butane %i/%i\"\n"
		   ,helium,ibutane);                                       putOut(buffer);
	}
	sprintf(buffer,"global gas_file `%s`\n"
		,fNameGasIn.Data());                                       putOut(buffer);
	sprintf(buffer,"temperature %i\n"
		,temperature);                                             putOut(buffer);
	sprintf(buffer,"pressure %i\n"
		,pressure);                                                putOut(buffer);
	sprintf(buffer,"Call inquire_file(gas_file,exist)\n");             putOut(buffer);
	sprintf(buffer,"If exist Then\n");                                 putOut(buffer);
	sprintf(buffer,"Say \"Gas file exists, retrieving ...\"\n");       putOut(buffer);
	sprintf(buffer,"get {gas_file}\n");                                putOut(buffer);
	sprintf(buffer,"Else\n");                                          putOut(buffer);
	sprintf(buffer,"Say \"Gas file not found, generating ...\"\n");    putOut(buffer);
	if (argon > 0 && ibutane > 0)
	{
	   sprintf(buffer,"magboltz argon %i. isobutane %i. mobility %f\n"
		   ,argon,ibutane,mobility);                               putOut(buffer);
	   sprintf(buffer,"write dataset \"%s\" gasdata remark \"magboltz-ar%i-ibutane%i\"\n"
		   ,fNameGasIn.Data(),argon,ibutane);                      putOut(buffer);
	   sprintf(buffer,"Endif\n");                                      putOut(buffer);
	   sprintf(buffer,"heed argon %i. isobutane %i.\n"
		   ,argon,ibutane);                                        putOut(buffer);
	}
	else if (argon > 0 && co2 > 0)
	{
	   sprintf(buffer,"magboltz argon %i. carbon-dioxide %i. mobility %f\n"
		   ,argon,co2,mobility);                                   putOut(buffer);
	   sprintf(buffer,"write dataset \"%s\" gasdata remark \"magboltz-ar%i-co2%i\"\n"
		   ,fNameGasIn.Data(),argon,co2);                          putOut(buffer);
	   sprintf(buffer,"Endif\n");                                      putOut(buffer);
	   sprintf(buffer,"heed argon %i. carbon-dioxide %i.\n"
		   ,argon,co2);                                        putOut(buffer);
	}
	else if (helium > 0 && ibutane > 0)
	{
	   sprintf(buffer,"magboltz helium-4 %i. isobutane %i. mobility %f\n"
		   ,helium,ibutane,mobility);                              putOut(buffer);
	   sprintf(buffer,"write dataset \"%s\" gasdata remark \"magboltz-he%i-ibutane%i\"\n"
		   ,fNameGasIn.Data(),helium,ibutane);                     putOut(buffer);
	   sprintf(buffer,"Endif\n");                                      putOut(buffer);
	   sprintf(buffer,"heed helium-4 %i. isobutane %i.\n"
		   ,helium,ibutane);                                       putOut(buffer);
	}

	sprintf(buffer,"\n");                                              putOut(buffer);
    }
}
void HMdcGarMacroMaker::printDrift()
{
    // Print the Drift section of the macro
    if(printdrift)
    {
	Char_t buffer[2048];
	sprintf(buffer,"*****************DRIFT**********************\n");  putOut(buffer);
	sprintf(buffer,"&drift\n");                                        putOut(buffer);
	if(!cathode_foils)
	{
	sprintf(buffer,"SEL %i\n"
		,cwire[mdc]);                                              putOut(buffer);
	}
        if(cathode_foils)
	{
	sprintf(buffer,"SEL %i\n"
		,cwire_foil[mdc]);                                              putOut(buffer);
	}

	if(postscript)
	{
	    if(mdc==0){sprintf(buffer,"area -0.32 -0.27 0.32 0.27\n");     putOut(buffer);}
	    if(mdc==1){sprintf(buffer,"area -0.32 -0.28 0.32 0.28\n");     putOut(buffer);}
	    if(mdc==2){sprintf(buffer,"area -0.62 -0.42 0.62 0.42\n");     putOut(buffer);}
	    if(mdc==3){sprintf(buffer,"area -0.82 -0.62 0.82 0.62\n");     putOut(buffer);}
	    sprintf(buffer,"*-------------------------------------------\n");  putOut(buffer);
	    sprintf(buffer,"plot  contour VD N 50 NOLABEL\n");             putOut(buffer);
	    sprintf(buffer,"plot  surface VD \n");                         putOut(buffer);
	    sprintf(buffer,"xt-plot\n");                                   putOut(buffer);
	    if(writeData)
	    {
		sprintf(buffer,"xt-plot DATASET \"xtmdc%i.dat\" REMARK \"xt\" \n",
			mdc);                                              putOut(buffer);
	    }
	    sprintf(buffer,"DRIFT WIRES ANGLES 0 360 LINES %i ISOCHRONES= %5.3f\n"
		    ,nLines,isochrones);                                   putOut(buffer);
	    if(writeData)
	    {
		sprintf(buffer,"WRITE-ISOCHRONES DATASET \"VDmdc%i.dat\" contVD remark \"isochrones mdc%i\" \n",
			mdc,mdc);                                          putOut(buffer);
	    }
	    sprintf(buffer,"*************Driftvelocity vs E/P***********\n");  putOut(buffer);
	    sprintf(buffer,"*-------------------------------------------\n");  putOut(buffer);
	    sprintf(buffer,"Call get_gas_data(p,t,id)\n");                     putOut(buffer);
	    sprintf(buffer,"Call get_E/p_table(ep)\n");                        putOut(buffer);
	    sprintf(buffer,"Call drift_velocity(0,0,ep*p,drift)\n");           putOut(buffer);
	    sprintf(buffer,"!opt log-x\n");                                    putOut(buffer);
	    sprintf(buffer,"Call plot_graph(ep,drift,`E/p [kV/cm bar]`,`Drift velocity [cm/microsec]`,`Drift velocity vs E/p`)\n"); putOut(buffer);
	    sprintf(buffer,"Call plot_markers(ep,drift,`function-1`)\n");      putOut(buffer);
	    sprintf(buffer,"Call plot_comment(`up-left`,`Magboltz: `/id)\n");  putOut(buffer);
	    sprintf(buffer,"Call plot_end \n");                                putOut(buffer);
	    sprintf(buffer,"!opt linear-x \n");                                putOut(buffer);
	    sprintf(buffer,"*-------------------------------------------\n");  putOut(buffer);
	}
	sprintf(buffer,"\n");                                              putOut(buffer);
    }
}
void HMdcGarMacroMaker::printSignal()
{
    // Print the Signal section of the macro
    if(printsignal)
    {
	if(fNameSignalOut.CompareTo("")==0)
	{
	    Char_t nameout[300];
            sprintf(nameout,"/tmp/s%i-mdc%i.txt",(Int_t)angleDeg,mdc);
	    fNameSignalOut=nameout;
	}
	Char_t buffer[2048];
	sprintf(buffer,"*****************SIGNAL*********************\n");  putOut(buffer);
	sprintf(buffer,"&signal\n");                                       putOut(buffer);
	sprintf(buffer,"*Track starting from left side\n");                putOut(buffer);
	sprintf(buffer,"area %5.2f %5.2f %5.2f %5.2f\n",
		area[mdc][0],area[mdc][1],area[mdc][2],area[mdc][3]);      putOut(buffer);
	if(!cathode_foils)
	{
	sprintf(buffer,"SELECT %i\n"
		,cwire[mdc]);
	                                                                   putOut(buffer);
	}
	if(cathode_foils)
	{
	sprintf(buffer,"SELECT %i\n"
		,cwire_foil[mdc]);
	                                                                   putOut(buffer);
	}
	sprintf(buffer,"AVALANCHE fixed %i\n"
		,avalanche);                                               putOut(buffer);
	sprintf(buffer,"INTEGRATION-PARAMETERS  MONTE-CARLO-COLLISIONS %i M-C-DIST-INT %f MAX-STEP %f INT-ACC 1.e-10 PROJECTED TRAP-RADIUS %f\n"
		,collisions,mc_dist[mdc],maxstep[mdc],trap_radius);        putOut(buffer);
	if(!printclusters)
	{
	    sprintf(buffer,"OPTIONS NOCLUSTER-PLOT NOCLUSTER-PRINT\n");    putOut(buffer);
	}
        sprintf(buffer,"****************Loop over distance**********\n");  putOut(buffer);
        sprintf(buffer,"For j From %i To %i Do\n"
		,minLoop[mdc][angleStep]+1
		,maxLoop[mdc][angleStep]);                                 putOut(buffer);
        sprintf(buffer,"*-------------------------------------------\n");  putOut(buffer);
	sprintf(buffer,"Global r= 0.01*j\n");                              putOut(buffer);
	sprintf(buffer,"Global alphaDEG=%3.1f\n"
		,angleDeg);                                                putOut(buffer);
        sprintf(buffer,"Global alphaRAD=pi/180.*alphaDEG\n");              putOut(buffer);
	sprintf(buffer,"Global dx=0.1\n");                                 putOut(buffer);
	sprintf(buffer,"Global dy=dx*tan(pi/2.+alphaRAD)\n");              putOut(buffer);
	sprintf(buffer,"Global x1=r*cos(alphaRAD)\n");                     putOut(buffer);
	sprintf(buffer,"Global y1=r*sin(alphaRAD)\n");                     putOut(buffer);
	sprintf(buffer,"Global x=(%5.2f-(y1-x1*tan(pi/2.+alphaRAD)))/tan(pi/2.+alphaRAD)\n"
		,dc_s[mdc]);                                               putOut(buffer);
        sprintf(buffer,"Global y= %5.2f\n"
		,dc_s[mdc]);                                               putOut(buffer);
	sprintf(buffer,"TRACK FROM {x} {y} DIRECTION {dx} {dy}  RANGE %f HEED %s energy %5.2f GeV\n"
		,range,particle.Data(),energy);                            putOut(buffer);
        sprintf(buffer,"*-------------------------------------------\n");  putOut(buffer);
	sprintf(buffer,"TIME-WINDOW %3.1f %5.3f %i\n"
		,time_low[mdc],timebin,nTimeBin);                          putOut(buffer);
        sprintf(buffer,"****************Loop over signal************\n");  putOut(buffer);
	sprintf(buffer,"For i From 1 To %i  Do\n"
		,nSignals);                                                putOut(buffer);

      	if(doRungeKutta){
	    sprintf(buffer,"SIGNAL AVALANCHE NOELECTRON-PULSE ION-TAIL RUNGE-KUTTA-DRIFT-LINES\n");
	}else{
	    sprintf(buffer,"SIGNAL AVALANCHE NOELECTRON-PULSE ION-TAIL MONTE-CARLO-DRIFT-LINES\n");
	}
	putOut(buffer);
	sprintf(buffer,"WRITE-SIGNALS DATASET \"%s\" REMARK \"p {j} n {i}\" UNITS NANO-SECOND\n",
		fNameSignalOut.Data());                                    putOut(buffer);
	if(postscript)
	{
	    if(!cathode_foils)
	    {
		sprintf(buffer,"PLOT-SIGNALS  TIME-WINDOW %3.1f %3.1f WIRE %i\n"
			,time_low[mdc],time_up[mdc],cwire[mdc]);
		putOut(buffer);
	    }
            if(cathode_foils)
	    {
		sprintf(buffer,"PLOT-SIGNALS  TIME-WINDOW %3.1f %3.1f WIRE %i\n"
			,time_low[mdc],time_up[mdc],cwire_foil[mdc]);
		putOut(buffer);
	    }

	}
	sprintf(buffer,"enddo\n");                                         putOut(buffer);
	sprintf(buffer,"****************End Loop over signal*********\n"); putOut(buffer);
	sprintf(buffer,"enddo\n");                                         putOut(buffer);
	sprintf(buffer,"****************End Loop over distance*******\n"); putOut(buffer);
	sprintf(buffer,"\n");                                              putOut(buffer);
    }
}
void HMdcGarMacroMaker::printMetaTrailer()
{
    // Print the Metafiel Trailer of the macro
    if(postscript)
    {
	Char_t buffer[2048];
	sprintf(buffer,"*****************TRAILER*********************\n"); putOut(buffer);
	sprintf(buffer,"!deact meta\n");                                   putOut(buffer);
	sprintf(buffer,"!close meta\n");                                   putOut(buffer);
	sprintf(buffer,"!del meta\n");                                     putOut(buffer);
	sprintf(buffer,"\n");                                              putOut(buffer);
    }
}
void HMdcGarMacroMaker::print3D()
{
    // Print some 3d plot of the drift cell
    if(print3d)
    {
	Char_t buffer[2048];
	sprintf(buffer,"*****************3D*************************\n");                                             putOut(buffer);
	sprintf(buffer,"*-------------------------------------------\n");                                             putOut(buffer);
	sprintf(buffer,"* cathods\n");                                                                                putOut(buffer);
	sprintf(buffer,"solids\n");                                                                                   putOut(buffer);
	sprintf(buffer,"For x From -%5.3f Step %5.3f To %5.3f Do\n"
		,cathodx[mdc],cathodpitch[mdc],ncathod[mdc]*cathodpitch[mdc]);                                        putOut(buffer);
        sprintf(buffer,"cylinder CENTRE {x}  %5.2f 0 RADIUS %5.4f HALF-LENGTH 1 DIRECTION 0 0 1 conductor-1\n"
		, 3*dc_s[mdc],0.5*cathodth[mdc]);                                                                     putOut(buffer);
        sprintf(buffer,"cylinder CENTRE {x}  %5.2f 0 RADIUS %5.4f HALF-LENGTH 1 DIRECTION 0 0 1 conductor-1\n"
		, 1*dc_s[mdc],0.5*cathodth[mdc]);                                                                     putOut(buffer);
        sprintf(buffer,"cylinder CENTRE {x}  %5.2f 0 RADIUS %5.4f HALF-LENGTH 1 DIRECTION 0 0 1 conductor-1\n"
		,-1*dc_s[mdc],0.5*cathodth[mdc]);                                                                     putOut(buffer);
        sprintf(buffer,"Enddo\n");                                                                                    putOut(buffer);
	sprintf(buffer,"*-------------------------------------------\n");                                             putOut(buffer);
	sprintf(buffer,"* potential ordered  -20,-40\n");                                                             putOut(buffer);
	sprintf(buffer,"solids\n");                                                                                   putOut(buffer);
	sprintf(buffer,"For x From -%5.3f Step %5.3f To %5.3f Do\n"
		,fieldx[mdc],fieldpitch[mdc],nfield[mdc]*fieldpitch[mdc]);                                            putOut(buffer);
        sprintf(buffer,"cylinder CENTRE {x}  %5.2f 0 RADIUS %5.4f HALF-LENGTH 1 DIRECTION 1 0 -%f conductor-2\n"
		, 2*dc_s[mdc],0.5*fieldth[mdc],tan((90-20)*TMath::Pi()/180));                                         putOut(buffer);
        sprintf(buffer,"cylinder CENTRE {x}  %5.2f 0 RADIUS %5.4f HALF-LENGTH 1 DIRECTION 1 0 -%f conductor-2\n"
		, 0*dc_s[mdc],0.5*fieldth[mdc],tan((90-40)*TMath::Pi()/180));                                         putOut(buffer);
        sprintf(buffer,"Enddo\n");                                                                                    putOut(buffer);
	sprintf(buffer,"*-------------------------------------------\n");                                             putOut(buffer);
	sprintf(buffer,"*sense ordered  -20,-40\n");                                                                  putOut(buffer);
	sprintf(buffer,"For x From -%5.3f Step %5.3f To %5.3f Do\n"
		,sensex[mdc],sensepitch[mdc],nsense[mdc]*sensepitch[mdc]);                                            putOut(buffer);
        sprintf(buffer,"cylinder CENTRE {x}  %5.2f 0 RADIUS %5.4f HALF-LENGTH 1 DIRECTION 1 0 -%f conductor-2\n"
		, 2*dc_s[mdc],0.5*senseth[mdc],tan((90-20)*TMath::Pi()/180));                                         putOut(buffer);
        sprintf(buffer,"cylinder CENTRE {x}  %5.2f 0 RADIUS %5.4f HALF-LENGTH 1 DIRECTION 1 0 -%f conductor-2\n"
		, 0*dc_s[mdc],0.5*senseth[mdc],tan((90-40)*TMath::Pi()/180));                                         putOut(buffer);
        sprintf(buffer,"Enddo\n");                                                                                    putOut(buffer);
        sprintf(buffer,"\n");                                                                                         putOut(buffer);
    }
}
 hmdcgarmacromaker.cc:1
 hmdcgarmacromaker.cc:2
 hmdcgarmacromaker.cc:3
 hmdcgarmacromaker.cc:4
 hmdcgarmacromaker.cc:5
 hmdcgarmacromaker.cc:6
 hmdcgarmacromaker.cc:7
 hmdcgarmacromaker.cc:8
 hmdcgarmacromaker.cc:9
 hmdcgarmacromaker.cc:10
 hmdcgarmacromaker.cc:11
 hmdcgarmacromaker.cc:12
 hmdcgarmacromaker.cc:13
 hmdcgarmacromaker.cc:14
 hmdcgarmacromaker.cc:15
 hmdcgarmacromaker.cc:16
 hmdcgarmacromaker.cc:17
 hmdcgarmacromaker.cc:18
 hmdcgarmacromaker.cc:19
 hmdcgarmacromaker.cc:20
 hmdcgarmacromaker.cc:21
 hmdcgarmacromaker.cc:22
 hmdcgarmacromaker.cc:23
 hmdcgarmacromaker.cc:24
 hmdcgarmacromaker.cc:25
 hmdcgarmacromaker.cc:26
 hmdcgarmacromaker.cc:27
 hmdcgarmacromaker.cc:28
 hmdcgarmacromaker.cc:29
 hmdcgarmacromaker.cc:30
 hmdcgarmacromaker.cc:31
 hmdcgarmacromaker.cc:32
 hmdcgarmacromaker.cc:33
 hmdcgarmacromaker.cc:34
 hmdcgarmacromaker.cc:35
 hmdcgarmacromaker.cc:36
 hmdcgarmacromaker.cc:37
 hmdcgarmacromaker.cc:38
 hmdcgarmacromaker.cc:39
 hmdcgarmacromaker.cc:40
 hmdcgarmacromaker.cc:41
 hmdcgarmacromaker.cc:42
 hmdcgarmacromaker.cc:43
 hmdcgarmacromaker.cc:44
 hmdcgarmacromaker.cc:45
 hmdcgarmacromaker.cc:46
 hmdcgarmacromaker.cc:47
 hmdcgarmacromaker.cc:48
 hmdcgarmacromaker.cc:49
 hmdcgarmacromaker.cc:50
 hmdcgarmacromaker.cc:51
 hmdcgarmacromaker.cc:52
 hmdcgarmacromaker.cc:53
 hmdcgarmacromaker.cc:54
 hmdcgarmacromaker.cc:55
 hmdcgarmacromaker.cc:56
 hmdcgarmacromaker.cc:57
 hmdcgarmacromaker.cc:58
 hmdcgarmacromaker.cc:59
 hmdcgarmacromaker.cc:60
 hmdcgarmacromaker.cc:61
 hmdcgarmacromaker.cc:62
 hmdcgarmacromaker.cc:63
 hmdcgarmacromaker.cc:64
 hmdcgarmacromaker.cc:65
 hmdcgarmacromaker.cc:66
 hmdcgarmacromaker.cc:67
 hmdcgarmacromaker.cc:68
 hmdcgarmacromaker.cc:69
 hmdcgarmacromaker.cc:70
 hmdcgarmacromaker.cc:71
 hmdcgarmacromaker.cc:72
 hmdcgarmacromaker.cc:73
 hmdcgarmacromaker.cc:74
 hmdcgarmacromaker.cc:75
 hmdcgarmacromaker.cc:76
 hmdcgarmacromaker.cc:77
 hmdcgarmacromaker.cc:78
 hmdcgarmacromaker.cc:79
 hmdcgarmacromaker.cc:80
 hmdcgarmacromaker.cc:81
 hmdcgarmacromaker.cc:82
 hmdcgarmacromaker.cc:83
 hmdcgarmacromaker.cc:84
 hmdcgarmacromaker.cc:85
 hmdcgarmacromaker.cc:86
 hmdcgarmacromaker.cc:87
 hmdcgarmacromaker.cc:88
 hmdcgarmacromaker.cc:89
 hmdcgarmacromaker.cc:90
 hmdcgarmacromaker.cc:91
 hmdcgarmacromaker.cc:92
 hmdcgarmacromaker.cc:93
 hmdcgarmacromaker.cc:94
 hmdcgarmacromaker.cc:95
 hmdcgarmacromaker.cc:96
 hmdcgarmacromaker.cc:97
 hmdcgarmacromaker.cc:98
 hmdcgarmacromaker.cc:99
 hmdcgarmacromaker.cc:100
 hmdcgarmacromaker.cc:101
 hmdcgarmacromaker.cc:102
 hmdcgarmacromaker.cc:103
 hmdcgarmacromaker.cc:104
 hmdcgarmacromaker.cc:105
 hmdcgarmacromaker.cc:106
 hmdcgarmacromaker.cc:107
 hmdcgarmacromaker.cc:108
 hmdcgarmacromaker.cc:109
 hmdcgarmacromaker.cc:110
 hmdcgarmacromaker.cc:111
 hmdcgarmacromaker.cc:112
 hmdcgarmacromaker.cc:113
 hmdcgarmacromaker.cc:114
 hmdcgarmacromaker.cc:115
 hmdcgarmacromaker.cc:116
 hmdcgarmacromaker.cc:117
 hmdcgarmacromaker.cc:118
 hmdcgarmacromaker.cc:119
 hmdcgarmacromaker.cc:120
 hmdcgarmacromaker.cc:121
 hmdcgarmacromaker.cc:122
 hmdcgarmacromaker.cc:123
 hmdcgarmacromaker.cc:124
 hmdcgarmacromaker.cc:125
 hmdcgarmacromaker.cc:126
 hmdcgarmacromaker.cc:127
 hmdcgarmacromaker.cc:128
 hmdcgarmacromaker.cc:129
 hmdcgarmacromaker.cc:130
 hmdcgarmacromaker.cc:131
 hmdcgarmacromaker.cc:132
 hmdcgarmacromaker.cc:133
 hmdcgarmacromaker.cc:134
 hmdcgarmacromaker.cc:135
 hmdcgarmacromaker.cc:136
 hmdcgarmacromaker.cc:137
 hmdcgarmacromaker.cc:138
 hmdcgarmacromaker.cc:139
 hmdcgarmacromaker.cc:140
 hmdcgarmacromaker.cc:141
 hmdcgarmacromaker.cc:142
 hmdcgarmacromaker.cc:143
 hmdcgarmacromaker.cc:144
 hmdcgarmacromaker.cc:145
 hmdcgarmacromaker.cc:146
 hmdcgarmacromaker.cc:147
 hmdcgarmacromaker.cc:148
 hmdcgarmacromaker.cc:149
 hmdcgarmacromaker.cc:150
 hmdcgarmacromaker.cc:151
 hmdcgarmacromaker.cc:152
 hmdcgarmacromaker.cc:153
 hmdcgarmacromaker.cc:154
 hmdcgarmacromaker.cc:155
 hmdcgarmacromaker.cc:156
 hmdcgarmacromaker.cc:157
 hmdcgarmacromaker.cc:158
 hmdcgarmacromaker.cc:159
 hmdcgarmacromaker.cc:160
 hmdcgarmacromaker.cc:161
 hmdcgarmacromaker.cc:162
 hmdcgarmacromaker.cc:163
 hmdcgarmacromaker.cc:164
 hmdcgarmacromaker.cc:165
 hmdcgarmacromaker.cc:166
 hmdcgarmacromaker.cc:167
 hmdcgarmacromaker.cc:168
 hmdcgarmacromaker.cc:169
 hmdcgarmacromaker.cc:170
 hmdcgarmacromaker.cc:171
 hmdcgarmacromaker.cc:172
 hmdcgarmacromaker.cc:173
 hmdcgarmacromaker.cc:174
 hmdcgarmacromaker.cc:175
 hmdcgarmacromaker.cc:176
 hmdcgarmacromaker.cc:177
 hmdcgarmacromaker.cc:178
 hmdcgarmacromaker.cc:179
 hmdcgarmacromaker.cc:180
 hmdcgarmacromaker.cc:181
 hmdcgarmacromaker.cc:182
 hmdcgarmacromaker.cc:183
 hmdcgarmacromaker.cc:184
 hmdcgarmacromaker.cc:185
 hmdcgarmacromaker.cc:186
 hmdcgarmacromaker.cc:187
 hmdcgarmacromaker.cc:188
 hmdcgarmacromaker.cc:189
 hmdcgarmacromaker.cc:190
 hmdcgarmacromaker.cc:191
 hmdcgarmacromaker.cc:192
 hmdcgarmacromaker.cc:193
 hmdcgarmacromaker.cc:194
 hmdcgarmacromaker.cc:195
 hmdcgarmacromaker.cc:196
 hmdcgarmacromaker.cc:197
 hmdcgarmacromaker.cc:198
 hmdcgarmacromaker.cc:199
 hmdcgarmacromaker.cc:200
 hmdcgarmacromaker.cc:201
 hmdcgarmacromaker.cc:202
 hmdcgarmacromaker.cc:203
 hmdcgarmacromaker.cc:204
 hmdcgarmacromaker.cc:205
 hmdcgarmacromaker.cc:206
 hmdcgarmacromaker.cc:207
 hmdcgarmacromaker.cc:208
 hmdcgarmacromaker.cc:209
 hmdcgarmacromaker.cc:210
 hmdcgarmacromaker.cc:211
 hmdcgarmacromaker.cc:212
 hmdcgarmacromaker.cc:213
 hmdcgarmacromaker.cc:214
 hmdcgarmacromaker.cc:215
 hmdcgarmacromaker.cc:216
 hmdcgarmacromaker.cc:217
 hmdcgarmacromaker.cc:218
 hmdcgarmacromaker.cc:219
 hmdcgarmacromaker.cc:220
 hmdcgarmacromaker.cc:221
 hmdcgarmacromaker.cc:222
 hmdcgarmacromaker.cc:223
 hmdcgarmacromaker.cc:224
 hmdcgarmacromaker.cc:225
 hmdcgarmacromaker.cc:226
 hmdcgarmacromaker.cc:227
 hmdcgarmacromaker.cc:228
 hmdcgarmacromaker.cc:229
 hmdcgarmacromaker.cc:230
 hmdcgarmacromaker.cc:231
 hmdcgarmacromaker.cc:232
 hmdcgarmacromaker.cc:233
 hmdcgarmacromaker.cc:234
 hmdcgarmacromaker.cc:235
 hmdcgarmacromaker.cc:236
 hmdcgarmacromaker.cc:237
 hmdcgarmacromaker.cc:238
 hmdcgarmacromaker.cc:239
 hmdcgarmacromaker.cc:240
 hmdcgarmacromaker.cc:241
 hmdcgarmacromaker.cc:242
 hmdcgarmacromaker.cc:243
 hmdcgarmacromaker.cc:244
 hmdcgarmacromaker.cc:245
 hmdcgarmacromaker.cc:246
 hmdcgarmacromaker.cc:247
 hmdcgarmacromaker.cc:248
 hmdcgarmacromaker.cc:249
 hmdcgarmacromaker.cc:250
 hmdcgarmacromaker.cc:251
 hmdcgarmacromaker.cc:252
 hmdcgarmacromaker.cc:253
 hmdcgarmacromaker.cc:254
 hmdcgarmacromaker.cc:255
 hmdcgarmacromaker.cc:256
 hmdcgarmacromaker.cc:257
 hmdcgarmacromaker.cc:258
 hmdcgarmacromaker.cc:259
 hmdcgarmacromaker.cc:260
 hmdcgarmacromaker.cc:261
 hmdcgarmacromaker.cc:262
 hmdcgarmacromaker.cc:263
 hmdcgarmacromaker.cc:264
 hmdcgarmacromaker.cc:265
 hmdcgarmacromaker.cc:266
 hmdcgarmacromaker.cc:267
 hmdcgarmacromaker.cc:268
 hmdcgarmacromaker.cc:269
 hmdcgarmacromaker.cc:270
 hmdcgarmacromaker.cc:271
 hmdcgarmacromaker.cc:272
 hmdcgarmacromaker.cc:273
 hmdcgarmacromaker.cc:274
 hmdcgarmacromaker.cc:275
 hmdcgarmacromaker.cc:276
 hmdcgarmacromaker.cc:277
 hmdcgarmacromaker.cc:278
 hmdcgarmacromaker.cc:279
 hmdcgarmacromaker.cc:280
 hmdcgarmacromaker.cc:281
 hmdcgarmacromaker.cc:282
 hmdcgarmacromaker.cc:283
 hmdcgarmacromaker.cc:284
 hmdcgarmacromaker.cc:285
 hmdcgarmacromaker.cc:286
 hmdcgarmacromaker.cc:287
 hmdcgarmacromaker.cc:288
 hmdcgarmacromaker.cc:289
 hmdcgarmacromaker.cc:290
 hmdcgarmacromaker.cc:291
 hmdcgarmacromaker.cc:292
 hmdcgarmacromaker.cc:293
 hmdcgarmacromaker.cc:294
 hmdcgarmacromaker.cc:295
 hmdcgarmacromaker.cc:296
 hmdcgarmacromaker.cc:297
 hmdcgarmacromaker.cc:298
 hmdcgarmacromaker.cc:299
 hmdcgarmacromaker.cc:300
 hmdcgarmacromaker.cc:301
 hmdcgarmacromaker.cc:302
 hmdcgarmacromaker.cc:303
 hmdcgarmacromaker.cc:304
 hmdcgarmacromaker.cc:305
 hmdcgarmacromaker.cc:306
 hmdcgarmacromaker.cc:307
 hmdcgarmacromaker.cc:308
 hmdcgarmacromaker.cc:309
 hmdcgarmacromaker.cc:310
 hmdcgarmacromaker.cc:311
 hmdcgarmacromaker.cc:312
 hmdcgarmacromaker.cc:313
 hmdcgarmacromaker.cc:314
 hmdcgarmacromaker.cc:315
 hmdcgarmacromaker.cc:316
 hmdcgarmacromaker.cc:317
 hmdcgarmacromaker.cc:318
 hmdcgarmacromaker.cc:319
 hmdcgarmacromaker.cc:320
 hmdcgarmacromaker.cc:321
 hmdcgarmacromaker.cc:322
 hmdcgarmacromaker.cc:323
 hmdcgarmacromaker.cc:324
 hmdcgarmacromaker.cc:325
 hmdcgarmacromaker.cc:326
 hmdcgarmacromaker.cc:327
 hmdcgarmacromaker.cc:328
 hmdcgarmacromaker.cc:329
 hmdcgarmacromaker.cc:330
 hmdcgarmacromaker.cc:331
 hmdcgarmacromaker.cc:332
 hmdcgarmacromaker.cc:333
 hmdcgarmacromaker.cc:334
 hmdcgarmacromaker.cc:335
 hmdcgarmacromaker.cc:336
 hmdcgarmacromaker.cc:337
 hmdcgarmacromaker.cc:338
 hmdcgarmacromaker.cc:339
 hmdcgarmacromaker.cc:340
 hmdcgarmacromaker.cc:341
 hmdcgarmacromaker.cc:342
 hmdcgarmacromaker.cc:343
 hmdcgarmacromaker.cc:344
 hmdcgarmacromaker.cc:345
 hmdcgarmacromaker.cc:346
 hmdcgarmacromaker.cc:347
 hmdcgarmacromaker.cc:348
 hmdcgarmacromaker.cc:349
 hmdcgarmacromaker.cc:350
 hmdcgarmacromaker.cc:351
 hmdcgarmacromaker.cc:352
 hmdcgarmacromaker.cc:353
 hmdcgarmacromaker.cc:354
 hmdcgarmacromaker.cc:355
 hmdcgarmacromaker.cc:356
 hmdcgarmacromaker.cc:357
 hmdcgarmacromaker.cc:358
 hmdcgarmacromaker.cc:359
 hmdcgarmacromaker.cc:360
 hmdcgarmacromaker.cc:361
 hmdcgarmacromaker.cc:362
 hmdcgarmacromaker.cc:363
 hmdcgarmacromaker.cc:364
 hmdcgarmacromaker.cc:365
 hmdcgarmacromaker.cc:366
 hmdcgarmacromaker.cc:367
 hmdcgarmacromaker.cc:368
 hmdcgarmacromaker.cc:369
 hmdcgarmacromaker.cc:370
 hmdcgarmacromaker.cc:371
 hmdcgarmacromaker.cc:372
 hmdcgarmacromaker.cc:373
 hmdcgarmacromaker.cc:374
 hmdcgarmacromaker.cc:375
 hmdcgarmacromaker.cc:376
 hmdcgarmacromaker.cc:377
 hmdcgarmacromaker.cc:378
 hmdcgarmacromaker.cc:379
 hmdcgarmacromaker.cc:380
 hmdcgarmacromaker.cc:381
 hmdcgarmacromaker.cc:382
 hmdcgarmacromaker.cc:383
 hmdcgarmacromaker.cc:384
 hmdcgarmacromaker.cc:385
 hmdcgarmacromaker.cc:386
 hmdcgarmacromaker.cc:387
 hmdcgarmacromaker.cc:388
 hmdcgarmacromaker.cc:389
 hmdcgarmacromaker.cc:390
 hmdcgarmacromaker.cc:391
 hmdcgarmacromaker.cc:392
 hmdcgarmacromaker.cc:393
 hmdcgarmacromaker.cc:394
 hmdcgarmacromaker.cc:395
 hmdcgarmacromaker.cc:396
 hmdcgarmacromaker.cc:397
 hmdcgarmacromaker.cc:398
 hmdcgarmacromaker.cc:399
 hmdcgarmacromaker.cc:400
 hmdcgarmacromaker.cc:401
 hmdcgarmacromaker.cc:402
 hmdcgarmacromaker.cc:403
 hmdcgarmacromaker.cc:404
 hmdcgarmacromaker.cc:405
 hmdcgarmacromaker.cc:406
 hmdcgarmacromaker.cc:407
 hmdcgarmacromaker.cc:408
 hmdcgarmacromaker.cc:409
 hmdcgarmacromaker.cc:410
 hmdcgarmacromaker.cc:411
 hmdcgarmacromaker.cc:412
 hmdcgarmacromaker.cc:413
 hmdcgarmacromaker.cc:414
 hmdcgarmacromaker.cc:415
 hmdcgarmacromaker.cc:416
 hmdcgarmacromaker.cc:417
 hmdcgarmacromaker.cc:418
 hmdcgarmacromaker.cc:419
 hmdcgarmacromaker.cc:420
 hmdcgarmacromaker.cc:421
 hmdcgarmacromaker.cc:422
 hmdcgarmacromaker.cc:423
 hmdcgarmacromaker.cc:424
 hmdcgarmacromaker.cc:425
 hmdcgarmacromaker.cc:426
 hmdcgarmacromaker.cc:427
 hmdcgarmacromaker.cc:428
 hmdcgarmacromaker.cc:429
 hmdcgarmacromaker.cc:430
 hmdcgarmacromaker.cc:431
 hmdcgarmacromaker.cc:432
 hmdcgarmacromaker.cc:433
 hmdcgarmacromaker.cc:434
 hmdcgarmacromaker.cc:435
 hmdcgarmacromaker.cc:436
 hmdcgarmacromaker.cc:437
 hmdcgarmacromaker.cc:438
 hmdcgarmacromaker.cc:439
 hmdcgarmacromaker.cc:440
 hmdcgarmacromaker.cc:441
 hmdcgarmacromaker.cc:442
 hmdcgarmacromaker.cc:443
 hmdcgarmacromaker.cc:444
 hmdcgarmacromaker.cc:445
 hmdcgarmacromaker.cc:446
 hmdcgarmacromaker.cc:447
 hmdcgarmacromaker.cc:448
 hmdcgarmacromaker.cc:449
 hmdcgarmacromaker.cc:450
 hmdcgarmacromaker.cc:451
 hmdcgarmacromaker.cc:452
 hmdcgarmacromaker.cc:453
 hmdcgarmacromaker.cc:454
 hmdcgarmacromaker.cc:455
 hmdcgarmacromaker.cc:456
 hmdcgarmacromaker.cc:457
 hmdcgarmacromaker.cc:458
 hmdcgarmacromaker.cc:459
 hmdcgarmacromaker.cc:460
 hmdcgarmacromaker.cc:461
 hmdcgarmacromaker.cc:462
 hmdcgarmacromaker.cc:463
 hmdcgarmacromaker.cc:464
 hmdcgarmacromaker.cc:465
 hmdcgarmacromaker.cc:466
 hmdcgarmacromaker.cc:467
 hmdcgarmacromaker.cc:468
 hmdcgarmacromaker.cc:469
 hmdcgarmacromaker.cc:470
 hmdcgarmacromaker.cc:471
 hmdcgarmacromaker.cc:472
 hmdcgarmacromaker.cc:473
 hmdcgarmacromaker.cc:474
 hmdcgarmacromaker.cc:475
 hmdcgarmacromaker.cc:476
 hmdcgarmacromaker.cc:477
 hmdcgarmacromaker.cc:478
 hmdcgarmacromaker.cc:479
 hmdcgarmacromaker.cc:480
 hmdcgarmacromaker.cc:481
 hmdcgarmacromaker.cc:482
 hmdcgarmacromaker.cc:483
 hmdcgarmacromaker.cc:484
 hmdcgarmacromaker.cc:485
 hmdcgarmacromaker.cc:486
 hmdcgarmacromaker.cc:487
 hmdcgarmacromaker.cc:488
 hmdcgarmacromaker.cc:489
 hmdcgarmacromaker.cc:490
 hmdcgarmacromaker.cc:491
 hmdcgarmacromaker.cc:492
 hmdcgarmacromaker.cc:493
 hmdcgarmacromaker.cc:494
 hmdcgarmacromaker.cc:495
 hmdcgarmacromaker.cc:496
 hmdcgarmacromaker.cc:497
 hmdcgarmacromaker.cc:498
 hmdcgarmacromaker.cc:499
 hmdcgarmacromaker.cc:500
 hmdcgarmacromaker.cc:501
 hmdcgarmacromaker.cc:502
 hmdcgarmacromaker.cc:503
 hmdcgarmacromaker.cc:504
 hmdcgarmacromaker.cc:505
 hmdcgarmacromaker.cc:506
 hmdcgarmacromaker.cc:507
 hmdcgarmacromaker.cc:508
 hmdcgarmacromaker.cc:509
 hmdcgarmacromaker.cc:510
 hmdcgarmacromaker.cc:511
 hmdcgarmacromaker.cc:512
 hmdcgarmacromaker.cc:513
 hmdcgarmacromaker.cc:514
 hmdcgarmacromaker.cc:515
 hmdcgarmacromaker.cc:516
 hmdcgarmacromaker.cc:517
 hmdcgarmacromaker.cc:518
 hmdcgarmacromaker.cc:519
 hmdcgarmacromaker.cc:520
 hmdcgarmacromaker.cc:521
 hmdcgarmacromaker.cc:522
 hmdcgarmacromaker.cc:523
 hmdcgarmacromaker.cc:524
 hmdcgarmacromaker.cc:525
 hmdcgarmacromaker.cc:526
 hmdcgarmacromaker.cc:527
 hmdcgarmacromaker.cc:528
 hmdcgarmacromaker.cc:529
 hmdcgarmacromaker.cc:530
 hmdcgarmacromaker.cc:531
 hmdcgarmacromaker.cc:532
 hmdcgarmacromaker.cc:533
 hmdcgarmacromaker.cc:534
 hmdcgarmacromaker.cc:535
 hmdcgarmacromaker.cc:536
 hmdcgarmacromaker.cc:537
 hmdcgarmacromaker.cc:538
 hmdcgarmacromaker.cc:539
 hmdcgarmacromaker.cc:540
 hmdcgarmacromaker.cc:541
 hmdcgarmacromaker.cc:542
 hmdcgarmacromaker.cc:543
 hmdcgarmacromaker.cc:544
 hmdcgarmacromaker.cc:545
 hmdcgarmacromaker.cc:546
 hmdcgarmacromaker.cc:547
 hmdcgarmacromaker.cc:548
 hmdcgarmacromaker.cc:549
 hmdcgarmacromaker.cc:550
 hmdcgarmacromaker.cc:551
 hmdcgarmacromaker.cc:552
 hmdcgarmacromaker.cc:553
 hmdcgarmacromaker.cc:554
 hmdcgarmacromaker.cc:555
 hmdcgarmacromaker.cc:556
 hmdcgarmacromaker.cc:557
 hmdcgarmacromaker.cc:558
 hmdcgarmacromaker.cc:559
 hmdcgarmacromaker.cc:560
 hmdcgarmacromaker.cc:561
 hmdcgarmacromaker.cc:562
 hmdcgarmacromaker.cc:563
 hmdcgarmacromaker.cc:564
 hmdcgarmacromaker.cc:565
 hmdcgarmacromaker.cc:566
 hmdcgarmacromaker.cc:567
 hmdcgarmacromaker.cc:568
 hmdcgarmacromaker.cc:569
 hmdcgarmacromaker.cc:570
 hmdcgarmacromaker.cc:571
 hmdcgarmacromaker.cc:572
 hmdcgarmacromaker.cc:573
 hmdcgarmacromaker.cc:574
 hmdcgarmacromaker.cc:575
 hmdcgarmacromaker.cc:576
 hmdcgarmacromaker.cc:577
 hmdcgarmacromaker.cc:578
 hmdcgarmacromaker.cc:579
 hmdcgarmacromaker.cc:580
 hmdcgarmacromaker.cc:581
 hmdcgarmacromaker.cc:582
 hmdcgarmacromaker.cc:583
 hmdcgarmacromaker.cc:584
 hmdcgarmacromaker.cc:585
 hmdcgarmacromaker.cc:586
 hmdcgarmacromaker.cc:587
 hmdcgarmacromaker.cc:588
 hmdcgarmacromaker.cc:589
 hmdcgarmacromaker.cc:590
 hmdcgarmacromaker.cc:591
 hmdcgarmacromaker.cc:592
 hmdcgarmacromaker.cc:593
 hmdcgarmacromaker.cc:594
 hmdcgarmacromaker.cc:595
 hmdcgarmacromaker.cc:596
 hmdcgarmacromaker.cc:597
 hmdcgarmacromaker.cc:598
 hmdcgarmacromaker.cc:599
 hmdcgarmacromaker.cc:600
 hmdcgarmacromaker.cc:601
 hmdcgarmacromaker.cc:602
 hmdcgarmacromaker.cc:603
 hmdcgarmacromaker.cc:604
 hmdcgarmacromaker.cc:605
 hmdcgarmacromaker.cc:606
 hmdcgarmacromaker.cc:607
 hmdcgarmacromaker.cc:608
 hmdcgarmacromaker.cc:609
 hmdcgarmacromaker.cc:610
 hmdcgarmacromaker.cc:611
 hmdcgarmacromaker.cc:612
 hmdcgarmacromaker.cc:613
 hmdcgarmacromaker.cc:614
 hmdcgarmacromaker.cc:615
 hmdcgarmacromaker.cc:616
 hmdcgarmacromaker.cc:617
 hmdcgarmacromaker.cc:618
 hmdcgarmacromaker.cc:619
 hmdcgarmacromaker.cc:620
 hmdcgarmacromaker.cc:621
 hmdcgarmacromaker.cc:622
 hmdcgarmacromaker.cc:623
 hmdcgarmacromaker.cc:624
 hmdcgarmacromaker.cc:625
 hmdcgarmacromaker.cc:626
 hmdcgarmacromaker.cc:627
 hmdcgarmacromaker.cc:628
 hmdcgarmacromaker.cc:629
 hmdcgarmacromaker.cc:630
 hmdcgarmacromaker.cc:631
 hmdcgarmacromaker.cc:632
 hmdcgarmacromaker.cc:633
 hmdcgarmacromaker.cc:634
 hmdcgarmacromaker.cc:635
 hmdcgarmacromaker.cc:636
 hmdcgarmacromaker.cc:637
 hmdcgarmacromaker.cc:638
 hmdcgarmacromaker.cc:639
 hmdcgarmacromaker.cc:640
 hmdcgarmacromaker.cc:641
 hmdcgarmacromaker.cc:642
 hmdcgarmacromaker.cc:643
 hmdcgarmacromaker.cc:644
 hmdcgarmacromaker.cc:645
 hmdcgarmacromaker.cc:646
 hmdcgarmacromaker.cc:647
 hmdcgarmacromaker.cc:648
 hmdcgarmacromaker.cc:649
 hmdcgarmacromaker.cc:650
 hmdcgarmacromaker.cc:651
 hmdcgarmacromaker.cc:652
 hmdcgarmacromaker.cc:653
 hmdcgarmacromaker.cc:654
 hmdcgarmacromaker.cc:655
 hmdcgarmacromaker.cc:656
 hmdcgarmacromaker.cc:657
 hmdcgarmacromaker.cc:658
 hmdcgarmacromaker.cc:659
 hmdcgarmacromaker.cc:660
 hmdcgarmacromaker.cc:661
 hmdcgarmacromaker.cc:662
 hmdcgarmacromaker.cc:663
 hmdcgarmacromaker.cc:664
 hmdcgarmacromaker.cc:665
 hmdcgarmacromaker.cc:666
 hmdcgarmacromaker.cc:667
 hmdcgarmacromaker.cc:668
 hmdcgarmacromaker.cc:669
 hmdcgarmacromaker.cc:670
 hmdcgarmacromaker.cc:671
 hmdcgarmacromaker.cc:672
 hmdcgarmacromaker.cc:673
 hmdcgarmacromaker.cc:674
 hmdcgarmacromaker.cc:675
 hmdcgarmacromaker.cc:676
 hmdcgarmacromaker.cc:677
 hmdcgarmacromaker.cc:678
 hmdcgarmacromaker.cc:679
 hmdcgarmacromaker.cc:680
 hmdcgarmacromaker.cc:681
 hmdcgarmacromaker.cc:682
 hmdcgarmacromaker.cc:683
 hmdcgarmacromaker.cc:684
 hmdcgarmacromaker.cc:685
 hmdcgarmacromaker.cc:686
 hmdcgarmacromaker.cc:687
 hmdcgarmacromaker.cc:688
 hmdcgarmacromaker.cc:689
 hmdcgarmacromaker.cc:690
 hmdcgarmacromaker.cc:691
 hmdcgarmacromaker.cc:692
 hmdcgarmacromaker.cc:693
 hmdcgarmacromaker.cc:694
 hmdcgarmacromaker.cc:695
 hmdcgarmacromaker.cc:696
 hmdcgarmacromaker.cc:697
 hmdcgarmacromaker.cc:698
 hmdcgarmacromaker.cc:699
 hmdcgarmacromaker.cc:700
 hmdcgarmacromaker.cc:701
 hmdcgarmacromaker.cc:702
 hmdcgarmacromaker.cc:703
 hmdcgarmacromaker.cc:704
 hmdcgarmacromaker.cc:705
 hmdcgarmacromaker.cc:706
 hmdcgarmacromaker.cc:707
 hmdcgarmacromaker.cc:708
 hmdcgarmacromaker.cc:709
 hmdcgarmacromaker.cc:710
 hmdcgarmacromaker.cc:711
 hmdcgarmacromaker.cc:712
 hmdcgarmacromaker.cc:713
 hmdcgarmacromaker.cc:714
 hmdcgarmacromaker.cc:715
 hmdcgarmacromaker.cc:716
 hmdcgarmacromaker.cc:717
 hmdcgarmacromaker.cc:718
 hmdcgarmacromaker.cc:719
 hmdcgarmacromaker.cc:720
 hmdcgarmacromaker.cc:721
 hmdcgarmacromaker.cc:722
 hmdcgarmacromaker.cc:723
 hmdcgarmacromaker.cc:724
 hmdcgarmacromaker.cc:725
 hmdcgarmacromaker.cc:726
 hmdcgarmacromaker.cc:727
 hmdcgarmacromaker.cc:728
 hmdcgarmacromaker.cc:729
 hmdcgarmacromaker.cc:730
 hmdcgarmacromaker.cc:731
 hmdcgarmacromaker.cc:732
 hmdcgarmacromaker.cc:733
 hmdcgarmacromaker.cc:734
 hmdcgarmacromaker.cc:735
 hmdcgarmacromaker.cc:736
 hmdcgarmacromaker.cc:737
 hmdcgarmacromaker.cc:738
 hmdcgarmacromaker.cc:739
 hmdcgarmacromaker.cc:740
 hmdcgarmacromaker.cc:741
 hmdcgarmacromaker.cc:742
 hmdcgarmacromaker.cc:743
 hmdcgarmacromaker.cc:744
 hmdcgarmacromaker.cc:745
 hmdcgarmacromaker.cc:746
 hmdcgarmacromaker.cc:747
 hmdcgarmacromaker.cc:748
 hmdcgarmacromaker.cc:749
 hmdcgarmacromaker.cc:750
 hmdcgarmacromaker.cc:751
 hmdcgarmacromaker.cc:752
 hmdcgarmacromaker.cc:753
 hmdcgarmacromaker.cc:754
 hmdcgarmacromaker.cc:755
 hmdcgarmacromaker.cc:756
 hmdcgarmacromaker.cc:757
 hmdcgarmacromaker.cc:758
 hmdcgarmacromaker.cc:759
 hmdcgarmacromaker.cc:760
 hmdcgarmacromaker.cc:761
 hmdcgarmacromaker.cc:762
 hmdcgarmacromaker.cc:763
 hmdcgarmacromaker.cc:764
 hmdcgarmacromaker.cc:765
 hmdcgarmacromaker.cc:766
 hmdcgarmacromaker.cc:767
 hmdcgarmacromaker.cc:768
 hmdcgarmacromaker.cc:769
 hmdcgarmacromaker.cc:770
 hmdcgarmacromaker.cc:771
 hmdcgarmacromaker.cc:772
 hmdcgarmacromaker.cc:773
 hmdcgarmacromaker.cc:774
 hmdcgarmacromaker.cc:775
 hmdcgarmacromaker.cc:776
 hmdcgarmacromaker.cc:777
 hmdcgarmacromaker.cc:778
 hmdcgarmacromaker.cc:779
 hmdcgarmacromaker.cc:780
 hmdcgarmacromaker.cc:781
 hmdcgarmacromaker.cc:782
 hmdcgarmacromaker.cc:783
 hmdcgarmacromaker.cc:784
 hmdcgarmacromaker.cc:785
 hmdcgarmacromaker.cc:786
 hmdcgarmacromaker.cc:787
 hmdcgarmacromaker.cc:788
 hmdcgarmacromaker.cc:789
 hmdcgarmacromaker.cc:790
 hmdcgarmacromaker.cc:791
 hmdcgarmacromaker.cc:792
 hmdcgarmacromaker.cc:793
 hmdcgarmacromaker.cc:794
 hmdcgarmacromaker.cc:795
 hmdcgarmacromaker.cc:796
 hmdcgarmacromaker.cc:797
 hmdcgarmacromaker.cc:798
 hmdcgarmacromaker.cc:799
 hmdcgarmacromaker.cc:800
 hmdcgarmacromaker.cc:801
 hmdcgarmacromaker.cc:802
 hmdcgarmacromaker.cc:803
 hmdcgarmacromaker.cc:804
 hmdcgarmacromaker.cc:805
 hmdcgarmacromaker.cc:806
 hmdcgarmacromaker.cc:807
 hmdcgarmacromaker.cc:808
 hmdcgarmacromaker.cc:809
 hmdcgarmacromaker.cc:810
 hmdcgarmacromaker.cc:811
 hmdcgarmacromaker.cc:812
 hmdcgarmacromaker.cc:813
 hmdcgarmacromaker.cc:814
 hmdcgarmacromaker.cc:815
 hmdcgarmacromaker.cc:816
 hmdcgarmacromaker.cc:817
 hmdcgarmacromaker.cc:818
 hmdcgarmacromaker.cc:819
 hmdcgarmacromaker.cc:820
 hmdcgarmacromaker.cc:821
 hmdcgarmacromaker.cc:822
 hmdcgarmacromaker.cc:823
 hmdcgarmacromaker.cc:824
 hmdcgarmacromaker.cc:825
 hmdcgarmacromaker.cc:826
 hmdcgarmacromaker.cc:827
 hmdcgarmacromaker.cc:828
 hmdcgarmacromaker.cc:829
 hmdcgarmacromaker.cc:830
 hmdcgarmacromaker.cc:831
 hmdcgarmacromaker.cc:832
 hmdcgarmacromaker.cc:833
 hmdcgarmacromaker.cc:834
 hmdcgarmacromaker.cc:835
 hmdcgarmacromaker.cc:836
 hmdcgarmacromaker.cc:837
 hmdcgarmacromaker.cc:838
 hmdcgarmacromaker.cc:839
 hmdcgarmacromaker.cc:840
 hmdcgarmacromaker.cc:841
 hmdcgarmacromaker.cc:842
 hmdcgarmacromaker.cc:843
 hmdcgarmacromaker.cc:844
 hmdcgarmacromaker.cc:845
 hmdcgarmacromaker.cc:846
 hmdcgarmacromaker.cc:847
 hmdcgarmacromaker.cc:848
 hmdcgarmacromaker.cc:849
 hmdcgarmacromaker.cc:850
 hmdcgarmacromaker.cc:851
 hmdcgarmacromaker.cc:852
 hmdcgarmacromaker.cc:853
 hmdcgarmacromaker.cc:854
 hmdcgarmacromaker.cc:855
 hmdcgarmacromaker.cc:856
 hmdcgarmacromaker.cc:857
 hmdcgarmacromaker.cc:858
 hmdcgarmacromaker.cc:859
 hmdcgarmacromaker.cc:860
 hmdcgarmacromaker.cc:861
 hmdcgarmacromaker.cc:862
 hmdcgarmacromaker.cc:863
 hmdcgarmacromaker.cc:864
 hmdcgarmacromaker.cc:865
 hmdcgarmacromaker.cc:866
 hmdcgarmacromaker.cc:867
 hmdcgarmacromaker.cc:868
 hmdcgarmacromaker.cc:869
 hmdcgarmacromaker.cc:870
 hmdcgarmacromaker.cc:871
 hmdcgarmacromaker.cc:872
 hmdcgarmacromaker.cc:873
 hmdcgarmacromaker.cc:874
 hmdcgarmacromaker.cc:875
 hmdcgarmacromaker.cc:876
 hmdcgarmacromaker.cc:877
 hmdcgarmacromaker.cc:878
 hmdcgarmacromaker.cc:879
 hmdcgarmacromaker.cc:880
 hmdcgarmacromaker.cc:881
 hmdcgarmacromaker.cc:882
 hmdcgarmacromaker.cc:883
 hmdcgarmacromaker.cc:884
 hmdcgarmacromaker.cc:885
 hmdcgarmacromaker.cc:886
 hmdcgarmacromaker.cc:887
 hmdcgarmacromaker.cc:888
 hmdcgarmacromaker.cc:889
 hmdcgarmacromaker.cc:890
 hmdcgarmacromaker.cc:891
 hmdcgarmacromaker.cc:892
 hmdcgarmacromaker.cc:893
 hmdcgarmacromaker.cc:894
 hmdcgarmacromaker.cc:895
 hmdcgarmacromaker.cc:896
 hmdcgarmacromaker.cc:897
 hmdcgarmacromaker.cc:898
 hmdcgarmacromaker.cc:899
 hmdcgarmacromaker.cc:900
 hmdcgarmacromaker.cc:901
 hmdcgarmacromaker.cc:902
 hmdcgarmacromaker.cc:903
 hmdcgarmacromaker.cc:904
 hmdcgarmacromaker.cc:905
 hmdcgarmacromaker.cc:906
 hmdcgarmacromaker.cc:907
 hmdcgarmacromaker.cc:908
 hmdcgarmacromaker.cc:909
 hmdcgarmacromaker.cc:910
 hmdcgarmacromaker.cc:911
 hmdcgarmacromaker.cc:912
 hmdcgarmacromaker.cc:913
 hmdcgarmacromaker.cc:914
 hmdcgarmacromaker.cc:915
 hmdcgarmacromaker.cc:916
 hmdcgarmacromaker.cc:917
 hmdcgarmacromaker.cc:918
 hmdcgarmacromaker.cc:919
 hmdcgarmacromaker.cc:920
 hmdcgarmacromaker.cc:921
 hmdcgarmacromaker.cc:922
 hmdcgarmacromaker.cc:923
 hmdcgarmacromaker.cc:924
 hmdcgarmacromaker.cc:925
 hmdcgarmacromaker.cc:926
 hmdcgarmacromaker.cc:927
 hmdcgarmacromaker.cc:928
 hmdcgarmacromaker.cc:929
 hmdcgarmacromaker.cc:930
 hmdcgarmacromaker.cc:931
 hmdcgarmacromaker.cc:932
 hmdcgarmacromaker.cc:933
 hmdcgarmacromaker.cc:934
 hmdcgarmacromaker.cc:935
 hmdcgarmacromaker.cc:936
 hmdcgarmacromaker.cc:937
 hmdcgarmacromaker.cc:938
 hmdcgarmacromaker.cc:939
 hmdcgarmacromaker.cc:940
 hmdcgarmacromaker.cc:941
 hmdcgarmacromaker.cc:942
 hmdcgarmacromaker.cc:943
 hmdcgarmacromaker.cc:944
 hmdcgarmacromaker.cc:945
 hmdcgarmacromaker.cc:946
 hmdcgarmacromaker.cc:947
 hmdcgarmacromaker.cc:948
 hmdcgarmacromaker.cc:949
 hmdcgarmacromaker.cc:950
 hmdcgarmacromaker.cc:951
 hmdcgarmacromaker.cc:952
 hmdcgarmacromaker.cc:953
 hmdcgarmacromaker.cc:954
 hmdcgarmacromaker.cc:955
 hmdcgarmacromaker.cc:956
 hmdcgarmacromaker.cc:957
 hmdcgarmacromaker.cc:958
 hmdcgarmacromaker.cc:959
 hmdcgarmacromaker.cc:960
 hmdcgarmacromaker.cc:961
 hmdcgarmacromaker.cc:962
 hmdcgarmacromaker.cc:963
 hmdcgarmacromaker.cc:964
 hmdcgarmacromaker.cc:965
 hmdcgarmacromaker.cc:966
 hmdcgarmacromaker.cc:967
 hmdcgarmacromaker.cc:968
 hmdcgarmacromaker.cc:969
 hmdcgarmacromaker.cc:970
 hmdcgarmacromaker.cc:971
 hmdcgarmacromaker.cc:972
 hmdcgarmacromaker.cc:973
 hmdcgarmacromaker.cc:974
 hmdcgarmacromaker.cc:975
 hmdcgarmacromaker.cc:976
 hmdcgarmacromaker.cc:977
 hmdcgarmacromaker.cc:978
 hmdcgarmacromaker.cc:979
 hmdcgarmacromaker.cc:980
 hmdcgarmacromaker.cc:981
 hmdcgarmacromaker.cc:982
 hmdcgarmacromaker.cc:983
 hmdcgarmacromaker.cc:984
 hmdcgarmacromaker.cc:985
 hmdcgarmacromaker.cc:986
 hmdcgarmacromaker.cc:987
 hmdcgarmacromaker.cc:988
 hmdcgarmacromaker.cc:989
 hmdcgarmacromaker.cc:990
 hmdcgarmacromaker.cc:991
 hmdcgarmacromaker.cc:992
 hmdcgarmacromaker.cc:993
 hmdcgarmacromaker.cc:994
 hmdcgarmacromaker.cc:995
 hmdcgarmacromaker.cc:996
 hmdcgarmacromaker.cc:997
 hmdcgarmacromaker.cc:998
 hmdcgarmacromaker.cc:999
 hmdcgarmacromaker.cc:1000
 hmdcgarmacromaker.cc:1001