ROOT logo
//__________________________________________________[C++ CLASS IMPLEMENTATION]
///////////////////////////////////////////////////////////////////////////////
// Name:           xiadgf/src/TMrbCPTM.cxx
// Purpose:        Methods to operate a module XIA DGF-4C
// Description:    Implements class methods for module XIA DGF-4C
// Header files:   TMrbCPTM.h          -- class defs
// Keywords:
// Author:         R. Lutter
// Mailto:         <a href=mailto:rudi.lutter@physik.uni-muenchen.de>R. Lutter</a>
// Revision:       $Id: TMrbCPTM.cxx,v 1.13 2006-07-14 08:02:52 Rudolf.Lutter Exp $       
// Date:           
//////////////////////////////////////////////////////////////////////////////

namespace std {} using namespace std;

#include "Rtypes.h"
#include "TRegexp.h"
#include "TFile.h"
#include "TDatime.h"
#include "TROOT.h"
#include "TObjString.h"

#include "TMrbSystem.h"
#include "TMrbLogger.h"

#include "TMrbCPTM.h"

#include "SetColor.h"

extern TMrbLogger * gMrbLog;

const SMrbNamedX kMrbCptmMaskBits[] = {
			{	BIT(0), "E2",	"E2"	},
			{	BIT(1), "T2",	"T2"	},
			{	BIT(2), "T1",	"T1"	},
			{	BIT(3), "Q4",	"Aux detector 4"	},
			{	BIT(4), "Q3",	"Aux detector 3" 	},
			{	BIT(5), "Q2",	"Aux detector 2" 	},
			{	BIT(6), "Q1",	"Aux detector 1"	},
			{	BIT(7), "Ge",	"Ge-Mult"			},
			{	0,		 NULL,	NULL				}
		};

ClassImp(TMrbCPTM)
ClassImp(TMrbCPTMEvent)

void TMrbCPTMEvent::Reset() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTMEvent::Reset
// Purpose:        Reset event
// Arguments:      --
// Results:        --
// Exceptions:
// Description:    Resets event data.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	fTimeStamp = 0;
	fTimeAux = 0;
	fTimeStampAdjusted = 0;
	fCounterT1 = 0;
	fCounterT2 = 0;
	fPattern = 0;
}

void TMrbCPTMEvent::SetTimeStamp(Int_t LowWord, Int_t MiddleWord, Int_t HighWord) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTMEvent::SetTimeStamp
// Purpose:        Set time stamp
// Arguments:      Int_t LowWord     -- bits 0..15
//                 Int_t MiddleWord  -- bits 16..31
//                 Int_t HighWord    -- bits 32..47
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Converts 3 16 bit items to a 48 bit time stamp
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	fTimeStamp = HighWord;
	fTimeStamp <<= 32;
	fTimeStamp |= (MiddleWord << 16) | LowWord;
}

Long64_t TMrbCPTMEvent::GetTimeStampAdjusted() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTMEvent::GetTimeStampAdjusted
// Purpose:        Return time stamp depending on Q bits
// Arguments:      --
// Results:        Long64_t TimeStamp   -- time stamp
// Exceptions:
// Description:    Checks if on of bits Q1...Q4 is set.
//                 If so replaces LSW of time stamp by time aux value.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	Long64_t t = fTimeStamp;
	if (fPattern & 0x0F000000) {
		t &= 0xFFFFFFFF0000LL;
		t |= fTimeAux & 0xFFFF;
	} else {
		t = fTimeStamp;
	}
	return(t);
}

const Char_t * TMrbCPTMEvent::Pattern2Ascii(TString & PatStr) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTMEvent::Pattern2Ascii
// Purpose:        Convert hit pattern to ascii
// Arguments:      TString & PatStr     -- where to store pattern string
// Results:        Char_t * PatStr      -- pointer to PatStr
// Exceptions:
// Description:    Converts pattern word to string.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	PatStr.Resize(0);
	UInt_t pat = fPattern;
	Bool_t first;
	for (Int_t i = 1; i <= 24; i++) {
		if (pat & 1) {
			if (!first) PatStr += " + G";
			first = kFALSE;
			PatStr += i;
		}
		pat >>= 1;
	}
	for (Int_t i = 1; i <= 4; i++) {
		if (pat & 1) {
			if (!first) PatStr += " + Q";
			first = kFALSE;
			PatStr += i;
		}
		pat >>= 1;
	}
	for (Int_t i = 1; i <= 2; i++) {
		if (pat & 1) {
			if (!first) PatStr += " + T";
			first = kFALSE;
			PatStr += i;
		}
		pat >>= 1;
	}
	return(PatStr.Data());
}

void TMrbCPTMEvent::Print(ostream & Out) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTMEvent::Print
// Purpose:        Print event data
// Arguments:      ostream & Out  -- output stream
// Results:        --
// Exceptions:
// Description:    Outputs data to stream.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	TString pstr;
	Out << Form("%15lld %10d %10d %10d %#10x", fTimeStamp, fTimeAux, fCounterT1, fCounterT2, fPattern);
	if (fPattern) Out << " = " << this->Pattern2Ascii(pstr);
	Out << endl;
}

TMrbCPTM::TMrbCPTM(const Char_t * ModuleName, const Char_t * HostName, Int_t Crate, Int_t Station) : TNamed(ModuleName, "") {
//__________________________________________________________________[C++ CTOR]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM
// Purpose:        Define a module of type C_PTM
// Arguments:      Char_t * ModuleName     -- module name
//                 Char_t * HostName       -- host to be connected to
//                 Int_t Crate             -- crate number Cxx
//                 Int_t Station           -- camac station Nxx
// Results:        --
// Exceptions:
// Description:    Class constructor
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	TMrbEsoneCnaf cnaf;
	
	if (gMrbLog == NULL) gMrbLog = new TMrbLogger();
	
	if (!cnaf.CheckCnaf(TMrbEsoneCnaf::kCnafCrate, Crate) || !cnaf.CheckCnaf(TMrbEsoneCnaf::kCnafStation, Station)) {
		gMrbLog->Err() << "C_PTM in " << Crate << ".N" << Station << " - illegal camac address" << endl;
		gMrbLog->Flush(this->ClassName());
		this->MakeZombie();
	} else {
		TMrbString title = "C_PTM \"";					// title: C_PTM "xyz" in Cx.Ny
		title += this->GetName();
		title += "\" in C";
		title += Crate;
		title += ".N";
		title += Station;
		this->SetTitle(title.Data());

		fCamacHost = HostName;							// store host name
		fCrate = Crate; 								// store crate & station
		fStation = Station;

		this->Camac()->ConnectToHost(HostName);
	}
}

TMrbCPTM::TMrbCPTM(const Char_t * ModuleName, const Char_t * HostName, const Char_t * CamacAddr) : TNamed(ModuleName, "") {
//__________________________________________________________________[C++ CTOR]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM
// Purpose:        Define a module of type DGF-4C
// Arguments:      Char_t * DGFName     -- module name
//                 Char_t * HostName    -- host to be connected to
//                 Char_t * CamacAddr   -- camac addr: Cxx.Nxx
// Results:        --
// Exceptions:
// Description:    Class constructor
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	TMrbEsoneCnaf cnaf;
	TMrbString title;

	if (gMrbLog == NULL) gMrbLog = new TMrbLogger();
	
	if (!cnaf.Ascii2Int(CamacAddr)) {	// check crate & station
		gMrbLog->Err() << "DGF in " << CamacAddr << " - illegal camac address" << endl;
		gMrbLog->Flush(this->ClassName());
		this->MakeZombie();
	} else {
		TMrbString title = "DGF-4C \"";							// title: C_PTMC "xyz" in Cx.Ny
		title += this->GetName();
		title += "\" in ";
		title += cnaf.Int2Ascii();
		this->SetTitle(title.Data());

		fCamacHost = HostName;							// store host name
		fCrate = cnaf.GetC(); 	// store crate & station
		fStation = cnaf.GetN();

		this->Camac()->ConnectToHost(HostName);
	}
}

Bool_t TMrbCPTM::Connect() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::Connect
// Purpose:        Connect to CAMAC
// Arguments:      --
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Connect to CAMAC thru TMrbEsone.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (this->IsConnected()) {
		gMrbLog->Err() << this->GetTitle() << " - already connected to host " << fCamacHost << endl;
		gMrbLog->Flush(this->ClassName(), "Connect");
		return(kTRUE);
	}

	if (fCamac.ConnectToHost(fCamacHost) == 0) { 		// try to connect to camac via given host
		gMrbLog->Err() << this->GetTitle() << " - can't connect to host " << fCamacHost << endl;
		gMrbLog->Flush(this->ClassName(), "Connect");
		return(kFALSE);
	}
	return(kFALSE);
}

Bool_t TMrbCPTM::SetCamacHost(const Char_t * HostName) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::SetCamacHost
// Purpose:        Redefine camac host
// Arguments:      Char_t * HostName    -- host name
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Redefines camac host. Method mainly used by DGFControl.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (this->IsConnected()) {
		gMrbLog->Err() << this->GetTitle() << " - already connected to host " << fCamacHost << endl;
		gMrbLog->Flush(this->ClassName(), "SetCamacHost");
		return(kFALSE);
	}
	fCamacHost = HostName;
	return(kTRUE);
}

Bool_t TMrbCPTM::SetCrate(Int_t Crate) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::SetCrate
// Purpose:        Redefine camac crate
// Arguments:      Int_t Crate    -- crate number
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    (Re)define camac crate. Method used by DGFControl.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	TMrbEsoneCnaf cnaf;

	if (this->IsConnected()) {
		gMrbLog->Err() << this->GetTitle() << " - already connected to host " << fCamacHost << endl;
		gMrbLog->Flush(this->ClassName(), "SetCrate");
		return(kFALSE);
	}

	if (!cnaf.CheckCnaf(TMrbEsoneCnaf::kCnafCrate, Crate)) return(kFALSE);

	fCrate = Crate;
	return(kTRUE);
}

Bool_t TMrbCPTM::SetStation(Int_t Station) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::SetStation
// Purpose:        Redefine camac station
// Arguments:      Int_t Station    -- station number
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    (Re)define camac station. Method used by DGFControl.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	TMrbEsoneCnaf cnaf;

	if (IsConnected()) {
		gMrbLog->Err() << this->GetTitle() << " - already connected to host " << fCamacHost << endl;
		gMrbLog->Flush(this->ClassName(), "SetStation");
		return(kFALSE);
	}

	if (!cnaf.CheckCnaf(TMrbEsoneCnaf::kCnafStation, Station)) return(kFALSE);

	fStation = Station;
	return(kTRUE);
}

Bool_t TMrbCPTM::ResetRead() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::ResetRead
// Purpose:        Reset read
// Arguments:      --
// Results:        --
// Exceptions:
// Description:    Resets read pointer.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("ResetRead")) return(kFALSE);
	if (!fCamac.ExecCnaf(fCrate, fStation, A(1), F(8), kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A1.F8 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "ResetRead");
		return(kFALSE);
	}
	return(kTRUE);
}

Bool_t TMrbCPTM::ResetWrite() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::ResetWrite
// Purpose:        Reset write
// Arguments:      --
// Results:        --
// Exceptions:
// Description:    Resets write pointer.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("ResetWrite")) return(kFALSE);
	if (!fCamac.ExecCnaf(fCrate, fStation, A(2), F(8), kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A2.F8 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "ResetWrite");
		return(kFALSE);
	}
	return(kTRUE);
}

Bool_t TMrbCPTM::ResetMemory() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::ResetMemory
// Purpose:        Reset memory
// Arguments:      --
// Results:        --
// Exceptions:
// Description:    Resets memory contents
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("ResetMemory")) return(kFALSE);
	if (!fCamac.ExecCnaf(fCrate, fStation, A(6), F(8), kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A6.F8 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "ResetMemory");
		return(kFALSE);
	}
	return(kTRUE);
}

Bool_t TMrbCPTM::ResetLAM() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::ResetLAM
// Purpose:        Reset lam
// Arguments:      --
// Results:        --
// Exceptions:
// Description:    Resets lam
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("ResetLAM")) return(kFALSE);
	if (!fCamac.ExecCnaf(fCrate, fStation, A(1), F(10), kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A1.F10 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "ResetLAM");
		return(kFALSE);
	}
	return(kTRUE);
}

Bool_t TMrbCPTM::ResetDacs() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::ResetDacs
// Purpose:        Reset dacs
// Arguments:      --
// Results:        --
// Exceptions:
// Description:    Resets dac contents
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("ResetDacs")) return(kFALSE);
	TArrayI dac(4);
	dac.Reset(0);
	return(this->WriteAllDacs(dac));
}

Bool_t TMrbCPTM::Reset() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::Reset
// Purpose:        Reset
// Arguments:      --
// Results:        --
// Exceptions:
// Description:    Reset all values to 0.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("Reset")) return(kFALSE);

	this->SetGeDGG(0, 0);			// Ge delay & gate generator
	this->SetAuxDGG(0, 0);			// Aux ...
	this->SetTimeWindowAux(0); 		// Aux time window
	this->SetMask(0);				// mask register

	this->ResetDacs();				// dac 0 .. 3

	this->ResetRead();				// read pointer
	this->ResetWrite(); 			// write ...
	this->ResetMemory();			// sram
	this->ResetLAM();				// lam (busy?)

	Int_t data = 10;
	fCamac.ExecCnaf(fCrate, fStation, A(7), F(16), data, kTRUE);
	return(kTRUE);
}

Bool_t TMrbCPTM::SetGeDGG(Int_t Delay, Int_t Width) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::SetGeDGG
// Purpose:        Set Ge DGG
// Arguments:      Int_t Delay    -- delay in 25ns ticks
//                 Int_t Width    -- width
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Sets the Ge DGG.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("SetGeDGG")) return(kFALSE);
	if (!this->CheckValue(Delay, 0xFF, "delay", "SetGeDGG")) return(kFALSE);
	if (!this->CheckValue(Width, 0xFF, "width", "SetGeDGG")) return(kFALSE);

	if (!this->SetGeDelay(Delay)) return(kFALSE);
	if (!this->SetGeWidth(Width)) return(kFALSE);
	return(kTRUE);
}

