ROOT logo
//*-- AUTHOR : Vladimir Pechenov
//*-- Modified : 17/01/2002 by I. Koenig

//_HADES_CLASS_DESCRIPTION 
///////////////////////////////////////////////////////////////
//HMdcTimeCut
//
//  class for cut time1, time2 and time2-time1
//  used for beam data only (time1: leading edge, time2
//  trailing edge, see http://www-hades.gsi.de/docs/mdc/mdcana).
//
//  Using: create the object HMdcTimeCut in a macros
//  and set the edges for a cut (see hmdctimecut.h)
//  Default seting - cut is absent (all edges = 0).
//
//  If you don't need in a cut don't create this object.
//
//  cT1L[module],cT1R[module] - cut for time1
//  cT2L[module],cT2R[module] - cut for time2
//  cLeft[module],cRight[module] - cut for time2-time1
//
//  Member fuctions:
//  setCut(Float_t cT1L, Float_t cT1R, Float_t cT2L, Float_t cT2R,
//              Float_t cLeft, Float_t cRight);
//    seting identical cuts for all modules
//  setCut(Int_t mod, Float_t cT1L, Float_t cT1R, Float_t cT2L, Float_t cT2R,
//              Float_t cLeft, Float_t cRight);
//    seting cuts for module mod.
//  ...
//
//  Static function getExObject return the pointer to
//  HMdcTimeCut object. If pointer=0, the object
//  not exist:
//  HMdcTimeCut* fCut=HMdcTimeCut::getExObject();
//
//  Static function getObject return the pointer to
//  HMdcTimeCut object. If object is not existing
//  it will created:
//  HMdcTimeCut* fCut=HMdcTimeCut::getObject();
//
//  Examples are in mdcTrackD.C and mdcEfficiency.C
//
//////////////////////////////////////////////////////////////

#include "hmdctimecut.h"
#include "hades.h"
#include "hruntimedb.h"
#include "hmdcparasciifileio.h"
#include "hpario.h"
#include "hmdcdetector.h"
#include "hspectrometer.h"


HMdcTimeCut::HMdcTimeCut(const Char_t* name,const Char_t* title,
			 const Char_t* context,Int_t s,Int_t m)
    : HParSet(name,title,context), fSecs(s) {
	setIsUsed(kFALSE);
	for (Int_t i=0;i<s; i++) fSecs.AddAt(new HMdcTimeCutSec(m),i);
	setNameTitle();
	if (gHades) {
	    fMdc = (HMdcDetector*)(((HSpectrometer*)(gHades->getSetup()))->getDetector("Mdc"));
	} else {
	    fMdc = 0;
	}
    }

void HMdcTimeCut::clear(void) {
    setCut(0.,0.,0.,0.,0.,0.,0.,0.,0.,0.);
}

void HMdcTimeCut::setNameTitle() {
    strcpy(detName,"Mdc");
}

HMdcTimeCut* HMdcTimeCut::getExObject() {
    HMdcTimeCut* fcut=0;
    if( gHades ) {
	HRuntimeDb* rdb=gHades->getRuntimeDb();
	if( rdb ) fcut=(HMdcTimeCut*)rdb->findContainer("MdcTimeCut");
    }
    return fcut;
}

HMdcTimeCut* HMdcTimeCut::getObject() {
    HMdcTimeCut* fcut=0;
    if( gHades ) {
	HRuntimeDb* rdb=gHades->getRuntimeDb();
	if( rdb ) {
	    fcut=(HMdcTimeCut*)rdb->getContainer("MdcTimeCut");
	}
    }
    return fcut;
}

void HMdcTimeCut::setCut(Float_t cT1L, Float_t cT1R,
			 Float_t cT2L, Float_t cT2R,
			 Float_t cLeft, Float_t cRight,
			 Float_t cBumpT1L, Float_t cBumpT1R,
			 Float_t cBumpTotL, Float_t cBumpTotR
			) {
    for (Int_t s=0;s<getSize();s++) {
	HMdcTimeCutSec &sector=this->operator[](s);

	for(Int_t mod=0;mod<sector.getSize();mod++) {
	    sector[mod].fill(cT1L,cT1R,cT2L,cT2R,cLeft,cRight,cBumpT1L,cBumpT1R,cBumpTotL,cBumpTotR);
	}
    }
    isContainer=kTRUE;
}

