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_TpcSvtSsd2005(const Int_t Nevents=100,Int_t isSvtIn=1, Int_t isSsdIn=1,
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 Double_t pt_low=0.1,
00020 const Double_t pt_high=5.0,
00021 const Double_t eta_low=-1.0,
00022 const Double_t eta_high=1.0,
00023 const Int_t pid=9,
00024 const Double_t mult = 0.1) {
00025
00026 TString prodP07ib("P2005b DbV20070518 MakeEvent ITTF Iana ToF spt SsdIt SvtIt pmdRaw SCEbyE OGridLeak OShortR OSpaceZ2 ssd_daq");
00027 TString geomP07ib("ry2005f");
00028 TString chain1Opt("in magF tpcDb NoDefault -ittf NoOutput");
00029 TString chain2Opt("NoInput PrepEmbed gen_T geomT sim_T trs -ittf -tpc_daq nodefault");
00030 chain2Opt += " "; chain2Opt += geomP07ib;
00031 TString chain3Opt = prodP07ib;
00032 chain3Opt += " Embedding onlraw GeantOut MiniMcMk McAna IdTruth -in NoInput,useInTracker EmbeddingShortCut";
00033 if (isSvtIn) chain3Opt += " SvtEmbed";
00034 if (isSsdIn) {
00035 chain1Opt += ",ssddat";
00036 chain2Opt += ",ssd,McEvent,-spt";
00037 chain3Opt += ",SsdEmbed";
00038 }
00039 chain3Opt += " "; chain3Opt += geomP07ib;
00040
00041 gROOT->LoadMacro("bfc.C");
00042 if (gClassTable->GetID("StBFChain") < 0) Load();
00043
00044 Chain = new StChain("Embedding");
00045
00046 bfc(-1,chain1Opt,daqfile);
00047 chain1 = chain;
00048 chain1->SetName("One");
00049 Chain->cd();
00050
00051 bfc(-1,chain2Opt);
00052 chain2 = chain;
00053 chain2->SetName("Two");
00054 Chain->cd();
00055 if (chain2->GetOption("TRS")){
00056 StTrsMaker *trsMk = (StTrsMaker *) chain2->GetMaker("Trs");
00057 if (! trsMk) {
00058 cout << "Cannot find Trs in chain2" << endl;
00059 return;
00060 }
00061 trsMk->setNormalFactor(2.67);
00062 }
00063
00064 gSystem->Load("StMixerMaker");
00065 StMixerMaker *mixer = new StMixerMaker("Mixer","daq","trs");
00066
00067 mixer->SetInput("Input1","StDAQReader");
00068 mixer->SetInput("Input2","Event");
00069
00070
00071
00072
00073 TString OutputFileName(gSystem->BaseName(daqfile));
00074 OutputFileName.ReplaceAll("*","");
00075 OutputFileName.ReplaceAll(".daq","");
00076
00077 OutputFileName.Append(".root");
00078 bfc(-1,chain3Opt,0,OutputFileName);
00079 chain3 = chain;
00080 chain3->SetName("Three");
00081 Chain->cd();
00082 StMaker *tpcdaqMk = chain3->GetMaker("tpc_raw");
00083 if(!tpcdaqMk ) {
00084 cout <<" Error: no tpc daq maker. End. "<<endl;
00085 return;
00086 }
00087 tpcdaqMk->SetMode(1);
00088 tpcdaqMk->SetInput("Event","MixerEvent");
00089 Chain->cd();
00090
00091 {
00092 TDatime t;
00093 gMessMgr->QAInfo() << Form("Run is started at Date/Time %i/%i",t.GetDate(),t.GetTime()) << endm;
00094 }
00095 gMessMgr->QAInfo() << Form("Run on %s in %s",gSystem->HostName(),gSystem->WorkingDirectory()) << endm;
00096 gMessMgr->QAInfo() << Form("with %s", Chain->GetCVS()) << endm;
00097
00098 StPrepEmbedMaker *embMk = (StPrepEmbedMaker *) Chain->Maker("PrepEmbed");
00099 if (! embMk) return;
00100 embMk->SetTagFile(tagfile);
00101
00102 embMk->SetOpt( pt_low, pt_high, eta_low, eta_high, 0., 6.283185);
00103
00104 embMk->SetPartOpt( pid,mult);
00105 TAttr::SetDebug(0);
00106 Chain->SetAttr(".Privilege",0,"*" );
00107 Chain->SetAttr(".Privilege",1,"StBFChain::*" );
00108 Chain->SetAttr(".Privilege",1,"StIOInterFace::*" );
00109 Chain->SetAttr(".Privilege",1,"St_geant_Maker::*");
00110 Chain->SetAttr(".Privilege",1,"StPrepEmbedMaker::*");
00111 StMaker *SsdEmbed = Chain->Maker("SsdEmbed");
00112 if (SsdEmbed) {
00113 cout << "SsdEmbed has been found ----------------------------------------" << endl;
00114 SsdEmbed->SetInput("SsdRealData","One/.make/SpaStrip/.data/spa_strip");
00115 SsdEmbed->SetInput("SsdSimuData","Two/.make/SpaStrip/.data/spa_strip");
00116 StMaker *SsdPoint = Chain->Maker("SsdPoint");
00117 if (SsdPoint) {
00118 cout << "SsdPoint has been found----------------------------------------" << endl;
00119 SsdPoint->SetInput("SpaStrip","SsdEmbed");
00120 }
00121 }
00122
00123 if (Nevents < 0) return;
00124 Int_t iInit = Chain->Init();
00125 if (iInit >= kStEOF) {Chain->FatalErr(iInit,"on init"); return;}
00126 StMaker *treeMk = Chain->GetMaker("outputStream");
00127 Chain->EventLoop(Nevents,treeMk);
00128 gMessMgr->QAInfo() << "Run completed " << endm;
00129 gSystem->Exec("date");
00130 }
00131
00132