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_TpcSvt(const Int_t Nevents=100,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 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
00070 OutputFileName.Append(".root");
00071 bfc(-1,chain3Opt,0,OutputFileName);
00072 chain3 = chain;
00073 chain3->SetName("Three");
00074 Chain->cd();
00075 StMaker *tpcdaqMk = chain3->GetMaker("tpc_raw");
00076 if(!tpcdaqMk ) {
00077 cout <<" Error: no tpc daq maker. End. "<<endl;
00078 return;
00079 }
00080 tpcdaqMk->SetMode(1);
00081 tpcdaqMk->SetInput("Event","MixerEvent");
00082 Chain->cd();
00083
00084 {
00085 TDatime t;
00086 gMessMgr->QAInfo() << Form("Run is started at Date/Time %i/%i",t.GetDate(),t.GetTime()) << endm;
00087 }
00088 gMessMgr->QAInfo() << Form("Run on %s in %s",gSystem->HostName(),gSystem->WorkingDirectory()) << endm;
00089 gMessMgr->QAInfo() << Form("with %s", Chain->GetCVS()) << endm;
00090
00091 StPrepEmbedMaker *embMk = (StPrepEmbedMaker *) Chain->Maker("PrepEmbed");
00092 if (! embMk) return;
00093 embMk->SetTagFile(tagfile);
00094
00095 embMk->SetOpt( 0.1, 5., -1.3, 1.3, 0., 6.28);
00096
00097 embMk->SetPartOpt( 8,0.05);
00098 TAttr::SetDebug(0);
00099 Chain->SetAttr(".Privilege",0,"*" );
00100 Chain->SetAttr(".Privilege",1,"StBFChain::*" );
00101 Chain->SetAttr(".Privilege",1,"StIOInterFace::*" );
00102 Chain->SetAttr(".Privilege",1,"St_geant_Maker::*");
00103 Chain->SetAttr(".Privilege",1,"StPrepEmbedMaker::*");
00104
00105 if (Nevents < 0) return;
00106 Int_t iInit = Chain->Init();
00107 if (iInit >= kStEOF) {Chain->FatalErr(iInit,"on init"); return;}
00108 StMaker *treeMk = Chain->GetMaker("outputStream");
00109 Chain->EventLoop(Nevents,treeMk);
00110 gMessMgr->QAInfo() << "Run completed " << endm;
00111 gSystem->Exec("date");
00112 }
00113
00114