void HMdcTimeCut::setCut(Float_t* cT1L, Float_t* cT1R,
			 Float_t* cT2L, Float_t* cT2R,
			 Float_t* cLeft, Float_t* cRight,
			 Float_t* cBumpT1L, Float_t* cBumpT1R,
			 Float_t* cBumpTotL, Float_t* cBumpTotR
) {

    for (Int_t s=0;s<getSize();s++) {
	HMdcTimeCutSec &sector=this->operator[](s);

	for(Int_t mod=0;mod<sector.getSize();mod++) {
	    sector[mod].fill(cT1L[mod], cT1R[mod], cT2L[mod], cT2R[mod],
			     cLeft[mod], cRight[mod],
			     cBumpT1L[mod],cBumpT1R[mod],cBumpTotL[mod],cBumpTotR[mod]);
	}
    }
    isContainer=kTRUE;
}

void HMdcTimeCut::setCutTime1(Float_t cT1L, Float_t cT1R) {
    for (Int_t s=0;s<getSize();s++) {
	HMdcTimeCutSec &sector=this->operator[](s);

	for(Int_t mod=0;mod<sector.getSize();mod++) {
	    sector[mod].setCutTime1(cT1L, cT1R);
	}
    }
}

void HMdcTimeCut::setCutTime2(Float_t cT2L, Float_t cT2R) {
    for (Int_t s=0;s<getSize();s++) {
	HMdcTimeCutSec &sector=this->operator[](s);

	for(Int_t mod=0;mod<sector.getSize();mod++) {
	    sector[mod].setCutTime2(cT2L, cT2R);
	}
    }
}

void HMdcTimeCut::setCutDTime21(Float_t cLeft, Float_t cRight) {
    for (Int_t s=0;s<getSize();s++) {
	HMdcTimeCutSec &sector=this->operator[](s);

	for(Int_t mod=0;mod<sector.getSize();mod++) {
	    sector[mod].setCutTime(cLeft, cRight);
	}
    }
}

void HMdcTimeCut::setCutBumpTime1(Float_t cT1L, Float_t cT1R) {
    for (Int_t s=0;s<getSize();s++) {
	HMdcTimeCutSec &sector=this->operator[](s);

	for(Int_t mod=0;mod<sector.getSize();mod++) {
	    sector[mod].setCutBumpTime1(cT1L, cT1R);
	}
    }
}
void HMdcTimeCut::setCutBumpTot(Float_t cT1L, Float_t cT1R) {
    for (Int_t s=0;s<getSize();s++) {
	HMdcTimeCutSec &sector=this->operator[](s);

	for(Int_t mod=0;mod<sector.getSize();mod++) {
	    sector[mod].setCutBumpTot(cT1L, cT1R);
	}
    }
}

void HMdcTimeCut::setCut(Int_t mod, Float_t cT1L, Float_t cT1R,
			 Float_t cT2L, Float_t cT2R,
			 Float_t cLeft, Float_t cRight,
			 Float_t cBumpT1L, Float_t cBumpT1R,
			 Float_t cBumpTotL, Float_t cBumpTotR
) {
    for (Int_t s=0;s<getSize();s++) {
	HMdcTimeCutSec &sector=(*this)[s];

	if (mod>-1 && mod<sector.getSize()) {
	    sector[mod].fill(cT1L,cT1R,cT2L,cT2R,cLeft,cRight,cBumpT1L,cBumpT1R,cBumpTotL,cBumpTotR);
	}
    }
}

void HMdcTimeCut::setCutTime1(Int_t mod, Float_t cT1L, Float_t cT1R) {
    for (Int_t s=0;s<getSize();s++) {
	HMdcTimeCutSec &sector=(*this)[s];

	if (mod>-1 && mod<sector.getSize()) {
	    sector[mod].setCutTime1(cT1L,cT1R);
	}
    }
}

void HMdcTimeCut::setCutTime2(Int_t mod, Float_t cT2L, Float_t cT2R) {
    for (Int_t s=0;s<getSize();s++) {
	HMdcTimeCutSec &sector=(*this)[s];

	if (mod>-1 && mod<sector.getSize()) {
	    sector[mod].setCutTime2(cT2L,cT2R);
	}
    }
}

void HMdcTimeCut::setCutDTime21(Int_t mod, Float_t cLeft, Float_t cRight) {
    for (Int_t s=0;s<getSize();s++) {
	HMdcTimeCutSec &sector=(*this)[s];

	if (mod>-1 && mod<sector.getSize()) {
	    sector[mod].setCutTime(cLeft,cRight);
	}
    }
}

