Usage

Under:
The cluster finder can run in many different chains. The basic modes of running it are:
  1. bfc chain: This is the usual STAR reconstruction chain for real data and simulation.
  2. standard chain: this is the most common way of running the cluster finder. The cluster finder runs with real data and simulated data.
  3. embedding chain
There are some rules a user needs to follow in order to run the cluster finder properly:
  1. Include the file $STAR/StRoot/StPreEclMaker/EmcClusterAlgorithm.h in order to define the cluster algorithm enumerator
  2. Need to load the shared libraries
  3. StPreEclMaker should run *AFTER* the BEMC hits are created (StADCtoEMaker or StEmcSimulatorMaker)
  4. The cluster algorithm should be defined *BEFORE* Init() method is called
  5. Any change in the cluster parameters should be done *AFTER* Init() is called.
The following is an example on how to run the cluster finder in a standard chain:
// include the definitions of the algorithms
#include "StRoot/StPreEclMaker/EmcClusterAlgorithm.h"

class StChain;
StChain *chain=0;

void DoMicroDst(char* list = "./file.lis",
                int nFiles = 10, int nevents = 2000)
{
  gROOT->LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C");
  loadSharedLibraries();
  gSystem->Load("StDbUtilities");
  gSystem->Load("StDbLib");
  gSystem->Load("StDbBroker");
  gSystem->Load("St_db_Maker");
  gSystem->Load("libgeometry_Tables");
  gSystem->Load("StDaqLib");
  gSystem->Load("StEmcRawMaker");
  gSystem->Load("StEmcADCtoEMaker");

  // create chain
  chain = new StChain("StChain");

  // Now we add Makers to the chain...
  maker = new StMuDstMaker(0,0,"",list,"",nFiles);
  StMuDbReader* db = StMuDbReader::instance();
  StMuDst2StEventMaker *m = new StMuDst2StEventMaker();
  St_db_Maker *dbMk = new St_db_Maker("StarDb","MySQL:StarDb");

  StEmcADCtoEMaker *adc=new StEmcADCtoEMaker();
  adc->setPrint(kFALSE);

  StPreEclMaker *ecl=new StPreEclMaker(); // instantiate the maker
  ecl->setAlgorithm(kEmcClDefault); // set the algorithm
  ecl->setPrint(kFALSE); // disables printing

  chain->Init();

  StEmcOldFinder* finder = (StEmcOldFinder*)ecl->finder(); // gets pointer to the finder
  finder->setEnergySeed(1,0.8); // change some setting in the finder

  int n=0;
  int stat=0;
  int count = 1;
  TMemStat memory;

  while ( (stat==0 || stat==1) && n<nevents)
  {
    chain->Clear();
    stat = chain->Make();
    n++;
  }
  chain->Finish();
}