Bool_t TMrbCPTM::SetGeDelay(Int_t Delay) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::SetGeDelay
// Purpose:        Set Ge delay
// Arguments:      Int_t Delay    -- delay in 25ns ticks
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Sets the Ge delay.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("SetGeDelay")) return(kFALSE);
	if (!this->CheckValue(Delay, 0xFF, "delay", "SetGeDelay")) return(kFALSE);

	if (!fCamac.ExecCnaf(fCrate, fStation, A(0), F(16), Delay, kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A0.F16 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "SetGeDelay");
		return(kFALSE);
	}
	return(kTRUE);
}

Bool_t TMrbCPTM::SetGeWidth(Int_t Width) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::SetGeDelay
// Purpose:        Set Ge width
// Arguments:      Int_t Width    -- width in 25ns ticks
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Sets the Ge width.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("SetGeWidth")) return(kFALSE);
	if (!this->CheckValue(Width, 0xFF, "width", "SetGeWidth")) return(kFALSE);

	if (!fCamac.ExecCnaf(fCrate, fStation, A(1), F(16), Width, kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A1.F16 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "SetGeWidth");
		return(kFALSE);
	}
	return(kTRUE);
}

Int_t TMrbCPTM::GetGeDelay() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::GetGeDelay
// Purpose:        Read DGG Ge delay
// Arguments:      --
// Results:        Int_t Delay    -- delay in 25ns ticks
// Exceptions:
// Description:    Reads delay value of the Ge DGG.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("GetGeDelay")) return(-1);
	Int_t delay;
	if (!fCamac.ExecCnaf(fCrate, fStation, A(0), F(0), delay, kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A0.F0 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "GetGeDelay");
		return(-1);
	}
	return(delay);
}

Int_t TMrbCPTM::GetGeWidth() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::GetGeWidth
// Purpose:        Read DGG Ge width
// Arguments:      --
// Results:        Int_t Width    -- width in 25ns ticks
// Exceptions:
// Description:    Reads width value of the Ge DGG.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("GetGeWidth")) return(-1);
	Int_t width;
	if (!fCamac.ExecCnaf(fCrate, fStation, A(1), F(0), width, kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A1.F0 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "GetGeWidth");
		return(-1);
	}
	return(width);
}

Bool_t TMrbCPTM::SetAuxDGG(Int_t Delay, Int_t Width) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::SetAuxDGG
// Purpose:        Set Aux DGG
// Arguments:      Int_t Delay    -- delay in 25ns ticks
//                 Int_t Width    -- width
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Sets the Aux DGG.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("SetAuxDGG")) return(kFALSE);
	if (!this->CheckValue(Delay, 0xFF, "delay", "SetAuxDGG")) return(kFALSE);
	if (!this->CheckValue(Width, 0xFF, "width", "SetAuxDGG")) return(kFALSE);

	if (!this->SetAuxDelay(Delay)) return(kFALSE);
	if (!this->SetAuxWidth(Width)) return(kFALSE);
	return(kTRUE);
}

Bool_t TMrbCPTM::SetAuxDelay(Int_t Delay) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::SetAuxDelay
// Purpose:        Set Aux delay
// Arguments:      Int_t Delay    -- delay in 25ns ticks
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Sets the Aux delay.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("SetAuxDelay")) return(kFALSE);
	if (!this->CheckValue(Delay, 0xFF, "delay", "SetAuxDelay")) return(kFALSE);

	if (!fCamac.ExecCnaf(fCrate, fStation, A(2), F(16), Delay, kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A2.F16 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "SetAuxDelay");
		return(kFALSE);
	}
	return(kTRUE);
}

Bool_t TMrbCPTM::SetAuxWidth(Int_t Width) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::SetAuxDelay
// Purpose:        Set Aux width
// Arguments:      Int_t Width    -- width in 25ns ticks
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Sets the Aux width.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("SetAuxWidth")) return(kFALSE);
	if (!this->CheckValue(Width, 0xFF, "width", "SetAuxWidth")) return(kFALSE);

	if (!fCamac.ExecCnaf(fCrate, fStation, A(3), F(16), Width, kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A3.F16 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "SetAuxWidth");
		return(kFALSE);
	}
	return(kTRUE);
}

Int_t TMrbCPTM::GetAuxDelay() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::GetAuxDelay
// Purpose:        Read DGG Aux delay
// Arguments:      --
// Results:        Int_t Delay    -- delay in 25ns ticks
// Exceptions:
// Description:    Reads delay value of the Aux DGG.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("GetAuxDelay")) return(-1);
	Int_t delay;
	if (!fCamac.ExecCnaf(fCrate, fStation, A(2), F(0), delay, kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A2.F0 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "GetAuxDelay");
		return(-1);
	}
	return(delay);
}

Int_t TMrbCPTM::GetAuxWidth() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::GetAuxWidth
// Purpose:        Read DGG Aux width
// Arguments:      --
// Results:        Int_t Width    -- width in 25ns ticks
// Exceptions:
// Description:    Reads width value of the Aux DGG.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("GetAuxWidth")) return(-1);
	Int_t width;
	if (!fCamac.ExecCnaf(fCrate, fStation, A(3), F(0), width, kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A3.F0 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "GetAuxWidth");
		return(-1);
	}
	return(width);
}

Bool_t TMrbCPTM::SetMask(Int_t Mask) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::SetMask
// Purpose:        Set mask register
// Arguments:      Int_t Mask   -- mask register
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Sets the mask register.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("SetMask")) return(kFALSE);
	if (!this->CheckValue(Mask, 0xFF, "mask", "SetMask")) return(kFALSE);

	if (!fCamac.ExecCnaf(fCrate, fStation, A(5), F(16), Mask, kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A5.F16 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "SetMask");
		return(kFALSE);
	}
	return(kTRUE);
}

Bool_t TMrbCPTM::SetMask(const Char_t * Mask) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::SetMask
// Purpose:        Set mask register
// Arguments:      Char_t * Mask   -- mask register
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Sets the mask register.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("SetMask")) return(kFALSE);

	TMrbLofNamedX maskBits;
	maskBits.AddNamedX(kMrbCptmMaskBits);

	Int_t maskValue = 0;
	TMrbString mstr = Mask;
	TObjArray mbits;
	Int_t nb = mstr.Split(mbits, ":");
	for (Int_t i = 0; i < nb; i++) {
		TString mb = ((TObjString *) mbits[i])->GetString();
		TMrbNamedX * mbx = (TMrbNamedX *) maskBits.FindByName(mb.Data());
		if (mbx == NULL) {
			gMrbLog->Err()	<< "Illegal mask bit - " << mb << endl;
			gMrbLog->Flush(this->ClassName(), "SetMask");
			return(kFALSE);
		}
		maskValue |= mbx->GetIndex();
	}
	return(this->SetMask(maskValue));
}

Int_t TMrbCPTM::GetMask() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::GetMask
// Purpose:        Get mask register
// Arguments:      --
// Results:        Int_t Mask   -- mask register
// Exceptions:
// Description:    Reads the mask value.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("GetMask")) return(-1);
	Int_t mask;
	if (!fCamac.ExecCnaf(fCrate, fStation, A(5), F(0), mask, kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A5.F0 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "GetMask");
		return(-1);
	}
	return(mask);
}

Bool_t TMrbCPTM::SetTimeWindowAux(Int_t Window) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::SetTimeWindowAux
// Purpose:        Set time window
// Arguments:      Int_t Window    -- window in 25ns ticks
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Sets the Aux time window.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("SetTimeWindowAux")) return(kFALSE);
	if (!this->CheckValue(Window, 0xFF, "window", "SetTimeWindowAux")) return(kFALSE);

	if (!fCamac.ExecCnaf(fCrate, fStation, A(4), F(16), Window, kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A4.F16 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "SetTimeWindowAux");
		return(kFALSE);
	}
	return(kTRUE);
}

Int_t TMrbCPTM::GetTimeWindowAux() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::GetTimeWindowAux
// Purpose:        Get time window
// Arguments:      --
// Results:        Int_t Window    -- window in 25ns ticks
// Exceptions:
// Description:    Reads the mask value.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("GetTimeWindowAux")) return(-1);
	Int_t window;
	if (!fCamac.ExecCnaf(fCrate, fStation, A(4), F(0), window, kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A4.F0 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "GetTimeWindowAux");
		return(-1);
	}
	return(window);
}

Bool_t TMrbCPTM::EnableSynch(Bool_t Reset) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::EnableSynch
// Purpose:        Enable synch
// Arguments:      Bool_t Reset  -- kTRUE -> reset internal clock
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Enables the busy-synch loop.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("EnableSynch")) return(kFALSE);
	Int_t enaSynch = 	Reset ? A(5) : A(4);
	this->ResetRead();
	this->ResetWrite();
	this->ResetMemory();
	if (!fCamac.ExecCnaf(fCrate, fStation, enaSynch, F(8), kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A4/5.F8 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "EnableSynch");
		return(kFALSE);
	}
	return(kTRUE);
}

Bool_t TMrbCPTM::SetDac(Int_t DacNo, Int_t DacValue) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::SetDac
// Purpose:        Set dac value
// Arguments:      Int_t DacNo      -- dac number (0..3)
//                 Int_t DacValue   -- dac value to be set
// Results:        kFALSE/kTRUE
// Exceptions:
// Description:    Sets dac value.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("SetDac")) return(kFALSE);
	if (!this->CheckValue(DacNo, 3, "dacNo", "SetDac")) return(kFALSE);
	if (!this->CheckValue(DacValue, 0xFFF, "dacVal", "SetDac")) return(kFALSE);

	TArrayI dac(4);
	if (!this->ReadAllDacs(dac)) return(kFALSE);
	dac[DacNo] = DacValue;
	return(this->WriteAllDacs(dac));
}

Int_t TMrbCPTM::GetDac(Int_t DacNo) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::SetDac
// Purpose:        Get dac value
// Arguments:      Int_t DacNo      -- dac number (0..3)
// Results:        Int_t DacValue   -- dac value
// Exceptions:
// Description:    Reads dac value.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("GetDac")) return(-1);
	if (!this->CheckValue(DacNo, 3, "dacNo", "GetDac")) return(-1);

	TArrayI dac(4);
	if (!this->ReadAllDacs(dac)) return(-1);
	return(dac[DacNo]);
}

Bool_t TMrbCPTM::SetMultiplicity(Int_t Mult) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::SetMultiplicity
// Purpose:        Set multiplicity value
// Arguments:      Int_t Mult   -- multiplicity to be set
// Results:        kFALSE/kTRUE
// Exceptions:
// Description:    Sets mult value in steps of 35mV
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("SetMultiplicity")) return(kFALSE);
	if (!this->CheckValue(Mult, kMrbCptmMaxMult, "multVal", "SetMultiplicity")) return(kFALSE);
	Int_t dacVal = kMrbCptmMultOffset +  Mult * kMrbCptmMilliVoltsPerMult - kMrbCptmMultThresh;
	if (dacVal < kMrbCptmMultOffset) dacVal = kMrbCptmMultOffset;

	TArrayI dac(4);
	if (!this->ReadAllDacs(dac)) return(kFALSE);
	dac[kMrbCptmDacNoMult] = dacVal;
	return(this->WriteAllDacs(dac));
}

Int_t TMrbCPTM::GetMultiplicity() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::GetMultiplicity
// Purpose:        Get multiplicity value
// Arguments:      --
// Results:        Int_t Mult   -- multiplicity
// Exceptions:
// Description:    Reads dac value and calculates multiplicity.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("GetMultiplicity")) return(kFALSE);

	TArrayI dac(4);
	if (!this->ReadAllDacs(dac)) return(kFALSE);
	Int_t dacVal = dac[kMrbCptmDacNoMult];
	return((dacVal - kMrbCptmMultOffset + kMrbCptmMilliVoltsPerMult - 1)/kMrbCptmMilliVoltsPerMult);
}

Int_t TMrbCPTM::GetReadAddr() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::GetReadAddr
// Purpose:        Get read pointer
// Arguments:      --
// Results:        Int_t Addr   -- SRAM addr
// Exceptions:
// Description:    Reads current value of read addr.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("GetReadAddr")) return(-1);
	Int_t addr;
	if (!fCamac.ExecCnaf(fCrate, fStation, A(12), F(0), addr, kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A14.F0 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "GetReadAddr");
		return(-1);
	}
	return(addr);
}

Int_t TMrbCPTM::GetWriteAddr() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::GetWriteAddr
// Purpose:        Get write pointer
// Arguments:      --
// Results:        Int_t Addr   -- SRAM addr
// Exceptions:
// Description:    Reads current value of write addr.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("GetWriteAddr")) return(-1);
	Int_t addr;
	if (!fCamac.ExecCnaf(fCrate, fStation, A(13), F(0), addr, kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A13.F0 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "GetWriteAddr");
		return(-1);
	}
	return(addr);
}