void HMdcTimeCut::setCutBumpTime1(Int_t mod, Float_t cT1L, Float_t cT1R) {
    for (Int_t s=0;s<getSize();s++) {
	HMdcTimeCutSec &sector=(*this)[s];

	if (mod>-1 && mod<sector.getSize()) {
	    sector[mod].setCutBumpTime1(cT1L,cT1R);
	}
    }
}

void HMdcTimeCut::setCutBumpTot(Int_t mod, Float_t cT1L, Float_t cT1R) {
    for (Int_t s=0;s<getSize();s++) {
	HMdcTimeCutSec &sector=(*this)[s];

	if (mod>-1 && mod<sector.getSize()) {
	    sector[mod].setCutBumpTot(cT1L,cT1R);
	}
    }
}

void HMdcTimeCut::getCut(Int_t s,Int_t mod, Float_t &cT1L, Float_t &cT1R,
			 Float_t &cT2L, Float_t &cT2R,
			 Float_t &cLeft, Float_t &cRight,
			 Float_t& cBumpT1L, Float_t& cBumpT1R,
			 Float_t& cBumpTotL, Float_t& cBumpTotR
) {
    HMdcTimeCutMod &m = (*this)[s][mod];
    cT1L   = m.getCutTime1Left();
    cT1R   = m.getCutTime1Right();
    cT2L   = m.getCutTime2Left();
    cT2R   = m.getCutTime2Right();
    cLeft  = m.getCutTimeLeft();
    cRight = m.getCutTimeRight();
    cBumpT1L   = m.getCutBumpTime1Left();
    cBumpT1R   = m.getCutBumpTime1Right();
    cBumpTotL  = m.getCutBumpTotLeft();
    cBumpTotR  = m.getCutBumpTotRight();
}

Bool_t HMdcTimeCut::cut(HMdcCal1* cal) {
    // return true if cal1 pass all cuts

    Float_t time1 = cal->getTime1();
    Float_t time2 = cal->getTime2();
    Float_t dTime = time2-time1;
    Int_t mod = cal->getModule();
    Int_t sec = cal->getSector();
    HMdcTimeCutMod &m = (*this)[sec][mod];

    if (m.cutTime1(time1) && m.cutTime2(time2) && m.cutTimesDif(dTime) && m.cutBump(time1,dTime))
	return kTRUE;

    return kFALSE;
}

Bool_t HMdcTimeCut::cutTime1(HMdcCal1* cal) {
    // return true if cal1 pass cut
    Float_t time1=cal->getTime1();
    Int_t mod=cal->getModule();
    Int_t sec=cal->getSector();
    HMdcTimeCutMod &m = (*this)[sec][mod];

    return m.cutTime1(time1);
}

Bool_t HMdcTimeCut::cutTime1(Int_t s,Int_t m,Float_t time1) {
    // return true if cal1 pass cut
    HMdcTimeCutMod &mod = (*this)[s][m];

    return mod.cutTime1(time1);
}

Bool_t HMdcTimeCut::cutTime2(HMdcCal1* cal) {
    // return true if cal1 pass cut
    Float_t time2=cal->getTime2();
    Int_t mod=cal->getModule();
    Int_t sec=cal->getSector();
    HMdcTimeCutMod &m = (*this)[sec][mod];

    return m.cutTime2(time2);
}

Bool_t HMdcTimeCut::cutTime2(Int_t s,Int_t m,Float_t time2) {
     // return true if cal1 pass cut
   
    HMdcTimeCutMod &mod = (*this)[s][m];
    return mod.cutTime2(time2);
}
Bool_t HMdcTimeCut::cutTimesDif(HMdcCal1* cal) {
    // return true if cal1 pass cut
    Float_t dTime=cal->getTime2()-cal->getTime1();
    Int_t mod=cal->getModule();
    Int_t sec=cal->getSector();
    HMdcTimeCutMod &m = (*this)[sec][mod];

    return m.cutTimesDif(dTime);
}
Bool_t HMdcTimeCut::cutTimesDif(Int_t s,Int_t m,Float_t time1,Float_t time2) {
    // return true if cal1 pass cut
    HMdcTimeCutMod &mod = (*this)[s][m];
    return  mod.cutTimesDif(time2-time1);
}

