#Description: see createDevMapMulti.C #Author: Felix Boehmer, E18 import ROOT, glob, math, sys, os from ROOT import std from array import array options = ["-ef","-pf","-rBin","-of","-mom"] opts = set(options) def getArgsToNextOpt(stringlist, index) : id = index+1 args = [] while(id < len(stringlist)): if stringlist[id] in options: return args args.append(stringlist[id]) id+=1 return args outf = "" efieldf = "" paramf = "" rBin = -1 mom = 3.672 nbinsr = 26 nbinsz = 149 for iarg in range(len(sys.argv)) : arg = sys.argv[iarg] if arg == "-ef": #file containing E-field (ASCII) efieldfs = getArgsToNextOpt(sys.argv,iarg) if len(efieldfs) > 1 : print "Invalid argument to -ef!" exit efieldf = efieldfs[0] if arg == "-of": #output file (ASCII) outfs = getArgsToNextOpt(sys.argv,iarg) if len(outfs) > 1 : print "Invalid argument to -of!" exit outf = outfs[0] if arg == "-pf" : paramfs = getArgsToNextOpt(sys.argv,iarg) if len(paramfs) > 1: print "Invalid argument to -pf!" exit paramf = paramfs[0] if arg == "-rBin" : bins = getArgsToNextOpt(sys.argv,iarg) if len(bins) > 1 : print "Invalid argument to -rBin!" exit rBin = int(bins[0]) if arg == "-mom" : mom = float(getArgsToNextOpt(sys.argv,iarg)[0]) if len(efieldf) < 2: print "No E-Field file was given! Aborting... " exit if len(paramf) < 2: print "No parameter file was given! Aborting... " exit if len(outf) < 2 : outf = efieldf pattern = "DevMap_rBin" + str(rBin) outf = outf.replace("Efield", pattern) ROOT.gROOT.ProcessLine(".x rootlogon.C") fRun = ROOT.FairRunSim() fRun.SetBeamMom(mom) efield = ROOT.TpcEFieldCyl(efieldf) bfield = ROOT.PndMultiField("FULL") bfield.Init() #the actual calculation drifter = ROOT.TpcInhFieldDrifter(efield, bfield, outf, paramf, nbinsr, nbinsz, rBin ) print "Starting the drifter...." print "Writing Deviation Map output to",outf drifter.run()