void Run_Ana_GeoOpt_Batch(Int_t nEvents = 10) { TTree::SetMaxTreeSize(90000000000); gRandom->SetSeed(10); float PMTrotX=20, PMTrotY=10; int PMTtransY=180, PMTtransZ=80; float ThetaMin=250., ThetaMax=2500.;//devide by 100 later float PhiMin=90., PhiMax=180.; int GeoCase=2, DimCase=2; float EnlargedPMTWidth=2., EnlargedPMTHight=4.; int PtNotP=1; float MomMin=0., MomMax=400;//devide by 100 later float RotMir=-10; int extendedmir=0; int OldCode=0; int DefaultDims=0; int DefaultDims_LargePMT=0; TString ExtraText=".";// ExtraText="_Updated.";// if(DimCase ==0){ExtraText="";} TString script = TString(gSystem->Getenv("SCRIPT")); if (script == "yes"){ cout<<" ----------------- running with script --------------------"<Getenv("N_EVS")).Atof(); PMTrotX=TString(gSystem->Getenv("PMT_ROTX")).Atof(); PMTrotY=TString(gSystem->Getenv("PMT_ROTY")).Atof(); PMTtransY=TString(gSystem->Getenv("PMT_TRAY")).Atof(); PMTtransZ=TString(gSystem->Getenv("PMT_TRAZ")).Atof(); ThetaMin=TString(gSystem->Getenv("THETAMIN")).Atof(); ThetaMax=TString(gSystem->Getenv("THETAMAX")).Atof(); PhiMin=TString(gSystem->Getenv("PHIMIN")).Atof(); PhiMax=TString(gSystem->Getenv("PHIMAX")).Atof(); GeoCase=TString(gSystem->Getenv("GEO_CASE")).Atof(); DimCase=TString(gSystem->Getenv("DIM_CASE")).Atof(); EnlargedPMTWidth=TString(gSystem->Getenv("ENL_PMTWIDTH")).Atof(); EnlargedPMTHight=TString(gSystem->Getenv("ENL_PMTHIGHT")).Atof(); PtNotP=TString(gSystem->Getenv("PT_NOT_P")).Atof(); MomMin=TString(gSystem->Getenv("MOM_MIN")).Atof(); MomMax=TString(gSystem->Getenv("MOM_MAX")).Atof(); ///////// RotMir=TString(gSystem->Getenv("ROTMIR")).Atof(); extendedmir=TString(gSystem->Getenv("EXTENDEDMIR")).Atof(); OldCode=TString(gSystem->Getenv("OLDCODE")).Atof(); DefaultDims=TString(gSystem->Getenv("DEFAULDIMS")).Atof(); DefaultDims_LargePMT=TString(gSystem->Getenv("DEFAULDIMSLPMT")).Atof(); ExtraText=TString(gSystem->Getenv("EXTRATEXT")); } TString outDir=GetOutDir(GeoCase); TString GeoText=GetGeoText(GeoCase); TString RotMirText=GetMirText(RotMir, extendedmir); cout<<"MirText = "<LoadMacro("$VMCWORKDIR/macro/littrack/loadlibs.C"); // loadlibs(); cout<<" got libraries"<SetInputFile(SimFile); run->AddFriend(RecFile); run->SetOutputFile(AnaFile); CbmRichGeoOpt* richGeoOpt = new CbmRichGeoOpt(); run->AddTask(richGeoOpt); // ----- Parameter database -------------------------------------------- FairRuntimeDb* rtdb = run->GetRuntimeDb(); FairParRootFileIo* parIo1 = new FairParRootFileIo(); FairParAsciiFileIo* parIo2 = new FairParAsciiFileIo(); parIo1->open(ParFile.Data()); //parIo2->open(parFileList, "in"); rtdb->setFirstInput(parIo1); //rtdb->setSecondInput(parIo2); rtdb->setOutput(parIo1); rtdb->saveOutput(); run->Init(); cout << "Starting run" << endl; run->Run(0,nEvents); // ----- Finish ------------------------------------------------------- timer.Stop(); Double_t rtime = timer.RealTime(); Double_t ctime = timer.CpuTime(); cout << endl << endl; cout << "Macro finished successfully." << endl; cout << "Output file is " << AnaFile << endl; cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << endl; cout << endl; cout << " Test passed" << endl; cout << " All ok " << endl; } //////////////////////////////////////////// TString GetMomText(int OldCode=1, int PtNotP, float MomMin, float MomMax){ TString Pstring="P"; if(PtNotP==1){Pstring="Pt";} char Ptxt[256]; if(OldCode==1){ sprintf(Ptxt,"%s%dto%d",Pstring.Data(),MomMin/100.,MomMax/100.); }else{ int MomMinMod100=int(MomMin) % 100; int MomMaxMod100=int(MomMax) % 100; float IntegerMomMin100=(MomMin-MomMinMod100)/100.; float IntegerMomMax100=(MomMax-MomMaxMod100)/100.; int MomMinMod10=int(MomMinMod100) % 10; int MomMaxMod10=int(MomMaxMod100) % 10; float IntegerMomMin10=(MomMinMod100-MomMinMod10)/10.; float IntegerMomMax10=(MomMaxMod100-MomMaxMod10)/10.; cout<<" ##################################### "< old geometry with rich_v08a.geo (RICH starts at 1600, Mirror tilt -1) //GeoCase=-1 ==> old geometry with rich_v14a.gdml (RICH starts at 1800, Mirror tilt -1) //GeoCase=0 ==> old geometry with *.geo (own creation)(RICH starts at 1600, Mirror tilt -1) //GeoCase=1 ==> gdml-geo: RICH starts at 1800, Mirror tilt -1 or 10, // mirror does NOT cover full acceptance) //GeoCase=2 ==> gdml-geo: RICH starts at 1800, Mirror tilt -1 or 10, // mirror does cover full acceptance) if(GeoCase==-2){return "RichGeo_v08a";} if(GeoCase==-1){return "RichGeo_v14a";} if(GeoCase==0){return "RichGeo_ascii";} if(GeoCase==1){return "RichGeo_OldGdml";} if(GeoCase==2){return "RichGeo_NewGdml";} } //////////////////////////////////////////// TString GetOutDir(int GeoCase){ return "/nas/Tariq/GeoOpt/"; // return "/hera/cbm/users/tariq/MomScan/"; return "/nas/Tariq/Test/"; // return "/nas/Tariq/GeoOpt/"; return "/data/GeoOpt/Test2/"; // return "/data/GeoOpt/OptiPMTSize/"; //return "/data/GeoOpt/"; //return "/data/GeoOpt/RotPMT/"; return "/hera/cbm/users/tariq/GeoOptRootFiles/OptimisedGeo/"; return "/hera/cbm/users/tariq/GeoOptRootFiles/"; // if(GeoCase<=0){return "/data/GeoOpt/RotPMT/OlderGeo/";} // if(GeoCase==1){return "/data/GeoOpt/RotPMT/OldGeo/";} // if(GeoCase==2){return "/data/GeoOpt/RotPMT/NewGeo/";} } //////////////////////////////////////////// TString GetMirText(int RotMir, bool extend){ char RotMir_txt[256]; if(RotMir<0){sprintf( RotMir_txt,"RotMir_m%d",RotMir*-1);} else{sprintf(RotMir_txt,"RotMir_p%d",RotMir);} stringstream ss; ss<