Bool_t HMdcTimeCut::cutComStop(HMdcCal1* cal) {
    // return true if cal1 pass cut
    Float_t time1=cal->getTime1();
    Int_t mod=cal->getModule();
    Int_t sec=cal->getSector();
    HMdcTimeCutMod &m = (*this)[sec][mod];

    return m.cutComStop(time1);
}

Bool_t HMdcTimeCut::cutBump(HMdcCal1* cal) {
    // return true if cal1 pass cut
    Float_t time1=cal->getTime1();
    Float_t time2=cal->getTime2();
    Int_t mod=cal->getModule();
    Int_t sec=cal->getSector();
    HMdcTimeCutMod &m = (*this)[sec][mod];

    return m.cutBump(time1,time2-time1);
}

Bool_t HMdcTimeCut::cutBump(Int_t s,Int_t m,Float_t time1,Float_t tot) {
    // return true if cal1 pass cut
    HMdcTimeCutMod &mod = (*this)[s][m];
    return mod.cutBump(time1,tot);
}

Bool_t HMdcTimeCut::init(HParIo* inp,Int_t* set) {
    // intitializes the container from an input
    HDetParIo* input=inp->getDetParIo("HMdcParIo");
    if (input) return (input->init(this,set));
    return kFALSE;
}

Int_t HMdcTimeCut::write(HParIo* output) {
    // writes the container to an output
    HDetParIo* out=output->getDetParIo("HMdcParIo");
    if (out) return out->write(this);
    return -1;
}

void HMdcTimeCut::readline(const Char_t* buf, Int_t* set) {
    // decodes one line read from ascii file I/O
    Int_t sec,mod,n;
    Float_t cT1L,cT1R,cT2L,cT2R,cLeft,cRight,cBumpT1L,cBumpT1R,cBumpTotL,cBumpTotR;

    sscanf(buf,"%i%i%f%f%f%f%f%f%f%f%f%f",
	   &sec,&mod,&cT1L,&cT1R,&cT2L,&cT2R,&cLeft,&cRight,&cBumpT1L,&cBumpT1R,&cBumpTotL,&cBumpTotR);

    n = sec*4 + mod; //FIXME
    if (set[n]) {
	if (sec>-1 && sec<6 && mod>-1 && mod<4) {
	    (*this)[sec][mod].fill(cT1L,cT1R,cT2L,cT2R,cLeft,cRight,cBumpT1L,cBumpT1R,cBumpTotL,cBumpTotR);
	} else {
	    Error("readLine","Addres: sector_%i, module_%i not known",sec,mod);
	}
	set[n] = 999;
    }
}

void HMdcTimeCut::putAsciiHeader(TString& b) {
    b =
	"#######################################################################\n"
	"# Drift time cuts for noise reduction of the MDC\n"
	"# Format:\n"
	"# sector mod time1Left time1Right time2Left time2Right tabLeft tabRight BumpT1L BumpT1R BumpTotL BumpTotR\n"
	"#######################################################################\n";
}

Bool_t HMdcTimeCut::writeline(Char_t*buf, Int_t s, Int_t m) {
    Bool_t r = kTRUE;

    if (fMdc) {
	if (fMdc->getModule(s,m) != 0) {
	    if  (s>-1 && s<getSize()) {
		HMdcTimeCutSec &sector = (*this)[s];
		if (m>-1 && m<sector.getSize()) {
		    sprintf(buf,"%i %i %6.0f %6.0f %6.0f %6.0f %6.0f %6.0f %6.0f %6.0f %6.0f %6.0f\n",
			    s,m,
			    (*this)[s][m].getCutTime1Left(),
			    (*this)[s][m].getCutTime1Right(),
			    (*this)[s][m].getCutTime2Left(),
			    (*this)[s][m].getCutTime2Right(),
			    (*this)[s][m].getCutTimeLeft(),
			    (*this)[s][m].getCutTimeRight(),
			    (*this)[s][m].getCutBumpTime1Left(),
			    (*this)[s][m].getCutBumpTime1Right(),
			    (*this)[s][m].getCutBumpTotLeft(),
			    (*this)[s][m].getCutBumpTotRight()
			   );

		} else r = kFALSE;
	    } else r = kFALSE;
	} else { strcpy(buf,""); }
    }

    return r;
}


