#ifndef __CREATEHADES__ #define __CREATEHADES__ #include "hades.h" #include "hruntimedb.h" #include "hdatasource.h" #include "hrootsource.h" #include "hparora2io.h" #include "hparasciifileio.h" #include "hparrootfileio.h" #include "htask.h" #include "htaskset.h" #include "hspectrometer.h" #include "hstart2detector.h" #include "htboxdetector.h" #include "hrichdetector.h" #include "hmdcdetector.h" #include "htofdetector.h" #include "hshowerdetector.h" #include "hrpcdetector.h" #include "hstarttaskset.h" #include "hrichtaskset.h" #include "hmdctaskset.h" #include "htoftaskset.h" #include "hshowertaskset.h" #include "hrpctaskset.h" #include "hsplinetaskset.h" #include "hparticlecandfiller.h" #include "hparticletrackcleaner.h" #include "hparticleevtinfofiller.h" #include "hmdcsetup.h" #include "hmdclayercorrpar.h" #include "hmdctrackdset.h" #include "hmdc34clfinder.h" #include "hmdcidealtracking.h" #include "hmdcsizescells.h" #include "hmdcgetcontainers.h" #include "hedhelpers.h" #include "TOrdCollection.h" Bool_t createHades() { TString inputDir = "/lustre/hades/user/kempter/AuAu/geant/bmax4omega/"; TString inputFile = "Au_Au_1500MeV_omega_1000evts_1_1.root"; Int_t refId = 11100; TString asciiParFile1="/misc/kempter/projects/eventdisplay/tatyana/missing_params_sim_14042011.txt"; TString rootParFile1 = ""; TString paramSource = "ORACLE, ASCII"; // ORACLE, ASCII, ROOT cout<<"-----------------------------------------------------------------------------"<setTreeBufferSize(8000); gHades->setQuietMode(2); gHades->makeCounter(1); HRuntimeDb* rtdb = gHades->getRuntimeDb(); // ------------ Set input data file: NO NEED TO CHANGE -------------- HRootSource *source=new HRootSource; source->replaceHeaderVersion(0,kTRUE); source->setDirectory(((Text_t *)inputDir.Data())); source->addFile((Text_t *)inputFile.Data()); source->setGlobalRefId(refId); gHades->setDataSource(source); //-------------------------------------------------------------------- // ----------Add detectors to the setup: NO NEED TO CHANGE ----------- //----------------- Detector setup configuration --------------------- Int_t richMods[] = {1}; Int_t mdcMods[6][4] = { {1,1,1,1}, {1,1,1,1}, {1,1,1,1}, {1,1,1,1}, {1,1,1,1}, {1,1,1,1} }; Int_t rpcMods[] = {1}; Int_t tofMods[22] = {1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; Int_t showerMods[3] = {1,2,3}; HSpectrometer* spec = gHades->getSetup(); spec->addDetector(new HRichDetector); spec->addDetector(new HMdcDetector); spec->addDetector(new HRpcDetector); spec->addDetector(new HTofDetector); spec->addDetector(new HShowerDetector); spec->addDetector(new HStart2Detector); spec->addDetector(new HTBoxDetector); // ----- Set active modules for each detector: NO NEED TO CHANGE ----- for (Int_t is = 0; is < 6; is ++) { spec->getDetector("Rpc")->setModules(is,rpcMods); spec->getDetector("Shower")->setModules(is,showerMods); spec->getDetector("Tof")->setModules(is,tofMods); spec->getDetector("Mdc")->setModules(is,mdcMods[is]); spec->getDetector("Rich")->setModules(is,richMods); } //-------------------------------------------------------------------- //-------------------------------------------------------------------- // PARAMETER SOURCES if (paramSource.Contains("ROOT")) { HParRootFileIo *input1=new HParRootFileIo; input1->open(((Char_t *)rootParFile1.Data()),"READ"); if (paramSource.Contains("ASCII")){ rtdb->setSecondInput(input1); } else { rtdb->setFirstInput(input1); } } if (paramSource.Contains("ASCII")) { HParAsciiFileIo *input2 = new HParAsciiFileIo(); input2->open((Text_t*)asciiParFile1.Data(),"in"); rtdb->setFirstInput(input2); } // ----- SECOND PARAM INPUT FOR PID if (paramSource.Contains("ORACLE")) { HParOra2Io* ora=new HParOra2Io; ora->open(); ora->setHistoryDate("now"); rtdb->setSecondInput(ora); } //-------------------------------------------------------------------- //-------------------------------------------------------------------- // ALIGNMENT OF WIRE PLANES HMdcLayerCorrPar* fMdcLayerCorrPar = (HMdcLayerCorrPar*)rtdb->getContainer("MdcLayerCorrPar"); // fMdcLayerCorrPar->setDefaultPar(); fMdcLayerCorrPar->setStatic(); //-------------------------------------------------------------------- // ----------- Build TASK SETS (using H***TaskSet::make) ------------- HRichTaskSet *richTaskSet = new HRichTaskSet(); HRpcTaskSet *rpcTaskSet = new HRpcTaskSet(); HShowerTaskSet *showerTaskSet = new HShowerTaskSet(); HTofTaskSet *tofTaskSet = new HTofTaskSet(); HMdcTaskSet *mdcTaskSet = new HMdcTaskSet(); mdcTaskSet->setVersionDeDx(1); // 0 = no dEdx, 1 = HMdcDeDx2 HTask *richTasks = richTaskSet ->make("simulation","noiseon"); //HTask *richTasks = richTaskSet ->make("simulation","noiseoff"); HTask *tofTasks = tofTaskSet ->make("simulation"); HTask *rpcTasks = rpcTaskSet ->make("simulation"); HTask *showerTasks = showerTaskSet ->make("","simulation,magneton,hit"); // ----------- MDC ------------------------------------------------------ HMdcSetup* setup = (HMdcSetup*)rtdb->getContainer("MdcSetup"); rtdb->initContainers(refId); setup->setStatic(); //setup->getMdcCommonSet()->setAnalysisLevel(1); HTask *mdcTasks = mdcTaskSet ->make("rtdb",""); HMdcIdealTracking *mdcidealtrackTasks = new HMdcIdealTracking("idealtrack","idealtrack"); // mdcidealtrackTasks->fillParallelCategories(); //----------------SPLINE and RUNGE TACKING---------------------------------------- HSplineTaskSet *splineTaskSet = new HSplineTaskSet("",""); HTask *splineTasks=splineTaskSet->make("","spline,runge"); //----------------------------------------------------------------------- //HParticleCandFiller *pParticleCandFiller = new HParticleCandFiller("particlecandfiller","particlecandfiller","debug,goodseg0,goodseg1,goodmeta,goodrk"); HParticleCandFiller *pParticleCandFiller = new HParticleCandFiller ("particlecandfiller","particlecandfiller",""); HParticleTrackCleaner *pParticleCleaner = new HParticleTrackCleaner("particlecleaner" ,"particlecleaner"); HParticleEvtInfoFiller *pParticleEvtInfo = new HParticleEvtInfoFiller("particleevtinfo" ,"particleevtinfo"); //------------------------ Master task set -------------------------- HTaskSet *masterTaskSet = gHades->getTaskSet("simulation"); masterTaskSet->add(tofTasks); masterTaskSet->add(rpcTasks); masterTaskSet->add(richTasks); masterTaskSet->add(showerTasks); masterTaskSet->add(mdcTasks); //masterTaskSet->add(mdcidealtrackTasks); masterTaskSet->add(splineTasks); masterTaskSet->add(pParticleCandFiller); masterTaskSet->add(pParticleCleaner); masterTaskSet->add(pParticleEvtInfo); //-------------------------------------------------------------------- // Get Parameter containers for transformations // This taks is needed to get the parameter // containers for coordinate transformations // of the detector hits for the event display masterTaskSet->add(new HEDMakeContainers()); //-------------------------------------------------------------------- masterTaskSet->isTimed(kTRUE); Bool_t hasTracking = kFALSE; HTaskSet* set = (HTaskSet*) gHades->getTaskSet("simulation")->getSetOfTask()->FindObject("Mdc"); if(set && set->getSetOfTask()->FindObject("mdc.hitf")) hasTracking = kTRUE; if(!hasTracking){ set = (HTaskSet*) gHades->getTaskSet("real")->getSetOfTask()->FindObject("Mdc"); if(set && set->getSetOfTask()->FindObject("mdc.hitf")) hasTracking = kTRUE; } if(hasTracking){ cout<<"EVENT DISPLAY : TRACKING IS RUNNING #########################################"<init()) { cerr<<"EVENT DISPLAY : ERROR IN INIT, EXITING! #####################################"<