Bool_t TMrbCPTM::SaveSettings(const Char_t * SaveFile) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbDGF::SaveSettings
// Purpose:        Save settings to file
// Arguments:      Char_t * SaveFile    -- file name
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Saves settings to file.
//                 Format is "unix style":
//                       <name>:<value>:<hexval>[:<trueval>:<unit>]
//                 Additional entries may be used to identify the module:
//                       FileType:par
//                       Module:<name>
//                       Crate:<crate>
//                       Station:<station>
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("SaveSettings")) return(kFALSE);

	ofstream sf;
	TString saveFile;
	TString savePath;
	TDatime dt;

	saveFile = SaveFile;
	if (saveFile.Index("/") != 0 && saveFile.Index("./", 0) != 0) {
		savePath = gEnv->GetValue("TMrbCPTM.SettingsPath", "");
		if (savePath.IsNull()) savePath = gEnv->GetValue("TMrbDGF.SettingsPath", ".");
		saveFile = savePath + "/";
		saveFile += SaveFile;
	}
	if (saveFile.Index(".par") > 0) {			// write ascii data
		sf.open(saveFile, ios::out);
		if (!sf.good()) {
			gMrbLog->Err() << gSystem->GetError() << " - " << saveFile << endl;
			gMrbLog->Flush(this->ClassName(), "SaveSettings");
			return(kFALSE);
		}

		sf << "#----------------------------------------------------------------------------------------" << endl;
		sf << "# Name          : "								<< SaveFile << endl;
		sf << "# Contents      : Settings for C_PTM "			<< this->GetName()
																<< " in C" << this->GetCrate()
																<< ".N" << this->GetStation() << endl;
		sf << "# Creation date : " 								<< dt.AsString() << endl;
		sf << "# Created by    : " 								<< gSystem->Getenv("USER") << endl;
		sf << "#" << endl;
		sf << "# Data format   : <name>:<value>:<hexval>[:<trueval>:<unit>]" << endl;
		sf << "#----------------------------------------------------------------------------------------" << endl;
		sf << "#+FileType:par" << endl;
		sf << "#+Module:"										<< this->GetName() << endl;
		sf << "#+Crate:"										<< this->GetCrate() << endl;
		sf << "#+Station:" 										<< this->GetStation() << endl;
		sf << "#........................................................................................" << endl;
		sf << endl;
		Int_t val = this->GetGeDelay();
		sf << "DelayGe:" << val << ":0x" << setbase(16) << val << setbase(10);
		if (val) sf << ":" << (Double_t) (val * 25. / 1000.) << ":us"; else sf << "::";
		sf << endl;
		val = this->GetGeWidth();
		sf << "WidthGe:" << val << ":0x" << setbase(16) << val << setbase(10);
		if (val) sf << ":" << (Double_t) (val * 25. / 1000.) << ":us"; else sf << "::";
		sf << endl;
		val = this->GetAuxDelay();
		sf << "DelayAux:" << val << ":0x" << setbase(16) << val << setbase(10);
		if (val) sf << ":" << (Double_t) (val * 25. / 1000.) << ":us"; else sf << "::";
		sf << endl;
		val = this->GetAuxWidth();
		sf << "WidthAux:" << val << ":0x" << setbase(16) << val << setbase(10);
		if (val) sf << ":" << (Double_t) (val * 25. / 1000.) << ":us"; else sf << "::";
		sf << endl;
		val = this->GetTimeWindowAux();
		sf << "TimeWindowAux:" << val << ":0x" << setbase(16) << val << setbase(10);
		if (val) sf << ":" << (Double_t) (val * 25. / 1000.) << ":us"; else sf << "::";
		sf << endl;
		val = this->GetMask();
		TString mStr;
		sf << "Mask:" << val << ":0x" << setbase(16) << val << setbase(10) << ":" << this->ConvertMask(mStr, val, kTRUE) << ":" << endl;
		val = this->GetDac(0);
		sf << "Dac0:" << val << ":0x" << setbase(16) << val << setbase(10) << "::" << endl;
		val = this->GetDac(1);
		sf << "Dac1:" << val << ":0x" << setbase(16) << val << setbase(10) << "::" << endl;
		val = this->GetDac(2);
		sf << "Dac2:" << val << ":0x" << setbase(16) << val << setbase(10) << "::" << endl;
		val = this->GetDac(3);
		sf << "Dac3:" << val << ":0x" << setbase(16) << val << setbase(10) << "::" << endl;
 		sf.close();
	} else {
		gMrbLog->Err() << "Wrong file extension - " << SaveFile << " (should be .par)" << endl;
		gMrbLog->Flush(this->ClassName(), "SaveSettings");
		return(kFALSE);
	}

	return(kTRUE);
}


Bool_t TMrbCPTM::RestoreSettings(const Char_t * RestoreFile) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbDGF::RestoreSettings
// Purpose:        Read settings from file
// Arguments:      Char_t * RestoreFile    -- file name
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Restores settings from file.
//                 Format is "unix style":
//                       <name>:<value>:<hexval>[:<trueval>:<unit>]
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("RestoreSettings")) return(kFALSE);

	ifstream rf;
	TString restFile;

	if (gSystem->AccessPathName(RestoreFile, kFileExists) == 0) {
		restFile = RestoreFile;
	} else {
		gMrbLog->Err() << "Settings file not found - " << RestoreFile << endl;
		gMrbLog->Flush(this->ClassName(), "RestoreSettings");
		return(kFALSE);
	}

	if (restFile.Index(".par") > 0) {			// write ascii data
		rf.open(restFile, ios::out);
		if (!rf.good()) {
			gMrbLog->Err() << gSystem->GetError() << " - " << restFile << endl;
			gMrbLog->Flush(this->ClassName(), "RestoreSettings");
			return(kFALSE);
		}
		Int_t lineCnt = 0;
		TMrbString rLine;
		for (;;) {
			rLine.ReadLine(rf, kFALSE);
			lineCnt++;
			if (rf.eof()) break;
			rLine = rLine.Strip(TString::kBoth);
			if (rLine.Length() == 0) continue;						// empty line
			if (rLine(0) == '#') continue;							// comment
			TObjArray rFields;
			rFields.Delete();
			Int_t nFields = rLine.Split(rFields, ":");
			if (nFields < 3) {
				gMrbLog->Err() << restFile << " (line " << lineCnt << "): Wrong number of fields - " << nFields << endl;
				gMrbLog->Flush(this->ClassName(), "RestoreSettings");
				continue;
			}
			TString rName = ((TObjString *) rFields[0])->GetString();
			TMrbString rVal	= (((TObjString *) rFields[1])->GetString()).Data();
			Int_t val;
			rVal.ToInteger(val);
			if (rName.CompareTo("DelayGe") == 0)			this->SetGeDelay(val);
			else if (rName.CompareTo("WidthGe") == 0)		this->SetGeWidth(val);
			else if (rName.CompareTo("DelayAux") == 0)		this->SetAuxDelay(val);
			else if (rName.CompareTo("WidthAux") == 0)		this->SetAuxWidth(val);
			else if (rName.CompareTo("TimeWindowAux") == 0)	this->SetTimeWindowAux(val);
			else if (rName.CompareTo("Mask") == 0)			this->SetMask(val);
			else if (rName.CompareTo("Dac0") == 0)			this->SetDac(0, val);
			else if (rName.CompareTo("Dac1") == 0)			this->SetDac(1, val);
			else if (rName.CompareTo("Dac2") == 0)			this->SetDac(2, val);
			else if (rName.CompareTo("Dac3") == 0)			this->SetDac(3, val);
			else  {
				gMrbLog->Err() << restFile << " (line " << lineCnt << "): No such key word - " << rName << " (ignored)" << endl;
				gMrbLog->Flush(this->ClassName(), "RestoreSettings");
				continue;
			}
		}
		rf.close();
	} else {
		gMrbLog->Err() << "Wrong file extension - " << restFile << " (should be .par)" << endl;
		gMrbLog->Flush(this->ClassName(), "RestoreSettings");
		return(kFALSE);
	}

	return(kTRUE);
}

Bool_t TMrbCPTM::DownloadAlteraCode(const Char_t * CodeFile) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbDGF::DownloadAlteraCode
// Purpose:        Download code
// Arguments:      Char_t * CodeFile    -- file name
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Reads binary data from file and loads down to altera chip
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("DownloadAlteraCode")) return(kFALSE);

	ifstream cf;
	TString codeFile;

	Bool_t ok = kTRUE;

	if (gSystem->AccessPathName(CodeFile, kFileExists) == 0) {
		codeFile = CodeFile;
	} else {
		gMrbLog->Err() << "Codefile not found - " << CodeFile << endl;
		gMrbLog->Flush(this->ClassName(), "DownloadAlteraCode");
		return(kFALSE);
	}

	if (codeFile.Index(".rbf") > 0) {			// write ascii data
		cf.open(codeFile, ios::out);
		if (!cf.good()) {
			gMrbLog->Err() << gSystem->GetError() << " - " << codeFile << endl;
			gMrbLog->Flush(this->ClassName(), "DownloadAlteraCode");
			return(kFALSE);
		}
		this->SaveSettings(".cptm.par");
		fCamac.ExecCnaf(fCrate, fStation, A(0), F(28), kTRUE);	// enable program mode
		fCamac.ExecCnaf(fCrate, fStation, A(0), F(30), kTRUE);	// start download
		Char_t byte;
		Int_t nofBytes = 0;
		TArrayI codeData;
		codeData.Set(kMrbCptmMaxCodeSize);
		codeData.Reset(0);
		for (;;) {
			cf.get(byte);
			if (cf.eof()) break;
			codeData[nofBytes++] = byte;
		}
		cf.close();
		if (fCamac.BlockXfer(fCrate, fStation, A(0), F(16), codeData, 0, nofBytes, kTRUE) == -1) {		// start block xfer, 16 bit
			gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A0.F16 failed" << endl;
			gMrbLog->Flush(this->ClassName(), "DownloadAlteraCode");
			ok = kFALSE;
		}
		if (!fCamac.GetQ()) {
			gMrbLog->Err()	<< "Q error afer F16 (write code): Q=" << (fCamac.GetQ() ? "1" : "0") << endl;
			gMrbLog->Flush(this->ClassName(), "DownloadAlteraCode");
			ok = kFALSE;
		}
		if (!fCamac.ExecCnaf(fCrate, fStation, A(0), F(29), kTRUE)) { 		// start download
			gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A0.F29 failed" << endl;
			gMrbLog->Flush(this->ClassName(), "DownloadAlteraCode");
			ok = kFALSE;
		}
		if (ok) {
			gMrbLog->Out()	<< fName << " in C" << fCrate << ".N" << fStation
							<< ": Code successfully loaded from file " << CodeFile
							<< " (" << nofBytes << " bytes)" << endl;
			gMrbLog->Flush(this->ClassName(), "DownloadAlteraCode", setblue);
		} else {
			gMrbLog->Wrn()	<< fName << " in C" << fCrate << ".N" << fStation
							<< ": Code loaded *WITH ERRORS* from file " << CodeFile
							<< " (" << nofBytes << " bytes)" << endl;
			gMrbLog->Flush(this->ClassName(), "DownloadAlteraCode");
		}
		this->Reset();
		this->RestoreSettings(".cptm.par");
	} else {
		gMrbLog->Err() << "Wrong file extension - " << CodeFile << " (should be \".rbf\")" << endl;
		gMrbLog->Flush(this->ClassName(), "DownloadAlteraCode");
	}
	return(ok);
}

Bool_t TMrbCPTM::PrintBuffer(ostream & Out) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTMEvent::PrintBuffer
// Purpose:        Print event buffer
// Arguments:      ostream & Out  -- output stream
// Results:        --
// Exceptions:
// Description:    Outputs data to stream.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("PrintBuffer")) return(kFALSE);

	Int_t wc = this->CheckWordCount("PrintBuffer");
	if (wc < 0) return(kFALSE);

	Out << Form("%15s %10s %10s %10s %s", "TimeStamp", "TsAux", "T1", "T2", "Pattern");
	Out << "---------------------------------------------------------------------------------------" << endl;
	TMrbCPTMEvent e;
	for (; wc; wc -= 10) {
		if (!this->ReadEvent(e)) return(kFALSE);
		e.Print();
	}
	return(kTRUE);
}

void TMrbCPTM::Print(ostream & Out) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::Print
// Purpose:        Print current settings
// Arguments:      ostream & Out    -- output stream
// Results:        --
// Exceptions:
// Description:    Printout.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	Out << endl << "C_PTM - Clock and Programmable Trigger Module:" << endl;
	Out << "----------------------------------------------" << endl;
	Out << "Name                 : " << this->GetName() << endl;
	Out << "Camac address        : C" << fCrate << ".N" << fStation << endl;
	Out << "DGG (Ge)       delay : " << (Double_t) (this->GetGeDelay() * 25.)/1000. << " us (" << this->GetGeDelay() << ")" << endl;
	Out << "               width : " << (Double_t) (this->GetGeWidth() * 25.)/1000. << " us (" << this->GetGeWidth() << ")" << endl;
	Out << "DGG (Aux)      delay : " << (Double_t) (this->GetAuxDelay() * 25.)/1000. << " us (" << this->GetAuxDelay() << ")" << endl;
	Out << "               width : " << (Double_t) (this->GetAuxWidth() * 25.)/1000. << " us (" << this->GetAuxWidth() << ")" << endl;
	Out << "Time window (Aux)    : " << (Double_t) (this->GetTimeWindowAux() * 25.)/1000. << " us (" << this->GetTimeWindowAux() << ")" << endl;
	Out << "DAC settings    dac0 : " << this->GetDac(0) << endl;
	Out << "                dac1 : " << this->GetDac(1) << endl;
	Out << "                dac2 : " << this->GetDac(2) << endl;
	Out << "                dac3 : " << this->GetDac(3) << endl;
	Out << "Multiplicity   (dac" << kMrbCptmDacNoMult << "): " << this->GetMultiplicity()
		<< " (1 mult = " << kMrbCptmMilliVoltsPerMult << "mV)" << endl;
	TString mStr;
	Out << "Mask register        : " << this->ConvertMask(mStr, this->GetMask()) << endl;
	Out << "SRAM pointers (read) : " << this->GetReadAddr() << endl;
	Out << "             (write) : " << this->GetWriteAddr() << endl << endl;
}

