Hi,
I am having difficulties trying to use the bratmain program. Some
background--
what I really want is the functionality of the the TestGeantDig routine
that didn't make
it into brat2. Reading the brat2 document, there is a suggestion that
users wanting
to do what TestGeantDig accomplished need to write their own macros to
work with
bratmain. OK. Before starting on an entirely new macro I thought I
would try out
bratmain using a slightly modified version of Christian's CentMacro.C
program. I'm
attaching the file that I'm running at the end of this message.
This file runs fine interactively. That is
// promtp% bratroot
// brat [0] .x Config.C
// brat [1] BrMainModule::Instance()->Main();
works as expected.
I was expecting to be able to just run bratmain (with Config.C in
current directory) to accomplish the same thing. However, when I try
this the program runs through
and exits, apparently never looping over any events. There are no error
messages.
Christian, what am I missing?
Thanks, Steve
---Listing of Config.C---
{
#include <stdio.h>
#include <iostream>
//==================================================================
//
// Some local variables
//
Int_t maxEvents = 1000000;
Int_t runNo = 2336;
const Char_t* geomFile = "mrs_90.geo";
const Char_t* inputFile = "data/run002336seq000.dat";
const Char_t* outputFile = "output.root";
const Char_t* histFile = "histograms.root";
Int_t nInputs = 1;
Int_t debug = 0;
Int_t verbose = 0;
//==================================================================
//
// Our various managers.
//
BrParameterDbManager* fParamDBManager
= BrParameterDbManager::Instance();
fParamDBManager->SetDbParameterFileName("DetectorParameters.txt");
BrGeometryDbManager* geom =
BrGeometryDbManager::Instance();
geom->SetDbFileName(geomFile);
//__________________________________________________________________
//
// Temporary hack for Tile, Silicon, and Centrality calibrations
//
BrTileTmpCalibration* tileCalib = BrTileTmpCalibration::Instance();
tileCalib->ReadASCIIFile(runNo);
BrSiTmpCalibration* siCalib = BrSiTmpCalibration::Instance();
siCalib->ReadASCIIFile(runNo);
BrMultCentTmpCalibration * centCalib =
BrMultCentTmpCalibration::Instance();
//==================================================================
//
// Our main module container.
//
BrMainModule* mainModule = new
BrMainModule("CentMainModule", "Centrality config",
"Steve Sanders", 0, 1, 0);
mainModule->SetMaxEvents(maxEvents);
mainModule->SetMaxRuns(nInputs);
//==================================================================
//
// Now for our modules
//
// Our input module
//
BrIOModule* inputModule =
new BrRawDataInput("rawInput", "Raw Data Input");
if (nInputs == 1) {
// For one input file
inputModule->SetIOMode(BrIOModule::kBrJobFile|
BrRawDataInput::kBrRawDiskFile);
inputModule->AddFile(inputFile);
cout<<"Replay: "<<inputFile<<endl;
}
else {
// If we wanted more than one input file we could do
inputModule->SetIOMode(BrIOModule::kBrRunFile|
BrRawDataInput::kBrRawDiskFile);
char* baseName[128];
for (Int_t i = 0; i < nInputs; i++) {
sprintf(baseName, "data/run%06dseq%03d.dat", runNo, i);
cout<<baseName<<endl;
inputModule->AddFile(baseName);
}
}
// We can easly add BrIOModules to a container!
mainModule->AddModule(inputModule);
//__________________________________________________________________
//
// Histogram module to make sure we get hsitograms the right
// place.
//
BrHistIOModule* histModule =
new BrHistIOModule("histograms", "Some histograms");
histModule->AddFile(histFile);
mainModule->AddModule(histModule);
mainModule->SetHistOn();
//__________________________________________________________________
//
// Trigger filter to select some specific triggers
//
BrTriggerFilter* trigModule =
new BrTriggerFilter("trigModule", "Trigger Filter");
// trigModule->AddTrigger(1);
// trigModule->AddTrigger(4);
// trigModule->AddTrigger(5);
trigModule->AddTrigger(6);
mainModule->AddModule(trigModule);
//__________________________________________________________________
//
// ZDC module
//
BrZdcRdoModule* zdcModule = new BrZdcRdoModule("ZDC", "ZDC Reducer");
mainModule->AddModule(zdcModule);
//__________________________________________________________________
//
// BB module
//
BrBbRdoModule* bbModule = new BrBbRdoModule("BB","Beam-Beam Reducer");
mainModule->AddModule(bbModule);
//__________________________________________________________________
//
// TPM1 seqeunce preprocessor
//
BrTPCPreProcess *preProcessor =
new BrTPCPreProcess("TPM1", "TPM1 Preprocessor");
mainModule->AddModule(preProcessor);
//__________________________________________________________________
//
// TPM1 cluster module
//
// Who ever made this module _must_ make sure that the
// BrTPCClusterFinder has the method
// Event(BrEventNode*, BrEventNode*)
// This is very VERY important!
BrTpcClusterFinder* tpm1clsModule
= new BrTpcClusterFinder("TPM1", "TPM1");
tpm1clsModule->SetMaxPixelCutoff(10);
mainModule->AddModule(tpm1clsModule);
//__________________________________________________________________
//
// TPM1 cluster vertex module
//
// Who ever wrote this should redefine the cosntructor to take only
// two arguments: The name and the title. The proper place to
// specify the name of the detector is in the name!
BrTPMClusterVertexModule* tmp1vtxModule =
new BrTPMClusterVertexModule("VTX", "VertexFinder","TPM1");
mainModule->AddModule(tmp1vtxModule);
//__________________________________________________________________
//
// TMA Module
//
BrTileRdoModule* tileModule =
new BrTileRdoModule("Tile","Tile Reducer");
tileModule->SetOutlierMethod(BrTileRdoModule::kNoCorrection);
mainModule->AddModule(tileModule);
//__________________________________________________________________
//
// SMA Module
//
BrSiRdoModule* siModule =
new BrSiRdoModule("Si","Si Reducer");
siModule->SetOutlierMethod(BrSiRdoModule::kNoCorrection);
mainModule->AddModule(siModule);
//__________________________________________________________________
//
// Cent Module
//
BrMultCentModule * centModule =
new BrMultCentModule("MultCent","Cent Module");
BrSwitchContainer * multcentSwitcher =
new BrSwitchContainer("multcentSwitcher","Switcher for
BrMultCentModule");
multcentSwitcher->AddModule(centModule);
mainModule->AddModule(multcentSwitcher);
//__________________________________________________________________
//
// Output module
//
BrIOModule* outputModule =
new BrEventIO("ouputModule", "Output module");
outputModule->SetIOMode(BrIOModule::kBrJobFile|
BrIOModule::kBrRecreateFile);
outputModule->AddFile(outputFile);
mainModule->AddModule(outputModule);
//==================================================================
//
// That is it. Now we just need to tell what kind of debug and
// verbosity level we want.
//
// mainModule->SetDebug(debug);
mainModule->SetVerbose(verbose);
}
This archive was generated by hypermail 2b30 : Mon Jul 30 2001 - 14:17:25 EDT