void HMdcTimeCutMod::Streamer(TBuffer &R__b)
{
   // Stream an object of class HMdcTimeCutMod.

   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { }
      TObject::Streamer(R__b);
      R__b >> cutT1L;
      R__b >> cutT1R;
      R__b >> cutT2L;
      R__b >> cutT2R;
      R__b >> cutLeft;
      R__b >> cutRight;
      if(R__v>1){
	  R__b >> cutBumpT1L;
	  R__b >> cutBumpT1R;
	  R__b >> cutBumpTotL;
	  R__b >> cutBumpTotR;
      } else {
          cutBumpT1L = cutBumpT1R = cutBumpTotL = cutBumpTotR = -2000;
      }
      R__b.CheckByteCount(R__s, R__c, HMdcTimeCutMod::IsA());
   } else {
      R__c = R__b.WriteVersion(HMdcTimeCutMod::IsA(), kTRUE);
      TObject::Streamer(R__b);
      R__b << cutT1L;
      R__b << cutT1R;
      R__b << cutT2L;
      R__b << cutT2R;
      R__b << cutLeft;
      R__b << cutRight;
      R__b << cutBumpT1L;
      R__b << cutBumpT1R;
      R__b << cutBumpTotL;
      R__b << cutBumpTotR;
      R__b.SetByteCount(R__c, kTRUE);
   }
}