const Char_t * TMrbCPTM::ConvertMask(TString & Mask, Int_t MaskValue, Bool_t TextOnly) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::ConvertMask
// Purpose:        Decode mask bits
// Arguments:      TString & Mask    -- string to store mask bits in ascii
//                 Int_t MaskValue   -- mask bits
//                 Bool_t TextOnly   -- output ascii text only
// Results:        --
// Exceptions:
// Description:    Converts mask from number to ascii.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	TMrbString mstr;
	if (!TextOnly) mstr.FromInteger(MaskValue, 0, 16);

	TMrbLofNamedX maskBits;
	maskBits.AddNamedX(kMrbCptmMaskBits);

	Bool_t first = kTRUE;
	TString eq = TextOnly ? "" : " = ";
	for (Int_t i = 0; i <= 7; i++) {
		if (MaskValue & 1) {
			mstr += first ? eq.Data() : " + ";
			first = kFALSE;
			mstr += ((TObjString *) maskBits[i])->GetString();
		}
		MaskValue >>= 1;
	}
	Mask = mstr;
	return(Mask.Data());
}	

Bool_t TMrbCPTM::CheckValue(Int_t Value, Int_t MaxValue, const Char_t * ArgName, const Char_t * Method) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::CheckValue
// Purpose:        Check input value
// Arguments:      Int_t Value          -- input value to be checked
//                 Int_t MaxValue       -- max value allowed
//                 Char_t * ArgName     -- name of argument
//                 Char_t * Method      -- calling method
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Checks if a given value is allowed.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (Value < 0 || Value > MaxValue) {
		gMrbLog->Err() << "Illegal input value: " << ArgName << "=" << Value << " - should be in [0, " << MaxValue << "]" << endl;
		gMrbLog->Flush(this->ClassName(), Method);
		return(kFALSE);
	}
	return(kTRUE);
}

Int_t TMrbCPTM::ReadNext() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::ReadNext
// Purpose:        Read next word
// Arguments:      --
//                 Int_t Data   -- data word
// Results:        --
// Exceptions:
// Description:    Reads one word from cptm buffer.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("ReadNext")) return(-1);

#if 0
	Int_t wc = this->GetWordCount();
	if (wc == -1) return(-1);
	if (wc == 0) {
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": wc = 0" << endl;
		gMrbLog->Flush(this->ClassName(), "ReadNext");
		return(-1);
	}
#endif
	Int_t data;
	if (!fCamac.ExecCnaf(fCrate, fStation, A(6), F(0), data, kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A6.F0 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "ReadNext");
		return(-1);
	}
	return(data);
}

Bool_t TMrbCPTM::ReadEvent(TMrbCPTMEvent & Event) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::ReadEvent
// Purpose:        Read next event
// Arguments:      --
//                 TMrbCPTMEvent & Event  -- event structure
// Results:        --
// Exceptions:
// Description:    Reads one event from cptm buffer.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("ReadEvent")) return(kFALSE);

	Event.Reset();

	Int_t wc = this->CheckWordCount("ReadEvent");
	if (wc <= 0) return(kFALSE);

	TArrayI data(10);
	if (fCamac.BlockXfer(fCrate, fStation, A(6), F(0), data, 0, 10, kTRUE) == -1) {		// start block xfer, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A0.F16 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "ReadEvent");
		return(kFALSE);
	}
	Event.SetTimeStamp(data[0], data[1], data[2]);
	Event.SetTimeAux(data[3]);
	Event.SetCounterT1(data[5] << 16 | data[4]);
	Event.SetCounterT2(data[7] << 16 | data[6]);
	Event.SetPattern(data[9] << 16 | data[8]);
	return(kTRUE);
}

Int_t TMrbCPTM::GetWordCount() {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::GetWordCount
// Purpose:        Get buffer word count
// Arguments:      --
// Results:        Int_t WordCount      -- word count
// Exceptions:
// Description:    Reads word count.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("GetWordCount")) return(-1);

	Int_t wc;
	if (!fCamac.ExecCnaf(fCrate, fStation, A(13), F(0), wc, kTRUE)) { 		// exec cnaf, 16 bit
		gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A13.F0 failed" << endl;
		gMrbLog->Flush(this->ClassName(), "GetWordCount");
		return(-1);
	}
	return(wc);
}

Int_t TMrbCPTM::CheckWordCount(const Char_t * Method) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::CheckWordCount
// Purpose:        Check buffer word count
// Arguments:      Char_t * Method      -- calling method
// Results:        Int_t WordCount      -- word count
// Exceptions:
// Description:    Checks if buffer word count is modulo 10.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("CheckWordCount")) return(kFALSE);

	Int_t wc = this->GetWordCount();
	if (wc % 10) {
		gMrbLog->Wrn()	<< fName << " in C" << fCrate << ".N" << fStation
						<< ": Out of phase (wc = " << wc << ")" << endl;
		gMrbLog->Flush(this->ClassName(), "ReadEvent");
	}
	if (wc < 10) {
		gMrbLog->Wrn()	<< fName << " in C" << fCrate << ".N" << fStation
						<< ": Too few data (wc = " << wc << ")" << endl;
		gMrbLog->Flush(this->ClassName(), "ReadEvent");
	}
	return(wc);
}

Bool_t TMrbCPTM::CheckConnect(const Char_t * Method) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::CheckConnect
// Purpose:        Check if connected to CAMAC
// Arguments:      Char_t * Method      -- calling method
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Checks connection to CAMAC, outputs error message if not connected.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (this->IsConnected()) return(kTRUE);
	gMrbLog->Err() << this->GetTitle() << " - assigned to host " << fCamacHost << ", but NOT connected" << endl;
	gMrbLog->Flush(this->ClassName(), Method);
	return(kFALSE);
}

Bool_t TMrbCPTM::ReadAllDacs(TArrayI & Dac) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::ReadAllDacs
// Purpose:        Read dac values
// Arguments:      TArrayI & Dac    -- array to store dac values
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Reads DAC0 .. DAC3 (a 12 bits each) and stores values in array.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("ReadAllDacs")) return(kFALSE);
	Int_t j = 0;
	for (Int_t i = 8; i <= 11; i++, j++) {
		if (!fCamac.ExecCnaf(fCrate, fStation, A(i), F(0), Dac[j], kTRUE)) { 		// exec cnaf, 16 bit
			gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A" << i << ".F0 failed" << endl;
			gMrbLog->Flush(this->ClassName(), "ReadAllDacs");
			return(kFALSE);
		}
	}
	return(kTRUE);
}

