#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 "hdst.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 "hwalldetector.h" #include "hstarttaskset.h" #include "hrichtaskset.h" #include "hmdctaskset.h" #include "htoftaskset.h" #include "hshowertaskset.h" #include "hrpctaskset.h" #include "hsplinetaskset.h" #include "hwalltaskset.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 inputFile = "/misc/hadessoftware/etch32/input_eventdisplay/Au_Au_1230MeV_omega_lambda_10evts_1_1.root"; Int_t refId = 12001; // apr12sim_mediumfieldalign_auau; TString asciiParFile =""; TString rootParFile = "/u/hadesdst/sim/apr12/dst/params/allParam_APR12_sim_run_12001_06082012.root"; TString paramSource = "root"; // oracle, ascii, root cout<<"-----------------------------------------------------------------------------"<setTreeBufferSize(8000); gHades->setQuietMode(2); gHades->makeCounter(1); HRuntimeDb* rtdb = gHades->getRuntimeDb(); 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} }; // recommendations from Vladimir+Olga // according to params from 28.04.2011 Int_t nLayers[6][4] = { {6,6,5,6}, {6,6,5,6}, {6,6,5,6}, {6,6,5,6}, {6,6,5,6}, {6,6,5,6} }; Int_t nLevel[4] = {10,50000,10,5000}; HDst::setupSpectrometer("apr12",mdcMods,"rich,mdc,tof,rpc,shower,wall"); // beamtime mdcMods_apr12, mdcMods_full // Int_t mdcset[6][4] setup mdc. If not used put NULL (default). // if not NULL it will overwrite settings given by beamtime // detectors (default)= rich,mdc,tof,rpc,shower,wall,tbox,start HDst::setupParameterSources(paramSource,asciiParFile,rootParFile,"now"); //HDst::setupParameterSources("oracle",asciiParFile,rootParFile,"now"); // use to create param file // parsource = oracle,ascii,root (order matters) // if source is "ascii" a ascii param file has to provided // if source is "root" a root param file has to provided // The histDate paramter (default "now") is used wit the oracle source HDst::setDataSource(3,"",inputFile, -1 ,""); // datasource 0 = hld, 1 = hldgrep 2 = hldremote, 3 root // like "lxhadeb02.gsi.de" needed by dataosoure = 2 // inputDir needed by dataosoure = 1,2 // inputFile needed by dataosoure = 1,3 //-------------------------------------------------------------------- // 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(); HWallTaskSet *wallTaskSet = new HWallTaskSet(); 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 *wallTasks = wallTaskSet ->make("simulation"); HTask *showerTasks = showerTaskSet ->make("","simulation,magneton,hit"); // ----------- MDC ------------------------------------------------------ HMdcSetup* mysetup = (HMdcSetup*)rtdb->getContainer("MdcSetup"); mysetup->getMdcCommonSet()->setAnalysisLevel(4); // fit mysetup->getMdcCalibrater1Set()->setMdcCalibrater1Set(1, 1); // 1 = NoStartandCal, 2 = StartandCal, 3 = NoStartandNoCal :: 0 = noTimeCut, 1 = TimeCut mysetup->getMdcTrackFinderSet()->setIsCoilOff(kFALSE); // field is on mysetup->getMdcTrackFinderSet()->setNLayers(nLayers[0]); mysetup->getMdcTrackFinderSet()->setNLevel(nLevel); mysetup->getMdc12FitSet()->setMdc12FitSet(2,1,0,kFALSE,kFALSE); // tuned fitter, seg rtdb->initContainers(refId); mysetup->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(wallTasks); //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! #####################################"<