ClassImp(HMdcTimeCut)
ClassImp(HMdcTimeCutMod)
ClassImp(HMdcTimeCutSec)
 hmdctimecut.cc:1
 hmdctimecut.cc:2
 hmdctimecut.cc:3
 hmdctimecut.cc:4
 hmdctimecut.cc:5
 hmdctimecut.cc:6
 hmdctimecut.cc:7
 hmdctimecut.cc:8
 hmdctimecut.cc:9
 hmdctimecut.cc:10
 hmdctimecut.cc:11
 hmdctimecut.cc:12
 hmdctimecut.cc:13
 hmdctimecut.cc:14
 hmdctimecut.cc:15
 hmdctimecut.cc:16
 hmdctimecut.cc:17
 hmdctimecut.cc:18
 hmdctimecut.cc:19
 hmdctimecut.cc:20
 hmdctimecut.cc:21
 hmdctimecut.cc:22
 hmdctimecut.cc:23
 hmdctimecut.cc:24
 hmdctimecut.cc:25
 hmdctimecut.cc:26
 hmdctimecut.cc:27
 hmdctimecut.cc:28
 hmdctimecut.cc:29
 hmdctimecut.cc:30
 hmdctimecut.cc:31
 hmdctimecut.cc:32
 hmdctimecut.cc:33
 hmdctimecut.cc:34
 hmdctimecut.cc:35
 hmdctimecut.cc:36
 hmdctimecut.cc:37
 hmdctimecut.cc:38
 hmdctimecut.cc:39
 hmdctimecut.cc:40
 hmdctimecut.cc:41
 hmdctimecut.cc:42
 hmdctimecut.cc:43
 hmdctimecut.cc:44
 hmdctimecut.cc:45
 hmdctimecut.cc:46
 hmdctimecut.cc:47
 hmdctimecut.cc:48
 hmdctimecut.cc:49
 hmdctimecut.cc:50
 hmdctimecut.cc:51
 hmdctimecut.cc:52
 hmdctimecut.cc:53
 hmdctimecut.cc:54
 hmdctimecut.cc:55
 hmdctimecut.cc:56
 hmdctimecut.cc:57
 hmdctimecut.cc:58
 hmdctimecut.cc:59
 hmdctimecut.cc:60
 hmdctimecut.cc:61
 hmdctimecut.cc:62
 hmdctimecut.cc:63
 hmdctimecut.cc:64
 hmdctimecut.cc:65
 hmdctimecut.cc:66
 hmdctimecut.cc:67
 hmdctimecut.cc:68
 hmdctimecut.cc:69
 hmdctimecut.cc:70
 hmdctimecut.cc:71
 hmdctimecut.cc:72
 hmdctimecut.cc:73
 hmdctimecut.cc:74
 hmdctimecut.cc:75
 hmdctimecut.cc:76
 hmdctimecut.cc:77
 hmdctimecut.cc:78
 hmdctimecut.cc:79
 hmdctimecut.cc:80
 hmdctimecut.cc:81
 hmdctimecut.cc:82
 hmdctimecut.cc:83
 hmdctimecut.cc:84
 hmdctimecut.cc:85
 hmdctimecut.cc:86
 hmdctimecut.cc:87
 hmdctimecut.cc:88
 hmdctimecut.cc:89
 hmdctimecut.cc:90
 hmdctimecut.cc:91
 hmdctimecut.cc:92
 hmdctimecut.cc:93
 hmdctimecut.cc:94
 hmdctimecut.cc:95
 hmdctimecut.cc:96
 hmdctimecut.cc:97
 hmdctimecut.cc:98
 hmdctimecut.cc:99
 hmdctimecut.cc:100
 hmdctimecut.cc:101
 hmdctimecut.cc:102
 hmdctimecut.cc:103
 hmdctimecut.cc:104
 hmdctimecut.cc:105
 hmdctimecut.cc:106
 hmdctimecut.cc:107
 hmdctimecut.cc:108
 hmdctimecut.cc:109
 hmdctimecut.cc:110
 hmdctimecut.cc:111
 hmdctimecut.cc:112
 hmdctimecut.cc:113
 hmdctimecut.cc:114
 hmdctimecut.cc:115
 hmdctimecut.cc:116
 hmdctimecut.cc:117
 hmdctimecut.cc:118
 hmdctimecut.cc:119
 hmdctimecut.cc:120
 hmdctimecut.cc:121
 hmdctimecut.cc:122
 hmdctimecut.cc:123
 hmdctimecut.cc:124
 hmdctimecut.cc:125
 hmdctimecut.cc:126
 hmdctimecut.cc:127
 hmdctimecut.cc:128
 hmdctimecut.cc:129
 hmdctimecut.cc:130
 hmdctimecut.cc:131
 hmdctimecut.cc:132
 hmdctimecut.cc:133
 hmdctimecut.cc:134
 hmdctimecut.cc:135
 hmdctimecut.cc:136
 hmdctimecut.cc:137
 hmdctimecut.cc:138
 hmdctimecut.cc:139
 hmdctimecut.cc:140
 hmdctimecut.cc:141
 hmdctimecut.cc:142
 hmdctimecut.cc:143
 hmdctimecut.cc:144
 hmdctimecut.cc:145
 hmdctimecut.cc:146
 hmdctimecut.cc:147
 hmdctimecut.cc:148
 hmdctimecut.cc:149
 hmdctimecut.cc:150
 hmdctimecut.cc:151
 hmdctimecut.cc:152
 hmdctimecut.cc:153
 hmdctimecut.cc:154
 hmdctimecut.cc:155
 hmdctimecut.cc:156
 hmdctimecut.cc:157
 hmdctimecut.cc:158
 hmdctimecut.cc:159
 hmdctimecut.cc:160
 hmdctimecut.cc:161
 hmdctimecut.cc:162
 hmdctimecut.cc:163
 hmdctimecut.cc:164
 hmdctimecut.cc:165
 hmdctimecut.cc:166
 hmdctimecut.cc:167
 hmdctimecut.cc:168
 hmdctimecut.cc:169
 hmdctimecut.cc:170
 hmdctimecut.cc:171
 hmdctimecut.cc:172
 hmdctimecut.cc:173
 hmdctimecut.cc:174
 hmdctimecut.cc:175
 hmdctimecut.cc:176
 hmdctimecut.cc:177
 hmdctimecut.cc:178
 hmdctimecut.cc:179
 hmdctimecut.cc:180
 hmdctimecut.cc:181
 hmdctimecut.cc:182
 hmdctimecut.cc:183
 hmdctimecut.cc:184
 hmdctimecut.cc:185
 hmdctimecut.cc:186
 hmdctimecut.cc:187
 hmdctimecut.cc:188
 hmdctimecut.cc:189
 hmdctimecut.cc:190
 hmdctimecut.cc:191
 hmdctimecut.cc:192
 hmdctimecut.cc:193
 hmdctimecut.cc:194
 hmdctimecut.cc:195
 hmdctimecut.cc:196
 hmdctimecut.cc:197
 hmdctimecut.cc:198
 hmdctimecut.cc:199
 hmdctimecut.cc:200
 hmdctimecut.cc:201
 hmdctimecut.cc:202
 hmdctimecut.cc:203
 hmdctimecut.cc:204
 hmdctimecut.cc:205
 hmdctimecut.cc:206
 hmdctimecut.cc:207
 hmdctimecut.cc:208
 hmdctimecut.cc:209
 hmdctimecut.cc:210
 hmdctimecut.cc:211
 hmdctimecut.cc:212
 hmdctimecut.cc:213
 hmdctimecut.cc:214
 hmdctimecut.cc:215
 hmdctimecut.cc:216
 hmdctimecut.cc:217
 hmdctimecut.cc:218
 hmdctimecut.cc:219
 hmdctimecut.cc:220
 hmdctimecut.cc:221
 hmdctimecut.cc:222
 hmdctimecut.cc:223
 hmdctimecut.cc:224
 hmdctimecut.cc:225
 hmdctimecut.cc:226
 hmdctimecut.cc:227
 hmdctimecut.cc:228
 hmdctimecut.cc:229
 hmdctimecut.cc:230
 hmdctimecut.cc:231
 hmdctimecut.cc:232
 hmdctimecut.cc:233
 hmdctimecut.cc:234
 hmdctimecut.cc:235
 hmdctimecut.cc:236
 hmdctimecut.cc:237
 hmdctimecut.cc:238
 hmdctimecut.cc:239
 hmdctimecut.cc:240
 hmdctimecut.cc:241
 hmdctimecut.cc:242
 hmdctimecut.cc:243
 hmdctimecut.cc:244
 hmdctimecut.cc:245
 hmdctimecut.cc:246
 hmdctimecut.cc:247
 hmdctimecut.cc:248
 hmdctimecut.cc:249
 hmdctimecut.cc:250
 hmdctimecut.cc:251
 hmdctimecut.cc:252
 hmdctimecut.cc:253
 hmdctimecut.cc:254
 hmdctimecut.cc:255
 hmdctimecut.cc:256
 hmdctimecut.cc:257
 hmdctimecut.cc:258
 hmdctimecut.cc:259
 hmdctimecut.cc:260
 hmdctimecut.cc:261
 hmdctimecut.cc:262
 hmdctimecut.cc:263
 hmdctimecut.cc:264
 hmdctimecut.cc:265
 hmdctimecut.cc:266
 hmdctimecut.cc:267
 hmdctimecut.cc:268
 hmdctimecut.cc:269
 hmdctimecut.cc:270
 hmdctimecut.cc:271
 hmdctimecut.cc:272
 hmdctimecut.cc:273
 hmdctimecut.cc:274
 hmdctimecut.cc:275
 hmdctimecut.cc:276
 hmdctimecut.cc:277
 hmdctimecut.cc:278
 hmdctimecut.cc:279
 hmdctimecut.cc:280
 hmdctimecut.cc:281
 hmdctimecut.cc:282
 hmdctimecut.cc:283
 hmdctimecut.cc:284
 hmdctimecut.cc:285
 hmdctimecut.cc:286
 hmdctimecut.cc:287
 hmdctimecut.cc:288
 hmdctimecut.cc:289
 hmdctimecut.cc:290
 hmdctimecut.cc:291
 hmdctimecut.cc:292
 hmdctimecut.cc:293
 hmdctimecut.cc:294
 hmdctimecut.cc:295
 hmdctimecut.cc:296
 hmdctimecut.cc:297
 hmdctimecut.cc:298
 hmdctimecut.cc:299
 hmdctimecut.cc:300
 hmdctimecut.cc:301
 hmdctimecut.cc:302
 hmdctimecut.cc:303
 hmdctimecut.cc:304
 hmdctimecut.cc:305
 hmdctimecut.cc:306
 hmdctimecut.cc:307
 hmdctimecut.cc:308
 hmdctimecut.cc:309
 hmdctimecut.cc:310
 hmdctimecut.cc:311
 hmdctimecut.cc:312
 hmdctimecut.cc:313
 hmdctimecut.cc:314
 hmdctimecut.cc:315
 hmdctimecut.cc:316
 hmdctimecut.cc:317
 hmdctimecut.cc:318
 hmdctimecut.cc:319
 hmdctimecut.cc:320
 hmdctimecut.cc:321
 hmdctimecut.cc:322
 hmdctimecut.cc:323
 hmdctimecut.cc:324
 hmdctimecut.cc:325
 hmdctimecut.cc:326
 hmdctimecut.cc:327
 hmdctimecut.cc:328
 hmdctimecut.cc:329
 hmdctimecut.cc:330
 hmdctimecut.cc:331
 hmdctimecut.cc:332
 hmdctimecut.cc:333
 hmdctimecut.cc:334
 hmdctimecut.cc:335
 hmdctimecut.cc:336
 hmdctimecut.cc:337
 hmdctimecut.cc:338
 hmdctimecut.cc:339
 hmdctimecut.cc:340
 hmdctimecut.cc:341
 hmdctimecut.cc:342
 hmdctimecut.cc:343
 hmdctimecut.cc:344
 hmdctimecut.cc:345
 hmdctimecut.cc:346
 hmdctimecut.cc:347
 hmdctimecut.cc:348
 hmdctimecut.cc:349
 hmdctimecut.cc:350
 hmdctimecut.cc:351
 hmdctimecut.cc:352
 hmdctimecut.cc:353
 hmdctimecut.cc:354
 hmdctimecut.cc:355
 hmdctimecut.cc:356
 hmdctimecut.cc:357
 hmdctimecut.cc:358
 hmdctimecut.cc:359
 hmdctimecut.cc:360
 hmdctimecut.cc:361
 hmdctimecut.cc:362
 hmdctimecut.cc:363
 hmdctimecut.cc:364
 hmdctimecut.cc:365
 hmdctimecut.cc:366
 hmdctimecut.cc:367
 hmdctimecut.cc:368
 hmdctimecut.cc:369
 hmdctimecut.cc:370
 hmdctimecut.cc:371
 hmdctimecut.cc:372
 hmdctimecut.cc:373
 hmdctimecut.cc:374
 hmdctimecut.cc:375
 hmdctimecut.cc:376
 hmdctimecut.cc:377
 hmdctimecut.cc:378
 hmdctimecut.cc:379
 hmdctimecut.cc:380
 hmdctimecut.cc:381
 hmdctimecut.cc:382
 hmdctimecut.cc:383
 hmdctimecut.cc:384
 hmdctimecut.cc:385
 hmdctimecut.cc:386
 hmdctimecut.cc:387
 hmdctimecut.cc:388
 hmdctimecut.cc:389
 hmdctimecut.cc:390
 hmdctimecut.cc:391
 hmdctimecut.cc:392
 hmdctimecut.cc:393
 hmdctimecut.cc:394
 hmdctimecut.cc:395
 hmdctimecut.cc:396
 hmdctimecut.cc:397
 hmdctimecut.cc:398
 hmdctimecut.cc:399
 hmdctimecut.cc:400
 hmdctimecut.cc:401
 hmdctimecut.cc:402
 hmdctimecut.cc:403
 hmdctimecut.cc:404
 hmdctimecut.cc:405
 hmdctimecut.cc:406
 hmdctimecut.cc:407
 hmdctimecut.cc:408
 hmdctimecut.cc:409
 hmdctimecut.cc:410
 hmdctimecut.cc:411
 hmdctimecut.cc:412
 hmdctimecut.cc:413
 hmdctimecut.cc:414
 hmdctimecut.cc:415
 hmdctimecut.cc:416
 hmdctimecut.cc:417
 hmdctimecut.cc:418
 hmdctimecut.cc:419
 hmdctimecut.cc:420
 hmdctimecut.cc:421
 hmdctimecut.cc:422
 hmdctimecut.cc:423
 hmdctimecut.cc:424
 hmdctimecut.cc:425
 hmdctimecut.cc:426
 hmdctimecut.cc:427
 hmdctimecut.cc:428
 hmdctimecut.cc:429
 hmdctimecut.cc:430
 hmdctimecut.cc:431
 hmdctimecut.cc:432
 hmdctimecut.cc:433
 hmdctimecut.cc:434
 hmdctimecut.cc:435
 hmdctimecut.cc:436
 hmdctimecut.cc:437
 hmdctimecut.cc:438
 hmdctimecut.cc:439
 hmdctimecut.cc:440
 hmdctimecut.cc:441
 hmdctimecut.cc:442
 hmdctimecut.cc:443
 hmdctimecut.cc:444
 hmdctimecut.cc:445
 hmdctimecut.cc:446
 hmdctimecut.cc:447
 hmdctimecut.cc:448
 hmdctimecut.cc:449
 hmdctimecut.cc:450
 hmdctimecut.cc:451
 hmdctimecut.cc:452
 hmdctimecut.cc:453
 hmdctimecut.cc:454
 hmdctimecut.cc:455
 hmdctimecut.cc:456
 hmdctimecut.cc:457
 hmdctimecut.cc:458
 hmdctimecut.cc:459
 hmdctimecut.cc:460
 hmdctimecut.cc:461
 hmdctimecut.cc:462
 hmdctimecut.cc:463
 hmdctimecut.cc:464
 hmdctimecut.cc:465
 hmdctimecut.cc:466
 hmdctimecut.cc:467
 hmdctimecut.cc:468
 hmdctimecut.cc:469