00001
00002
00003
00004
00005
00006
00007
00008
00010
00011 class StChain;
00012 StChain *Chain=0;
00013 class StBFChain;
00014 StBFChain *chain1, *chain2, *chain3;
00015
00016 void bfcMixer_P07ic(const Int_t Nevents=1,Int_t isSvtIn=1, Int_t isSsdIn=0,
00017 const Char_t *daqfile="/star/rcf/test/daq/2005/051/st_physics_adc_6051006_raw_1050001.daq",
00018 const Char_t *tagfile="/star/rcf/test/embedding/cuProductionMinBias/FullField/P07ic/2005/051/st_physics_adc_6051006_raw_1050001.tags.root",
00019 const Float_t zvertex_low=-175.0,
00020 const Float_t zvertex_high=175.0,
00021 const Char_t *mode="strange",
00022 const Char_t *acc_mode="off") {
00023
00024 TString prodP07ib("P2005b DbV20070518 MakeEvent ITTF Iana ToF ssddat spt SsdIt SvtIt pmdRaw SCEbyE OGridLeak OShortR OSpaceZ2");
00025 TString geomP07ib("ry2005f");
00026 TString chain1Opt("in magF tpcDb NoDefault -ittf NoOutput");
00027 TString chain2Opt("NoInput PrepEmbed gen_T geomT sim_T trs -ittf -tpc_daq nodefault");
00028 chain2Opt += " "; chain2Opt += geomP07ib;
00029 TString chain3Opt = prodP07ib;
00030 chain3Opt += " Embedding onlraw GeantOut MiniMcMk McAna -in NoInput,useInTracker EmbeddingShortCut";
00031 if (isSvtIn) chain3Opt += " SvtEmbed";
00032 chain3Opt += " "; chain3Opt += geomP07ib;
00033
00034 gROOT->LoadMacro("bfc.C");
00035 if (gClassTable->GetID("StBFChain") < 0) Load();
00036
00037 Chain = new StChain("Embedding");
00038
00039 bfc(-1,chain1Opt,daqfile);
00040 chain1 = chain;
00041 chain1->SetName("One");
00042 Chain->cd();
00043
00044 bfc(-1,chain2Opt);
00045 chain2 = chain;
00046 chain2->SetName("Two");
00047 Chain->cd();
00048 if (chain2->GetOption("TRS")){
00049 StTrsMaker *trsMk = (StTrsMaker *) chain2->GetMaker("Trs");
00050 if (! trsMk) {
00051 cout << "Cannot find Trs in chain2" << endl;
00052 return;
00053 }
00054 trsMk->setNormalFactor(2.67);
00055 }
00056
00057 gSystem->Load("StMixerMaker");
00058 StMixerMaker *mixer = new StMixerMaker("Mixer","daq","trs");
00059
00060 mixer->SetInput("Input1","StDAQReader");
00061 mixer->SetInput("Input2","Event");
00062
00063
00064
00065
00066 TString OutputFileName(gSystem->BaseName(daqfile));
00067 OutputFileName.ReplaceAll("*","");
00068 OutputFileName.ReplaceAll(".daq","");
00069 OutputFileName.Append("_emb.root");
00070 bfc(-1,chain3Opt,0,OutputFileName);
00071 chain3 = chain;
00072 chain3->SetName("Three");
00073 Chain->cd();
00074 StMaker *tpcdaqMk = chain3->GetMaker("tpc_raw");
00075 if(!tpcdaqMk ) {
00076 cout <<" Error: no tpc daq maker. End. "<<endl;
00077 return;
00078 }
00079 tpcdaqMk->SetMode(1);
00080 tpcdaqMk->SetInput("Event","MixerEvent");
00081 Chain->cd();
00082
00083 {
00084 TDatime t;
00085 gMessMgr->QAInfo() << Form("Run is started at Date/Time %i/%i",t.GetDate(),t.GetTime()) << endm;
00086 }
00087 gMessMgr->QAInfo() << Form("Run on %s in %s",gSystem->HostName(),gSystem->WorkingDirectory()) << endm;
00088 gMessMgr->QAInfo() << Form("with %s", Chain->GetCVS()) << endm;
00089
00090 StPrepEmbedMaker *embMk = (StPrepEmbedMaker *) Chain->Maker("PrepEmbed");
00091 if (! embMk) return;
00092 embMk->SetTagFile(tagfile);
00093
00094 embMk->SetOpt( 0.1, 5., -1.3, 1.3, 0., 6.28);
00095
00096 embMk->SetPartOpt( 8,0.05);
00097 TAttr::SetDebug(0);
00098 Chain->SetAttr(".Privilege",0,"*" );
00099 Chain->SetAttr(".Privilege",1,"StBFChain::*" );
00100 Chain->SetAttr(".Privilege",1,"StIOInterFace::*" );
00101 Chain->SetAttr(".Privilege",1,"St_geant_Maker::*");
00102 Chain->SetAttr(".Privilege",1,"StPrepEmbedMaker::*");
00103
00104 if (Nevents < 0) return;
00105 Int_t iInit = Chain->Init();
00106 if (iInit >= kStEOF) {Chain->FatalErr(iInit,"on init"); return;}
00107 StMaker *treeMk = Chain->GetMaker("outputStream");
00108 Chain->EventLoop(Nevents,treeMk);
00109 gMessMgr->QAInfo() << "Run completed " << endm;
00110 gSystem->Exec("date");
00111 }
00112
00113