Bool_t TMrbCPTM::WriteAllDacs(TArrayI & Dac) {
//________________________________________________________________[C++ METHOD]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCPTM::WriteAllDacs
// Purpose:        Write dac values
// Arguments:      TArrayI & Dac    -- array containing dac values
// Results:        kTRUE/kFALSE
// Exceptions:
// Description:    Writes DAC0 .. DAC3 (a 12 bits each).
// Keywords:
//////////////////////////////////////////////////////////////////////////////

	if (!this->CheckConnect("WriteAllDacs")) return(kFALSE);
	Long64_t dacBits = 0;
	for (Int_t i = 3; i >= 0; i--) {
		dacBits <<= 12;
		dacBits |= Dac[i];
	}
	TArrayI dac8(6);
	for (Int_t i = 0; i < 6; i++) {
		dac8[i] = dacBits & 0xFF;
		dacBits >>= 8;
	}
	Int_t j = 0;
	for (Int_t i = 8; i <= 13; i++, j++) {			// write 6 x 8 bits: F(0).A(8)...A(13)
		if (!fCamac.ExecCnaf(fCrate, fStation, A(i), F(16), dac8[j], kTRUE)) { 		// exec cnaf, 16 bit
			gMrbLog->Err()	<< fName << " in C" << fCrate << ".N" << fStation << ": A" << i << ".F16 failed" << endl;
			gMrbLog->Flush(this->ClassName(), "ReadAllDacs");
			return(kFALSE);
		}
	}
	return(kTRUE);
}
 TMrbCPTM.cxx:1
 TMrbCPTM.cxx:2
 TMrbCPTM.cxx:3
 TMrbCPTM.cxx:4
 TMrbCPTM.cxx:5
 TMrbCPTM.cxx:6
 TMrbCPTM.cxx:7
 TMrbCPTM.cxx:8
 TMrbCPTM.cxx:9
 TMrbCPTM.cxx:10
 TMrbCPTM.cxx:11
 TMrbCPTM.cxx:12
 TMrbCPTM.cxx:13
 TMrbCPTM.cxx:14
 TMrbCPTM.cxx:15
 TMrbCPTM.cxx:16
 TMrbCPTM.cxx:17
 TMrbCPTM.cxx:18
 TMrbCPTM.cxx:19
 TMrbCPTM.cxx:20
 TMrbCPTM.cxx:21
 TMrbCPTM.cxx:22
 TMrbCPTM.cxx:23
 TMrbCPTM.cxx:24
 TMrbCPTM.cxx:25
 TMrbCPTM.cxx:26
 TMrbCPTM.cxx:27
 TMrbCPTM.cxx:28
 TMrbCPTM.cxx:29
 TMrbCPTM.cxx:30
 TMrbCPTM.cxx:31
 TMrbCPTM.cxx:32
 TMrbCPTM.cxx:33
 TMrbCPTM.cxx:34
 TMrbCPTM.cxx:35
 TMrbCPTM.cxx:36
 TMrbCPTM.cxx:37
 TMrbCPTM.cxx:38
 TMrbCPTM.cxx:39
 TMrbCPTM.cxx:40
 TMrbCPTM.cxx:41
 TMrbCPTM.cxx:42
 TMrbCPTM.cxx:43
 TMrbCPTM.cxx:44
 TMrbCPTM.cxx:45
 TMrbCPTM.cxx:46
 TMrbCPTM.cxx:47
 TMrbCPTM.cxx:48
 TMrbCPTM.cxx:49
 TMrbCPTM.cxx:50
 TMrbCPTM.cxx:51
 TMrbCPTM.cxx:52
 TMrbCPTM.cxx:53
 TMrbCPTM.cxx:54
 TMrbCPTM.cxx:55
 TMrbCPTM.cxx:56
 TMrbCPTM.cxx:57
 TMrbCPTM.cxx:58
 TMrbCPTM.cxx:59
 TMrbCPTM.cxx:60
 TMrbCPTM.cxx:61
 TMrbCPTM.cxx:62
 TMrbCPTM.cxx:63
 TMrbCPTM.cxx:64
 TMrbCPTM.cxx:65
 TMrbCPTM.cxx:66
 TMrbCPTM.cxx:67
 TMrbCPTM.cxx:68
 TMrbCPTM.cxx:69
 TMrbCPTM.cxx:70
 TMrbCPTM.cxx:71
 TMrbCPTM.cxx:72
 TMrbCPTM.cxx:73
 TMrbCPTM.cxx:74
 TMrbCPTM.cxx:75
 TMrbCPTM.cxx:76
 TMrbCPTM.cxx:77
 TMrbCPTM.cxx:78
 TMrbCPTM.cxx:79
 TMrbCPTM.cxx:80
 TMrbCPTM.cxx:81
 TMrbCPTM.cxx:82
 TMrbCPTM.cxx:83
 TMrbCPTM.cxx:84
 TMrbCPTM.cxx:85
 TMrbCPTM.cxx:86
 TMrbCPTM.cxx:87
 TMrbCPTM.cxx:88
 TMrbCPTM.cxx:89
 TMrbCPTM.cxx:90
 TMrbCPTM.cxx:91
 TMrbCPTM.cxx:92
 TMrbCPTM.cxx:93
 TMrbCPTM.cxx:94
 TMrbCPTM.cxx:95
 TMrbCPTM.cxx:96
 TMrbCPTM.cxx:97
 TMrbCPTM.cxx:98
 TMrbCPTM.cxx:99
 TMrbCPTM.cxx:100
 TMrbCPTM.cxx:101
 TMrbCPTM.cxx:102
 TMrbCPTM.cxx:103
 TMrbCPTM.cxx:104
 TMrbCPTM.cxx:105
 TMrbCPTM.cxx:106
 TMrbCPTM.cxx:107
 TMrbCPTM.cxx:108
 TMrbCPTM.cxx:109
 TMrbCPTM.cxx:110
 TMrbCPTM.cxx:111
 TMrbCPTM.cxx:112
 TMrbCPTM.cxx:113
 TMrbCPTM.cxx:114
 TMrbCPTM.cxx:115
 TMrbCPTM.cxx:116
 TMrbCPTM.cxx:117
 TMrbCPTM.cxx:118
 TMrbCPTM.cxx:119
 TMrbCPTM.cxx:120
 TMrbCPTM.cxx:121
 TMrbCPTM.cxx:122
 TMrbCPTM.cxx:123
 TMrbCPTM.cxx:124
 TMrbCPTM.cxx:125
 TMrbCPTM.cxx:126
 TMrbCPTM.cxx:127
 TMrbCPTM.cxx:128
 TMrbCPTM.cxx:129
 TMrbCPTM.cxx:130
 TMrbCPTM.cxx:131
 TMrbCPTM.cxx:132
 TMrbCPTM.cxx:133
 TMrbCPTM.cxx:134
 TMrbCPTM.cxx:135
 TMrbCPTM.cxx:136
 TMrbCPTM.cxx:137
 TMrbCPTM.cxx:138
 TMrbCPTM.cxx:139
 TMrbCPTM.cxx:140
 TMrbCPTM.cxx:141
 TMrbCPTM.cxx:142
 TMrbCPTM.cxx:143
 TMrbCPTM.cxx:144
 TMrbCPTM.cxx:145
 TMrbCPTM.cxx:146
 TMrbCPTM.cxx:147
 TMrbCPTM.cxx:148
 TMrbCPTM.cxx:149
 TMrbCPTM.cxx:150
 TMrbCPTM.cxx:151
 TMrbCPTM.cxx:152
 TMrbCPTM.cxx:153
 TMrbCPTM.cxx:154
 TMrbCPTM.cxx:155
 TMrbCPTM.cxx:156
 TMrbCPTM.cxx:157
 TMrbCPTM.cxx:158
 TMrbCPTM.cxx:159
 TMrbCPTM.cxx:160
 TMrbCPTM.cxx:161
 TMrbCPTM.cxx:162
 TMrbCPTM.cxx:163
 TMrbCPTM.cxx:164
 TMrbCPTM.cxx:165
 TMrbCPTM.cxx:166
 TMrbCPTM.cxx:167
 TMrbCPTM.cxx:168
 TMrbCPTM.cxx:169
 TMrbCPTM.cxx:170
 TMrbCPTM.cxx:171
 TMrbCPTM.cxx:172
 TMrbCPTM.cxx:173
 TMrbCPTM.cxx:174
 TMrbCPTM.cxx:175
 TMrbCPTM.cxx:176
 TMrbCPTM.cxx:177
 TMrbCPTM.cxx:178
 TMrbCPTM.cxx:179
 TMrbCPTM.cxx:180
 TMrbCPTM.cxx:181
 TMrbCPTM.cxx:182
 TMrbCPTM.cxx:183
 TMrbCPTM.cxx:184
 TMrbCPTM.cxx:185
 TMrbCPTM.cxx:186
 TMrbCPTM.cxx:187
 TMrbCPTM.cxx:188
 TMrbCPTM.cxx:189
 TMrbCPTM.cxx:190
 TMrbCPTM.cxx:191
 TMrbCPTM.cxx:192
 TMrbCPTM.cxx:193
 TMrbCPTM.cxx:194
 TMrbCPTM.cxx:195
 TMrbCPTM.cxx:196
 TMrbCPTM.cxx:197
 TMrbCPTM.cxx:198
 TMrbCPTM.cxx:199
 TMrbCPTM.cxx:200
 TMrbCPTM.cxx:201
 TMrbCPTM.cxx:202
 TMrbCPTM.cxx:203
 TMrbCPTM.cxx:204
 TMrbCPTM.cxx:205
 TMrbCPTM.cxx:206
 TMrbCPTM.cxx:207
 TMrbCPTM.cxx:208
 TMrbCPTM.cxx:209
 TMrbCPTM.cxx:210
 TMrbCPTM.cxx:211
 TMrbCPTM.cxx:212
 TMrbCPTM.cxx:213
 TMrbCPTM.cxx:214
 TMrbCPTM.cxx:215
 TMrbCPTM.cxx:216
 TMrbCPTM.cxx:217
 TMrbCPTM.cxx:218
 TMrbCPTM.cxx:219
 TMrbCPTM.cxx:220
 TMrbCPTM.cxx:221
 TMrbCPTM.cxx:222
 TMrbCPTM.cxx:223
 TMrbCPTM.cxx:224
 TMrbCPTM.cxx:225
 TMrbCPTM.cxx:226
 TMrbCPTM.cxx:227
 TMrbCPTM.cxx:228
 TMrbCPTM.cxx:229
 TMrbCPTM.cxx:230
 TMrbCPTM.cxx:231
 TMrbCPTM.cxx:232
 TMrbCPTM.cxx:233
 TMrbCPTM.cxx:234
 TMrbCPTM.cxx:235
 TMrbCPTM.cxx:236
 TMrbCPTM.cxx:237
 TMrbCPTM.cxx:238
 TMrbCPTM.cxx:239
 TMrbCPTM.cxx:240
 TMrbCPTM.cxx:241
 TMrbCPTM.cxx:242
 TMrbCPTM.cxx:243
 TMrbCPTM.cxx:244
 TMrbCPTM.cxx:245
 TMrbCPTM.cxx:246
 TMrbCPTM.cxx:247
 TMrbCPTM.cxx:248
 TMrbCPTM.cxx:249
 TMrbCPTM.cxx:250
 TMrbCPTM.cxx:251
 TMrbCPTM.cxx:252
 TMrbCPTM.cxx:253
 TMrbCPTM.cxx:254
 TMrbCPTM.cxx:255
 TMrbCPTM.cxx:256
 TMrbCPTM.cxx:257
 TMrbCPTM.cxx:258
 TMrbCPTM.cxx:259
 TMrbCPTM.cxx:260
 TMrbCPTM.cxx:261
 TMrbCPTM.cxx:262
 TMrbCPTM.cxx:263
 TMrbCPTM.cxx:264
 TMrbCPTM.cxx:265
 TMrbCPTM.cxx:266
 TMrbCPTM.cxx:267
 TMrbCPTM.cxx:268
 TMrbCPTM.cxx:269
 TMrbCPTM.cxx:270
 TMrbCPTM.cxx:271
 TMrbCPTM.cxx:272
 TMrbCPTM.cxx:273
 TMrbCPTM.cxx:274
 TMrbCPTM.cxx:275
 TMrbCPTM.cxx:276
 TMrbCPTM.cxx:277
 TMrbCPTM.cxx:278
 TMrbCPTM.cxx:279
 TMrbCPTM.cxx:280
 TMrbCPTM.cxx:281
 TMrbCPTM.cxx:282
 TMrbCPTM.cxx:283
 TMrbCPTM.cxx:284
 TMrbCPTM.cxx:285
 TMrbCPTM.cxx:286
 TMrbCPTM.cxx:287
 TMrbCPTM.cxx:288
 TMrbCPTM.cxx:289
 TMrbCPTM.cxx:290
 TMrbCPTM.cxx:291
 TMrbCPTM.cxx:292
 TMrbCPTM.cxx:293
 TMrbCPTM.cxx:294
 TMrbCPTM.cxx:295
 TMrbCPTM.cxx:296
 TMrbCPTM.cxx:297
 TMrbCPTM.cxx:298
 TMrbCPTM.cxx:299
 TMrbCPTM.cxx:300
 TMrbCPTM.cxx:301
 TMrbCPTM.cxx:302
 TMrbCPTM.cxx:303
 TMrbCPTM.cxx:304
 TMrbCPTM.cxx:305
 TMrbCPTM.cxx:306
 TMrbCPTM.cxx:307
 TMrbCPTM.cxx:308
 TMrbCPTM.cxx:309
 TMrbCPTM.cxx:310
 TMrbCPTM.cxx:311
 TMrbCPTM.cxx:312
 TMrbCPTM.cxx:313
 TMrbCPTM.cxx:314
 TMrbCPTM.cxx:315
 TMrbCPTM.cxx:316
 TMrbCPTM.cxx:317
 TMrbCPTM.cxx:318
 TMrbCPTM.cxx:319
 TMrbCPTM.cxx:320
 TMrbCPTM.cxx:321
 TMrbCPTM.cxx:322
 TMrbCPTM.cxx:323
 TMrbCPTM.cxx:324
 TMrbCPTM.cxx:325
 TMrbCPTM.cxx:326
 TMrbCPTM.cxx:327
 TMrbCPTM.cxx:328
 TMrbCPTM.cxx:329
 TMrbCPTM.cxx:330
 TMrbCPTM.cxx:331
 TMrbCPTM.cxx:332
 TMrbCPTM.cxx:333
 TMrbCPTM.cxx:334
 TMrbCPTM.cxx:335
 TMrbCPTM.cxx:336
 TMrbCPTM.cxx:337
 TMrbCPTM.cxx:338
 TMrbCPTM.cxx:339
 TMrbCPTM.cxx:340
 TMrbCPTM.cxx:341
 TMrbCPTM.cxx:342
 TMrbCPTM.cxx:343
 TMrbCPTM.cxx:344
 TMrbCPTM.cxx:345
 TMrbCPTM.cxx:346
 TMrbCPTM.cxx:347
 TMrbCPTM.cxx:348
 TMrbCPTM.cxx:349
 TMrbCPTM.cxx:350
 TMrbCPTM.cxx:351
 TMrbCPTM.cxx:352
 TMrbCPTM.cxx:353
 TMrbCPTM.cxx:354
 TMrbCPTM.cxx:355
 TMrbCPTM.cxx:356
 TMrbCPTM.cxx:357
 TMrbCPTM.cxx:358
 TMrbCPTM.cxx:359
 TMrbCPTM.cxx:360
 TMrbCPTM.cxx:361
 TMrbCPTM.cxx:362
 TMrbCPTM.cxx:363
 TMrbCPTM.cxx:364
 TMrbCPTM.cxx:365
 TMrbCPTM.cxx:366
 TMrbCPTM.cxx:367
 TMrbCPTM.cxx:368
 TMrbCPTM.cxx:369
 TMrbCPTM.cxx:370
 TMrbCPTM.cxx:371
 TMrbCPTM.cxx:372
 TMrbCPTM.cxx:373
 TMrbCPTM.cxx:374
 TMrbCPTM.cxx:375
 TMrbCPTM.cxx:376
 TMrbCPTM.cxx:377
 TMrbCPTM.cxx:378
 TMrbCPTM.cxx:379
 TMrbCPTM.cxx:380
 TMrbCPTM.cxx:381
 TMrbCPTM.cxx:382
 TMrbCPTM.cxx:383
 TMrbCPTM.cxx:384
 TMrbCPTM.cxx:385
 TMrbCPTM.cxx:386
 TMrbCPTM.cxx:387
 TMrbCPTM.cxx:388
 TMrbCPTM.cxx:389
 TMrbCPTM.cxx:390
 TMrbCPTM.cxx:391
 TMrbCPTM.cxx:392
 TMrbCPTM.cxx:393
 TMrbCPTM.cxx:394
 TMrbCPTM.cxx:395
 TMrbCPTM.cxx:396
 TMrbCPTM.cxx:397
 TMrbCPTM.cxx:398
 TMrbCPTM.cxx:399
 TMrbCPTM.cxx:400
 TMrbCPTM.cxx:401
 TMrbCPTM.cxx:402
 TMrbCPTM.cxx:403
 TMrbCPTM.cxx:404
 TMrbCPTM.cxx:405
 TMrbCPTM.cxx:406
 TMrbCPTM.cxx:407
 TMrbCPTM.cxx:408
 TMrbCPTM.cxx:409
 TMrbCPTM.cxx:410
 TMrbCPTM.cxx:411
 TMrbCPTM.cxx:412
 TMrbCPTM.cxx:413
 TMrbCPTM.cxx:414
 TMrbCPTM.cxx:415
 TMrbCPTM.cxx:416
 TMrbCPTM.cxx:417
 TMrbCPTM.cxx:418
 TMrbCPTM.cxx:419
 TMrbCPTM.cxx:420
 TMrbCPTM.cxx:421
 TMrbCPTM.cxx:422
 TMrbCPTM.cxx:423
 TMrbCPTM.cxx:424
 TMrbCPTM.cxx:425
 TMrbCPTM.cxx:426
 TMrbCPTM.cxx:427
 TMrbCPTM.cxx:428
 TMrbCPTM.cxx:429
 TMrbCPTM.cxx:430
 TMrbCPTM.cxx:431
 TMrbCPTM.cxx:432
 TMrbCPTM.cxx:433
 TMrbCPTM.cxx:434
 TMrbCPTM.cxx:435
 TMrbCPTM.cxx:436
 TMrbCPTM.cxx:437
 TMrbCPTM.cxx:438
 TMrbCPTM.cxx:439
 TMrbCPTM.cxx:440
 TMrbCPTM.cxx:441
 TMrbCPTM.cxx:442
 TMrbCPTM.cxx:443
 TMrbCPTM.cxx:444
 TMrbCPTM.cxx:445
 TMrbCPTM.cxx:446
 TMrbCPTM.cxx:447
 TMrbCPTM.cxx:448
 TMrbCPTM.cxx:449
 TMrbCPTM.cxx:450
 TMrbCPTM.cxx:451
 TMrbCPTM.cxx:452
 TMrbCPTM.cxx:453
 TMrbCPTM.cxx:454
 TMrbCPTM.cxx:455
 TMrbCPTM.cxx:456
 TMrbCPTM.cxx:457
 TMrbCPTM.cxx:458
 TMrbCPTM.cxx:459
 TMrbCPTM.cxx:460
 TMrbCPTM.cxx:461
 TMrbCPTM.cxx:462
 TMrbCPTM.cxx:463
 TMrbCPTM.cxx:464
 TMrbCPTM.cxx:465
 TMrbCPTM.cxx:466
 TMrbCPTM.cxx:467
 TMrbCPTM.cxx:468
 TMrbCPTM.cxx:469
 TMrbCPTM.cxx:470
 TMrbCPTM.cxx:471
 TMrbCPTM.cxx:472
 TMrbCPTM.cxx:473
 TMrbCPTM.cxx:474
 TMrbCPTM.cxx:475
 TMrbCPTM.cxx:476
 TMrbCPTM.cxx:477
 TMrbCPTM.cxx:478
 TMrbCPTM.cxx:479
 TMrbCPTM.cxx:480
 TMrbCPTM.cxx:481
 TMrbCPTM.cxx:482
 TMrbCPTM.cxx:483
 TMrbCPTM.cxx:484
 TMrbCPTM.cxx:485
 TMrbCPTM.cxx:486
 TMrbCPTM.cxx:487
 TMrbCPTM.cxx:488
 TMrbCPTM.cxx:489
 TMrbCPTM.cxx:490
 TMrbCPTM.cxx:491
 TMrbCPTM.cxx:492
 TMrbCPTM.cxx:493
 TMrbCPTM.cxx:494
 TMrbCPTM.cxx:495
 TMrbCPTM.cxx:496
 TMrbCPTM.cxx:497
 TMrbCPTM.cxx:498
 TMrbCPTM.cxx:499
 TMrbCPTM.cxx:500
 TMrbCPTM.cxx:501
 TMrbCPTM.cxx:502
 TMrbCPTM.cxx:503
 TMrbCPTM.cxx:504
 TMrbCPTM.cxx:505
 TMrbCPTM.cxx:506
 TMrbCPTM.cxx:507
 TMrbCPTM.cxx:508
 TMrbCPTM.cxx:509
 TMrbCPTM.cxx:510
 TMrbCPTM.cxx:511
 TMrbCPTM.cxx:512
 TMrbCPTM.cxx:513
 TMrbCPTM.cxx:514
 TMrbCPTM.cxx:515
 TMrbCPTM.cxx:516
 TMrbCPTM.cxx:517
 TMrbCPTM.cxx:518
 TMrbCPTM.cxx:519
 TMrbCPTM.cxx:520
 TMrbCPTM.cxx:521
 TMrbCPTM.cxx:522
 TMrbCPTM.cxx:523
 TMrbCPTM.cxx:524
 TMrbCPTM.cxx:525
 TMrbCPTM.cxx:526
 TMrbCPTM.cxx:527
 TMrbCPTM.cxx:528
 TMrbCPTM.cxx:529
 TMrbCPTM.cxx:530
 TMrbCPTM.cxx:531
 TMrbCPTM.cxx:532
 TMrbCPTM.cxx:533
 TMrbCPTM.cxx:534
 TMrbCPTM.cxx:535
 TMrbCPTM.cxx:536
 TMrbCPTM.cxx:537
 TMrbCPTM.cxx:538
 TMrbCPTM.cxx:539
 TMrbCPTM.cxx:540
 TMrbCPTM.cxx:541
 TMrbCPTM.cxx:542
 TMrbCPTM.cxx:543
 TMrbCPTM.cxx:544
 TMrbCPTM.cxx:545
 TMrbCPTM.cxx:546
 TMrbCPTM.cxx:547
 TMrbCPTM.cxx:548
 TMrbCPTM.cxx:549
 TMrbCPTM.cxx:550
 TMrbCPTM.cxx:551
 TMrbCPTM.cxx:552
 TMrbCPTM.cxx:553
 TMrbCPTM.cxx:554
 TMrbCPTM.cxx:555
 TMrbCPTM.cxx:556
 TMrbCPTM.cxx:557
 TMrbCPTM.cxx:558
 TMrbCPTM.cxx:559
 TMrbCPTM.cxx:560
 TMrbCPTM.cxx:561
 TMrbCPTM.cxx:562
 TMrbCPTM.cxx:563
 TMrbCPTM.cxx:564
 TMrbCPTM.cxx:565
 TMrbCPTM.cxx:566
 TMrbCPTM.cxx:567
 TMrbCPTM.cxx:568
 TMrbCPTM.cxx:569
 TMrbCPTM.cxx:570
 TMrbCPTM.cxx:571
 TMrbCPTM.cxx:572
 TMrbCPTM.cxx:573
 TMrbCPTM.cxx:574
 TMrbCPTM.cxx:575
 TMrbCPTM.cxx:576
 TMrbCPTM.cxx:577
 TMrbCPTM.cxx:578
 TMrbCPTM.cxx:579
 TMrbCPTM.cxx:580
 TMrbCPTM.cxx:581
 TMrbCPTM.cxx:582
 TMrbCPTM.cxx:583
 TMrbCPTM.cxx:584
 TMrbCPTM.cxx:585
 TMrbCPTM.cxx:586
 TMrbCPTM.cxx:587
 TMrbCPTM.cxx:588
 TMrbCPTM.cxx:589
 TMrbCPTM.cxx:590
 TMrbCPTM.cxx:591
 TMrbCPTM.cxx:592
 TMrbCPTM.cxx:593
 TMrbCPTM.cxx:594
 TMrbCPTM.cxx:595
 TMrbCPTM.cxx:596
 TMrbCPTM.cxx:597
 TMrbCPTM.cxx:598
 TMrbCPTM.cxx:599
 TMrbCPTM.cxx:600
 TMrbCPTM.cxx:601
 TMrbCPTM.cxx:602
 TMrbCPTM.cxx:603
 TMrbCPTM.cxx:604
 TMrbCPTM.cxx:605
 TMrbCPTM.cxx:606
 TMrbCPTM.cxx:607
 TMrbCPTM.cxx:608
 TMrbCPTM.cxx:609
 TMrbCPTM.cxx:610
 TMrbCPTM.cxx:611
 TMrbCPTM.cxx:612
 TMrbCPTM.cxx:613
 TMrbCPTM.cxx:614
 TMrbCPTM.cxx:615
 TMrbCPTM.cxx:616
 TMrbCPTM.cxx:617
 TMrbCPTM.cxx:618
 TMrbCPTM.cxx:619
 TMrbCPTM.cxx:620
 TMrbCPTM.cxx:621
 TMrbCPTM.cxx:622
 TMrbCPTM.cxx:623
 TMrbCPTM.cxx:624
 TMrbCPTM.cxx:625
 TMrbCPTM.cxx:626
 TMrbCPTM.cxx:627
 TMrbCPTM.cxx:628
 TMrbCPTM.cxx:629
 TMrbCPTM.cxx:630
 TMrbCPTM.cxx:631
 TMrbCPTM.cxx:632
 TMrbCPTM.cxx:633
 TMrbCPTM.cxx:634
 TMrbCPTM.cxx:635
 TMrbCPTM.cxx:636
 TMrbCPTM.cxx:637
 TMrbCPTM.cxx:638
 TMrbCPTM.cxx:639
 TMrbCPTM.cxx:640
 TMrbCPTM.cxx:641
 TMrbCPTM.cxx:642
 TMrbCPTM.cxx:643
 TMrbCPTM.cxx:644
 TMrbCPTM.cxx:645
 TMrbCPTM.cxx:646
 TMrbCPTM.cxx:647
 TMrbCPTM.cxx:648
 TMrbCPTM.cxx:649
 TMrbCPTM.cxx:650
 TMrbCPTM.cxx:651
 TMrbCPTM.cxx:652
 TMrbCPTM.cxx:653
 TMrbCPTM.cxx:654
 TMrbCPTM.cxx:655
 TMrbCPTM.cxx:656
 TMrbCPTM.cxx:657
 TMrbCPTM.cxx:658
 TMrbCPTM.cxx:659
 TMrbCPTM.cxx:660
 TMrbCPTM.cxx:661
 TMrbCPTM.cxx:662
 TMrbCPTM.cxx:663
 TMrbCPTM.cxx:664
 TMrbCPTM.cxx:665
 TMrbCPTM.cxx:666
 TMrbCPTM.cxx:667
 TMrbCPTM.cxx:668
 TMrbCPTM.cxx:669
 TMrbCPTM.cxx:670
 TMrbCPTM.cxx:671
 TMrbCPTM.cxx:672
 TMrbCPTM.cxx:673
 TMrbCPTM.cxx:674
 TMrbCPTM.cxx:675
 TMrbCPTM.cxx:676
 TMrbCPTM.cxx:677
 TMrbCPTM.cxx:678
 TMrbCPTM.cxx:679
 TMrbCPTM.cxx:680
 TMrbCPTM.cxx:681
 TMrbCPTM.cxx:682
 TMrbCPTM.cxx:683
 TMrbCPTM.cxx:684
 TMrbCPTM.cxx:685
 TMrbCPTM.cxx:686
 TMrbCPTM.cxx:687
 TMrbCPTM.cxx:688
 TMrbCPTM.cxx:689
 TMrbCPTM.cxx:690
 TMrbCPTM.cxx:691
 TMrbCPTM.cxx:692
 TMrbCPTM.cxx:693
 TMrbCPTM.cxx:694
 TMrbCPTM.cxx:695
 TMrbCPTM.cxx:696
 TMrbCPTM.cxx:697
 TMrbCPTM.cxx:698
 TMrbCPTM.cxx:699
 TMrbCPTM.cxx:700
 TMrbCPTM.cxx:701
 TMrbCPTM.cxx:702
 TMrbCPTM.cxx:703
 TMrbCPTM.cxx:704
 TMrbCPTM.cxx:705
 TMrbCPTM.cxx:706
 TMrbCPTM.cxx:707
 TMrbCPTM.cxx:708
 TMrbCPTM.cxx:709
 TMrbCPTM.cxx:710
 TMrbCPTM.cxx:711
 TMrbCPTM.cxx:712
 TMrbCPTM.cxx:713
 TMrbCPTM.cxx:714
 TMrbCPTM.cxx:715
 TMrbCPTM.cxx:716
 TMrbCPTM.cxx:717
 TMrbCPTM.cxx:718
 TMrbCPTM.cxx:719
 TMrbCPTM.cxx:720
 TMrbCPTM.cxx:721
 TMrbCPTM.cxx:722
 TMrbCPTM.cxx:723
 TMrbCPTM.cxx:724
 TMrbCPTM.cxx:725
 TMrbCPTM.cxx:726
 TMrbCPTM.cxx:727
 TMrbCPTM.cxx:728
 TMrbCPTM.cxx:729
 TMrbCPTM.cxx:730
 TMrbCPTM.cxx:731
 TMrbCPTM.cxx:732
 TMrbCPTM.cxx:733
 TMrbCPTM.cxx:734
 TMrbCPTM.cxx:735
 TMrbCPTM.cxx:736
 TMrbCPTM.cxx:737
 TMrbCPTM.cxx:738
 TMrbCPTM.cxx:739
 TMrbCPTM.cxx:740
 TMrbCPTM.cxx:741
 TMrbCPTM.cxx:742
 TMrbCPTM.cxx:743
 TMrbCPTM.cxx:744
 TMrbCPTM.cxx:745
 TMrbCPTM.cxx:746
 TMrbCPTM.cxx:747
 TMrbCPTM.cxx:748
 TMrbCPTM.cxx:749
 TMrbCPTM.cxx:750
 TMrbCPTM.cxx:751
 TMrbCPTM.cxx:752
 TMrbCPTM.cxx:753
 TMrbCPTM.cxx:754
 TMrbCPTM.cxx:755
 TMrbCPTM.cxx:756
 TMrbCPTM.cxx:757
 TMrbCPTM.cxx:758
 TMrbCPTM.cxx:759
 TMrbCPTM.cxx:760
 TMrbCPTM.cxx:761
 TMrbCPTM.cxx:762
 TMrbCPTM.cxx:763
 TMrbCPTM.cxx:764
 TMrbCPTM.cxx:765
 TMrbCPTM.cxx:766
 TMrbCPTM.cxx:767
 TMrbCPTM.cxx:768
 TMrbCPTM.cxx:769
 TMrbCPTM.cxx:770
 TMrbCPTM.cxx:771
 TMrbCPTM.cxx:772
 TMrbCPTM.cxx:773
 TMrbCPTM.cxx:774
 TMrbCPTM.cxx:775
 TMrbCPTM.cxx:776
 TMrbCPTM.cxx:777
 TMrbCPTM.cxx:778
 TMrbCPTM.cxx:779
 TMrbCPTM.cxx:780
 TMrbCPTM.cxx:781
 TMrbCPTM.cxx:782
 TMrbCPTM.cxx:783
 TMrbCPTM.cxx:784
 TMrbCPTM.cxx:785
 TMrbCPTM.cxx:786
 TMrbCPTM.cxx:787
 TMrbCPTM.cxx:788
 TMrbCPTM.cxx:789
 TMrbCPTM.cxx:790
 TMrbCPTM.cxx:791
 TMrbCPTM.cxx:792
 TMrbCPTM.cxx:793
 TMrbCPTM.cxx:794
 TMrbCPTM.cxx:795
 TMrbCPTM.cxx:796
 TMrbCPTM.cxx:797
 TMrbCPTM.cxx:798
 TMrbCPTM.cxx:799
 TMrbCPTM.cxx:800
 TMrbCPTM.cxx:801
 TMrbCPTM.cxx:802
 TMrbCPTM.cxx:803
 TMrbCPTM.cxx:804
 TMrbCPTM.cxx:805
 TMrbCPTM.cxx:806
 TMrbCPTM.cxx:807
 TMrbCPTM.cxx:808
 TMrbCPTM.cxx:809
 TMrbCPTM.cxx:810
 TMrbCPTM.cxx:811
 TMrbCPTM.cxx:812
 TMrbCPTM.cxx:813
 TMrbCPTM.cxx:814
 TMrbCPTM.cxx:815
 TMrbCPTM.cxx:816
 TMrbCPTM.cxx:817
 TMrbCPTM.cxx:818
 TMrbCPTM.cxx:819
 TMrbCPTM.cxx:820
 TMrbCPTM.cxx:821
 TMrbCPTM.cxx:822
 TMrbCPTM.cxx:823
 TMrbCPTM.cxx:824
 TMrbCPTM.cxx:825
 TMrbCPTM.cxx:826
 TMrbCPTM.cxx:827
 TMrbCPTM.cxx:828
 TMrbCPTM.cxx:829
 TMrbCPTM.cxx:830
 TMrbCPTM.cxx:831
 TMrbCPTM.cxx:832
 TMrbCPTM.cxx:833
 TMrbCPTM.cxx:834
 TMrbCPTM.cxx:835
 TMrbCPTM.cxx:836
 TMrbCPTM.cxx:837
 TMrbCPTM.cxx:838
 TMrbCPTM.cxx:839
 TMrbCPTM.cxx:840
 TMrbCPTM.cxx:841
 TMrbCPTM.cxx:842
 TMrbCPTM.cxx:843
 TMrbCPTM.cxx:844
 TMrbCPTM.cxx:845
 TMrbCPTM.cxx:846
 TMrbCPTM.cxx:847
 TMrbCPTM.cxx:848
 TMrbCPTM.cxx:849
 TMrbCPTM.cxx:850
 TMrbCPTM.cxx:851
 TMrbCPTM.cxx:852
 TMrbCPTM.cxx:853
 TMrbCPTM.cxx:854
 TMrbCPTM.cxx:855
 TMrbCPTM.cxx:856
 TMrbCPTM.cxx:857
 TMrbCPTM.cxx:858
 TMrbCPTM.cxx:859
 TMrbCPTM.cxx:860
 TMrbCPTM.cxx:861
 TMrbCPTM.cxx:862
 TMrbCPTM.cxx:863
 TMrbCPTM.cxx:864
 TMrbCPTM.cxx:865
 TMrbCPTM.cxx:866
 TMrbCPTM.cxx:867
 TMrbCPTM.cxx:868
 TMrbCPTM.cxx:869
 TMrbCPTM.cxx:870
 TMrbCPTM.cxx:871
 TMrbCPTM.cxx:872
 TMrbCPTM.cxx:873
 TMrbCPTM.cxx:874
 TMrbCPTM.cxx:875
 TMrbCPTM.cxx:876
 TMrbCPTM.cxx:877
 TMrbCPTM.cxx:878
 TMrbCPTM.cxx:879
 TMrbCPTM.cxx:880
 TMrbCPTM.cxx:881
 TMrbCPTM.cxx:882
 TMrbCPTM.cxx:883
 TMrbCPTM.cxx:884
 TMrbCPTM.cxx:885
 TMrbCPTM.cxx:886
 TMrbCPTM.cxx:887
 TMrbCPTM.cxx:888
 TMrbCPTM.cxx:889
 TMrbCPTM.cxx:890
 TMrbCPTM.cxx:891
 TMrbCPTM.cxx:892
 TMrbCPTM.cxx:893
 TMrbCPTM.cxx:894
 TMrbCPTM.cxx:895
 TMrbCPTM.cxx:896
 TMrbCPTM.cxx:897
 TMrbCPTM.cxx:898
 TMrbCPTM.cxx:899
 TMrbCPTM.cxx:900
 TMrbCPTM.cxx:901
 TMrbCPTM.cxx:902
 TMrbCPTM.cxx:903
 TMrbCPTM.cxx:904
 TMrbCPTM.cxx:905
 TMrbCPTM.cxx:906
 TMrbCPTM.cxx:907
 TMrbCPTM.cxx:908
 TMrbCPTM.cxx:909
 TMrbCPTM.cxx:910
 TMrbCPTM.cxx:911
 TMrbCPTM.cxx:912
 TMrbCPTM.cxx:913
 TMrbCPTM.cxx:914
 TMrbCPTM.cxx:915
 TMrbCPTM.cxx:916
 TMrbCPTM.cxx:917
 TMrbCPTM.cxx:918
 TMrbCPTM.cxx:919
 TMrbCPTM.cxx:920
 TMrbCPTM.cxx:921
 TMrbCPTM.cxx:922
 TMrbCPTM.cxx:923
 TMrbCPTM.cxx:924
 TMrbCPTM.cxx:925
 TMrbCPTM.cxx:926
 TMrbCPTM.cxx:927
 TMrbCPTM.cxx:928
 TMrbCPTM.cxx:929
 TMrbCPTM.cxx:930
 TMrbCPTM.cxx:931
 TMrbCPTM.cxx:932
 TMrbCPTM.cxx:933
 TMrbCPTM.cxx:934
 TMrbCPTM.cxx:935
 TMrbCPTM.cxx:936
 TMrbCPTM.cxx:937
 TMrbCPTM.cxx:938
 TMrbCPTM.cxx:939
 TMrbCPTM.cxx:940
 TMrbCPTM.cxx:941
 TMrbCPTM.cxx:942
 TMrbCPTM.cxx:943
 TMrbCPTM.cxx:944
 TMrbCPTM.cxx:945
 TMrbCPTM.cxx:946
 TMrbCPTM.cxx:947
 TMrbCPTM.cxx:948
 TMrbCPTM.cxx:949
 TMrbCPTM.cxx:950
 TMrbCPTM.cxx:951
 TMrbCPTM.cxx:952
 TMrbCPTM.cxx:953
 TMrbCPTM.cxx:954
 TMrbCPTM.cxx:955
 TMrbCPTM.cxx:956
 TMrbCPTM.cxx:957
 TMrbCPTM.cxx:958
 TMrbCPTM.cxx:959
 TMrbCPTM.cxx:960
 TMrbCPTM.cxx:961
 TMrbCPTM.cxx:962
 TMrbCPTM.cxx:963
 TMrbCPTM.cxx:964
 TMrbCPTM.cxx:965
 TMrbCPTM.cxx:966
 TMrbCPTM.cxx:967
 TMrbCPTM.cxx:968
 TMrbCPTM.cxx:969
 TMrbCPTM.cxx:970
 TMrbCPTM.cxx:971
 TMrbCPTM.cxx:972
 TMrbCPTM.cxx:973
 TMrbCPTM.cxx:974
 TMrbCPTM.cxx:975
 TMrbCPTM.cxx:976
 TMrbCPTM.cxx:977
 TMrbCPTM.cxx:978
 TMrbCPTM.cxx:979
 TMrbCPTM.cxx:980
 TMrbCPTM.cxx:981
 TMrbCPTM.cxx:982
 TMrbCPTM.cxx:983
 TMrbCPTM.cxx:984
 TMrbCPTM.cxx:985
 TMrbCPTM.cxx:986
 TMrbCPTM.cxx:987
 TMrbCPTM.cxx:988
 TMrbCPTM.cxx:989
 TMrbCPTM.cxx:990
 TMrbCPTM.cxx:991
 TMrbCPTM.cxx:992
 TMrbCPTM.cxx:993
 TMrbCPTM.cxx:994
 TMrbCPTM.cxx:995
 TMrbCPTM.cxx:996
 TMrbCPTM.cxx:997
 TMrbCPTM.cxx:998
 TMrbCPTM.cxx:999
 TMrbCPTM.cxx:1000
 TMrbCPTM.cxx:1001
 TMrbCPTM.cxx:1002
 TMrbCPTM.cxx:1003
 TMrbCPTM.cxx:1004
 TMrbCPTM.cxx:1005
 TMrbCPTM.cxx:1006
 TMrbCPTM.cxx:1007
 TMrbCPTM.cxx:1008
 TMrbCPTM.cxx:1009
 TMrbCPTM.cxx:1010
 TMrbCPTM.cxx:1011
 TMrbCPTM.cxx:1012
 TMrbCPTM.cxx:1013
 TMrbCPTM.cxx:1014
 TMrbCPTM.cxx:1015
 TMrbCPTM.cxx:1016
 TMrbCPTM.cxx:1017
 TMrbCPTM.cxx:1018
 TMrbCPTM.cxx:1019
 TMrbCPTM.cxx:1020
 TMrbCPTM.cxx:1021
 TMrbCPTM.cxx:1022
 TMrbCPTM.cxx:1023
 TMrbCPTM.cxx:1024
 TMrbCPTM.cxx:1025
 TMrbCPTM.cxx:1026
 TMrbCPTM.cxx:1027
 TMrbCPTM.cxx:1028
 TMrbCPTM.cxx:1029
 TMrbCPTM.cxx:1030
 TMrbCPTM.cxx:1031
 TMrbCPTM.cxx:1032
 TMrbCPTM.cxx:1033
 TMrbCPTM.cxx:1034
 TMrbCPTM.cxx:1035
 TMrbCPTM.cxx:1036
 TMrbCPTM.cxx:1037
 TMrbCPTM.cxx:1038
 TMrbCPTM.cxx:1039
 TMrbCPTM.cxx:1040
 TMrbCPTM.cxx:1041
 TMrbCPTM.cxx:1042
 TMrbCPTM.cxx:1043
 TMrbCPTM.cxx:1044
 TMrbCPTM.cxx:1045
 TMrbCPTM.cxx:1046
 TMrbCPTM.cxx:1047
 TMrbCPTM.cxx:1048
 TMrbCPTM.cxx:1049
 TMrbCPTM.cxx:1050
 TMrbCPTM.cxx:1051
 TMrbCPTM.cxx:1052
 TMrbCPTM.cxx:1053
 TMrbCPTM.cxx:1054
 TMrbCPTM.cxx:1055
 TMrbCPTM.cxx:1056
 TMrbCPTM.cxx:1057
 TMrbCPTM.cxx:1058
 TMrbCPTM.cxx:1059
 TMrbCPTM.cxx:1060
 TMrbCPTM.cxx:1061
 TMrbCPTM.cxx:1062
 TMrbCPTM.cxx:1063
 TMrbCPTM.cxx:1064
 TMrbCPTM.cxx:1065
 TMrbCPTM.cxx:1066
 TMrbCPTM.cxx:1067
 TMrbCPTM.cxx:1068
 TMrbCPTM.cxx:1069
 TMrbCPTM.cxx:1070
 TMrbCPTM.cxx:1071
 TMrbCPTM.cxx:1072
 TMrbCPTM.cxx:1073
 TMrbCPTM.cxx:1074
 TMrbCPTM.cxx:1075
 TMrbCPTM.cxx:1076
 TMrbCPTM.cxx:1077
 TMrbCPTM.cxx:1078
 TMrbCPTM.cxx:1079
 TMrbCPTM.cxx:1080
 TMrbCPTM.cxx:1081
 TMrbCPTM.cxx:1082
 TMrbCPTM.cxx:1083
 TMrbCPTM.cxx:1084
 TMrbCPTM.cxx:1085
 TMrbCPTM.cxx:1086
 TMrbCPTM.cxx:1087
 TMrbCPTM.cxx:1088
 TMrbCPTM.cxx:1089
 TMrbCPTM.cxx:1090
 TMrbCPTM.cxx:1091
 TMrbCPTM.cxx:1092
 TMrbCPTM.cxx:1093
 TMrbCPTM.cxx:1094
 TMrbCPTM.cxx:1095
 TMrbCPTM.cxx:1096
 TMrbCPTM.cxx:1097
 TMrbCPTM.cxx:1098
 TMrbCPTM.cxx:1099
 TMrbCPTM.cxx:1100
 TMrbCPTM.cxx:1101
 TMrbCPTM.cxx:1102
 TMrbCPTM.cxx:1103
 TMrbCPTM.cxx:1104
 TMrbCPTM.cxx:1105
 TMrbCPTM.cxx:1106
 TMrbCPTM.cxx:1107
 TMrbCPTM.cxx:1108
 TMrbCPTM.cxx:1109
 TMrbCPTM.cxx:1110
 TMrbCPTM.cxx:1111
 TMrbCPTM.cxx:1112
 TMrbCPTM.cxx:1113
 TMrbCPTM.cxx:1114
 TMrbCPTM.cxx:1115
 TMrbCPTM.cxx:1116
 TMrbCPTM.cxx:1117
 TMrbCPTM.cxx:1118
 TMrbCPTM.cxx:1119
 TMrbCPTM.cxx:1120
 TMrbCPTM.cxx:1121
 TMrbCPTM.cxx:1122
 TMrbCPTM.cxx:1123
 TMrbCPTM.cxx:1124
 TMrbCPTM.cxx:1125
 TMrbCPTM.cxx:1126
 TMrbCPTM.cxx:1127
 TMrbCPTM.cxx:1128
 TMrbCPTM.cxx:1129
 TMrbCPTM.cxx:1130
 TMrbCPTM.cxx:1131
 TMrbCPTM.cxx:1132
 TMrbCPTM.cxx:1133
 TMrbCPTM.cxx:1134
 TMrbCPTM.cxx:1135
 TMrbCPTM.cxx:1136
 TMrbCPTM.cxx:1137
 TMrbCPTM.cxx:1138
 TMrbCPTM.cxx:1139
 TMrbCPTM.cxx:1140
 TMrbCPTM.cxx:1141
 TMrbCPTM.cxx:1142
 TMrbCPTM.cxx:1143
 TMrbCPTM.cxx:1144
 TMrbCPTM.cxx:1145
 TMrbCPTM.cxx:1146
 TMrbCPTM.cxx:1147
 TMrbCPTM.cxx:1148
 TMrbCPTM.cxx:1149
 TMrbCPTM.cxx:1150
 TMrbCPTM.cxx:1151
 TMrbCPTM.cxx:1152
 TMrbCPTM.cxx:1153
 TMrbCPTM.cxx:1154
 TMrbCPTM.cxx:1155
 TMrbCPTM.cxx:1156
 TMrbCPTM.cxx:1157
 TMrbCPTM.cxx:1158
 TMrbCPTM.cxx:1159
 TMrbCPTM.cxx:1160
 TMrbCPTM.cxx:1161
 TMrbCPTM.cxx:1162
 TMrbCPTM.cxx:1163
 TMrbCPTM.cxx:1164
 TMrbCPTM.cxx:1165
 TMrbCPTM.cxx:1166
 TMrbCPTM.cxx:1167
 TMrbCPTM.cxx:1168
 TMrbCPTM.cxx:1169
 TMrbCPTM.cxx:1170
 TMrbCPTM.cxx:1171
 TMrbCPTM.cxx:1172
 TMrbCPTM.cxx:1173
 TMrbCPTM.cxx:1174
 TMrbCPTM.cxx:1175
 TMrbCPTM.cxx:1176
 TMrbCPTM.cxx:1177
 TMrbCPTM.cxx:1178
 TMrbCPTM.cxx:1179
 TMrbCPTM.cxx:1180
 TMrbCPTM.cxx:1181
 TMrbCPTM.cxx:1182
 TMrbCPTM.cxx:1183
 TMrbCPTM.cxx:1184
 TMrbCPTM.cxx:1185
 TMrbCPTM.cxx:1186
 TMrbCPTM.cxx:1187
 TMrbCPTM.cxx:1188
 TMrbCPTM.cxx:1189
 TMrbCPTM.cxx:1190
 TMrbCPTM.cxx:1191
 TMrbCPTM.cxx:1192
 TMrbCPTM.cxx:1193
 TMrbCPTM.cxx:1194
 TMrbCPTM.cxx:1195
 TMrbCPTM.cxx:1196
 TMrbCPTM.cxx:1197
 TMrbCPTM.cxx:1198
 TMrbCPTM.cxx:1199
 TMrbCPTM.cxx:1200
 TMrbCPTM.cxx:1201
 TMrbCPTM.cxx:1202
 TMrbCPTM.cxx:1203
 TMrbCPTM.cxx:1204
 TMrbCPTM.cxx:1205
 TMrbCPTM.cxx:1206
 TMrbCPTM.cxx:1207
 TMrbCPTM.cxx:1208
 TMrbCPTM.cxx:1209
 TMrbCPTM.cxx:1210
 TMrbCPTM.cxx:1211
 TMrbCPTM.cxx:1212
 TMrbCPTM.cxx:1213
 TMrbCPTM.cxx:1214
 TMrbCPTM.cxx:1215
 TMrbCPTM.cxx:1216
 TMrbCPTM.cxx:1217
 TMrbCPTM.cxx:1218
 TMrbCPTM.cxx:1219
 TMrbCPTM.cxx:1220
 TMrbCPTM.cxx:1221
 TMrbCPTM.cxx:1222
 TMrbCPTM.cxx:1223
 TMrbCPTM.cxx:1224
 TMrbCPTM.cxx:1225
 TMrbCPTM.cxx:1226
 TMrbCPTM.cxx:1227
 TMrbCPTM.cxx:1228
 TMrbCPTM.cxx:1229
 TMrbCPTM.cxx:1230
 TMrbCPTM.cxx:1231
 TMrbCPTM.cxx:1232
 TMrbCPTM.cxx:1233
 TMrbCPTM.cxx:1234
 TMrbCPTM.cxx:1235
 TMrbCPTM.cxx:1236
 TMrbCPTM.cxx:1237
 TMrbCPTM.cxx:1238
 TMrbCPTM.cxx:1239
 TMrbCPTM.cxx:1240
 TMrbCPTM.cxx:1241
 TMrbCPTM.cxx:1242
 TMrbCPTM.cxx:1243
 TMrbCPTM.cxx:1244
 TMrbCPTM.cxx:1245
 TMrbCPTM.cxx:1246
 TMrbCPTM.cxx:1247
 TMrbCPTM.cxx:1248
 TMrbCPTM.cxx:1249
 TMrbCPTM.cxx:1250
 TMrbCPTM.cxx:1251
 TMrbCPTM.cxx:1252
 TMrbCPTM.cxx:1253
 TMrbCPTM.cxx:1254
 TMrbCPTM.cxx:1255
 TMrbCPTM.cxx:1256
 TMrbCPTM.cxx:1257
 TMrbCPTM.cxx:1258
 TMrbCPTM.cxx:1259
 TMrbCPTM.cxx:1260
 TMrbCPTM.cxx:1261
 TMrbCPTM.cxx:1262
 TMrbCPTM.cxx:1263
 TMrbCPTM.cxx:1264
 TMrbCPTM.cxx:1265
 TMrbCPTM.cxx:1266
 TMrbCPTM.cxx:1267
 TMrbCPTM.cxx:1268
 TMrbCPTM.cxx:1269
 TMrbCPTM.cxx:1270
 TMrbCPTM.cxx:1271
 TMrbCPTM.cxx:1272
 TMrbCPTM.cxx:1273
 TMrbCPTM.cxx:1274
 TMrbCPTM.cxx:1275
 TMrbCPTM.cxx:1276
 TMrbCPTM.cxx:1277
 TMrbCPTM.cxx:1278
 TMrbCPTM.cxx:1279
 TMrbCPTM.cxx:1280
 TMrbCPTM.cxx:1281
 TMrbCPTM.cxx:1282
 TMrbCPTM.cxx:1283
 TMrbCPTM.cxx:1284
 TMrbCPTM.cxx:1285
 TMrbCPTM.cxx:1286
 TMrbCPTM.cxx:1287
 TMrbCPTM.cxx:1288
 TMrbCPTM.cxx:1289
 TMrbCPTM.cxx:1290
 TMrbCPTM.cxx:1291
 TMrbCPTM.cxx:1292
 TMrbCPTM.cxx:1293
 TMrbCPTM.cxx:1294
 TMrbCPTM.cxx:1295
 TMrbCPTM.cxx:1296
 TMrbCPTM.cxx:1297
 TMrbCPTM.cxx:1298
 TMrbCPTM.cxx:1299
 TMrbCPTM.cxx:1300
 TMrbCPTM.cxx:1301
 TMrbCPTM.cxx:1302
 TMrbCPTM.cxx:1303
 TMrbCPTM.cxx:1304
 TMrbCPTM.cxx:1305
 TMrbCPTM.cxx:1306
 TMrbCPTM.cxx:1307
 TMrbCPTM.cxx:1308
 TMrbCPTM.cxx:1309
 TMrbCPTM.cxx:1310
 TMrbCPTM.cxx:1311
 TMrbCPTM.cxx:1312
 TMrbCPTM.cxx:1313
 TMrbCPTM.cxx:1314
 TMrbCPTM.cxx:1315
 TMrbCPTM.cxx:1316
 TMrbCPTM.cxx:1317
 TMrbCPTM.cxx:1318
 TMrbCPTM.cxx:1319
 TMrbCPTM.cxx:1320
 TMrbCPTM.cxx:1321
 TMrbCPTM.cxx:1322
 TMrbCPTM.cxx:1323
 TMrbCPTM.cxx:1324
 TMrbCPTM.cxx:1325
 TMrbCPTM.cxx:1326
 TMrbCPTM.cxx:1327
 TMrbCPTM.cxx:1328
 TMrbCPTM.cxx:1329
 TMrbCPTM.cxx:1330
 TMrbCPTM.cxx:1331
 TMrbCPTM.cxx:1332
 TMrbCPTM.cxx:1333
 TMrbCPTM.cxx:1334
 TMrbCPTM.cxx:1335
 TMrbCPTM.cxx:1336
 TMrbCPTM.cxx:1337
 TMrbCPTM.cxx:1338
 TMrbCPTM.cxx:1339
 TMrbCPTM.cxx:1340
 TMrbCPTM.cxx:1341
 TMrbCPTM.cxx:1342
 TMrbCPTM.cxx:1343
 TMrbCPTM.cxx:1344
 TMrbCPTM.cxx:1345
 TMrbCPTM.cxx:1346
 TMrbCPTM.cxx:1347
 TMrbCPTM.cxx:1348
 TMrbCPTM.cxx:1349
 TMrbCPTM.cxx:1350
 TMrbCPTM.cxx:1351
 TMrbCPTM.cxx:1352
 TMrbCPTM.cxx:1353
 TMrbCPTM.cxx:1354
 TMrbCPTM.cxx:1355
 TMrbCPTM.cxx:1356
 TMrbCPTM.cxx:1357
 TMrbCPTM.cxx:1358
 TMrbCPTM.cxx:1359
 TMrbCPTM.cxx:1360
 TMrbCPTM.cxx:1361
 TMrbCPTM.cxx:1362
 TMrbCPTM.cxx:1363
 TMrbCPTM.cxx:1364
 TMrbCPTM.cxx:1365
 TMrbCPTM.cxx:1366
 TMrbCPTM.cxx:1367
 TMrbCPTM.cxx:1368
 TMrbCPTM.cxx:1369
 TMrbCPTM.cxx:1370
 TMrbCPTM.cxx:1371
 TMrbCPTM.cxx:1372
 TMrbCPTM.cxx:1373
 TMrbCPTM.cxx:1374
 TMrbCPTM.cxx:1375
 TMrbCPTM.cxx:1376
 TMrbCPTM.cxx:1377
 TMrbCPTM.cxx:1378
 TMrbCPTM.cxx:1379
 TMrbCPTM.cxx:1380
 TMrbCPTM.cxx:1381
 TMrbCPTM.cxx:1382
 TMrbCPTM.cxx:1383
 TMrbCPTM.cxx:1384
 TMrbCPTM.cxx:1385
 TMrbCPTM.cxx:1386
 TMrbCPTM.cxx:1387
 TMrbCPTM.cxx:1388
 TMrbCPTM.cxx:1389
 TMrbCPTM.cxx:1390
 TMrbCPTM.cxx:1391
 TMrbCPTM.cxx:1392
 TMrbCPTM.cxx:1393
 TMrbCPTM.cxx:1394
 TMrbCPTM.cxx:1395
 TMrbCPTM.cxx:1396
 TMrbCPTM.cxx:1397
 TMrbCPTM.cxx:1398
 TMrbCPTM.cxx:1399
 TMrbCPTM.cxx:1400
 TMrbCPTM.cxx:1401
 TMrbCPTM.cxx:1402
 TMrbCPTM.cxx:1403
 TMrbCPTM.cxx:1404
 TMrbCPTM.cxx:1405
 TMrbCPTM.cxx:1406
 TMrbCPTM.cxx:1407
 TMrbCPTM.cxx:1408
 TMrbCPTM.cxx:1409
 TMrbCPTM.cxx:1410
 TMrbCPTM.cxx:1411
 TMrbCPTM.cxx:1412
 TMrbCPTM.cxx:1413
 TMrbCPTM.cxx:1414
 TMrbCPTM.cxx:1415
 TMrbCPTM.cxx:1416
 TMrbCPTM.cxx:1417
 TMrbCPTM.cxx:1418
 TMrbCPTM.cxx:1419
 TMrbCPTM.cxx:1420
 TMrbCPTM.cxx:1421
 TMrbCPTM.cxx:1422
 TMrbCPTM.cxx:1423
 TMrbCPTM.cxx:1424
 TMrbCPTM.cxx:1425
 TMrbCPTM.cxx:1426
 TMrbCPTM.cxx:1427
 TMrbCPTM.cxx:1428
 TMrbCPTM.cxx:1429
 TMrbCPTM.cxx:1430
 TMrbCPTM.cxx:1431
 TMrbCPTM.cxx:1432
 TMrbCPTM.cxx:1433
 TMrbCPTM.cxx:1434
 TMrbCPTM.cxx:1435
 TMrbCPTM.cxx:1436
 TMrbCPTM.cxx:1437
 TMrbCPTM.cxx:1438
 TMrbCPTM.cxx:1439
 TMrbCPTM.cxx:1440
 TMrbCPTM.cxx:1441
 TMrbCPTM.cxx:1442
 TMrbCPTM.cxx:1443
 TMrbCPTM.cxx:1444
 TMrbCPTM.cxx:1445
 TMrbCPTM.cxx:1446
 TMrbCPTM.cxx:1447
 TMrbCPTM.cxx:1448
 TMrbCPTM.cxx:1449
 TMrbCPTM.cxx:1450
 TMrbCPTM.cxx:1451
 TMrbCPTM.cxx:1452
 TMrbCPTM.cxx:1453
 TMrbCPTM.cxx:1454
 TMrbCPTM.cxx:1455
 TMrbCPTM.cxx:1456
 TMrbCPTM.cxx:1457
 TMrbCPTM.cxx:1458
 TMrbCPTM.cxx:1459
 TMrbCPTM.cxx:1460
 TMrbCPTM.cxx:1461
 TMrbCPTM.cxx:1462
 TMrbCPTM.cxx:1463
 TMrbCPTM.cxx:1464
 TMrbCPTM.cxx:1465
 TMrbCPTM.cxx:1466
 TMrbCPTM.cxx:1467
 TMrbCPTM.cxx:1468
 TMrbCPTM.cxx:1469
 TMrbCPTM.cxx:1470
 TMrbCPTM.cxx:1471
 TMrbCPTM.cxx:1472
 TMrbCPTM.cxx:1473
 TMrbCPTM.cxx:1474
 TMrbCPTM.cxx:1475
 TMrbCPTM.cxx:1476
 TMrbCPTM.cxx:1477
 TMrbCPTM.cxx:1478
 TMrbCPTM.cxx:1479
 TMrbCPTM.cxx:1480
 TMrbCPTM.cxx:1481
 TMrbCPTM.cxx:1482
 TMrbCPTM.cxx:1483
 TMrbCPTM.cxx:1484
 TMrbCPTM.cxx:1485
 TMrbCPTM.cxx:1486
 TMrbCPTM.cxx:1487
 TMrbCPTM.cxx:1488
 TMrbCPTM.cxx:1489
 TMrbCPTM.cxx:1490
 TMrbCPTM.cxx:1491
 TMrbCPTM.cxx:1492
 TMrbCPTM.cxx:1493
 TMrbCPTM.cxx:1494
 TMrbCPTM.cxx:1495
 TMrbCPTM.cxx:1496
 TMrbCPTM.cxx:1497
 TMrbCPTM.cxx:1498
 TMrbCPTM.cxx:1499
 TMrbCPTM.cxx:1500
 TMrbCPTM.cxx:1501
 TMrbCPTM.cxx:1502
 TMrbCPTM.cxx:1503
 TMrbCPTM.cxx:1504
 TMrbCPTM.cxx:1505
 TMrbCPTM.cxx:1506
 TMrbCPTM.cxx:1507
 TMrbCPTM.cxx:1508
 TMrbCPTM.cxx:1509
 TMrbCPTM.cxx:1510
 TMrbCPTM.cxx:1511
 TMrbCPTM.cxx:1512
 TMrbCPTM.cxx:1513
 TMrbCPTM.cxx:1514
 TMrbCPTM.cxx:1515
 TMrbCPTM.cxx:1516
 TMrbCPTM.cxx:1517
 TMrbCPTM.cxx:1518
 TMrbCPTM.cxx:1519
 TMrbCPTM.cxx:1520
 TMrbCPTM.cxx:1521
 TMrbCPTM.cxx:1522
 TMrbCPTM.cxx:1523
 TMrbCPTM.cxx:1524
 TMrbCPTM.cxx:1525
 TMrbCPTM.cxx:1526
 TMrbCPTM.cxx:1527
 TMrbCPTM.cxx:1528
 TMrbCPTM.cxx:1529
 TMrbCPTM.cxx:1530
 TMrbCPTM.cxx:1531
 TMrbCPTM.cxx:1532
 TMrbCPTM.cxx:1533
 TMrbCPTM.cxx:1534
 TMrbCPTM.cxx:1535
 TMrbCPTM.cxx:1536
 TMrbCPTM.cxx:1537
 TMrbCPTM.cxx:1538
 TMrbCPTM.cxx:1539
 TMrbCPTM.cxx:1540
 TMrbCPTM.cxx:1541
 TMrbCPTM.cxx:1542
 TMrbCPTM.cxx:1543
 TMrbCPTM.cxx:1544
 TMrbCPTM.cxx:1545
 TMrbCPTM.cxx:1546
 TMrbCPTM.cxx:1547
 TMrbCPTM.cxx:1548
 TMrbCPTM.cxx:1549
 TMrbCPTM.cxx:1550
 TMrbCPTM.cxx:1551
 TMrbCPTM.cxx:1552
 TMrbCPTM.cxx:1553
 TMrbCPTM.cxx:1554