NuGen III K.Hoshina May. 10 2013 IceCube spring collaboration meeting in Madison

download NuGen III K.Hoshina May. 10 2013 IceCube spring collaboration meeting in Madison

of 29

  • date post

  • Category


  • view

  • download


Embed Size (px)

Transcript of NuGen III K.Hoshina May. 10 2013 IceCube spring collaboration meeting in Madison

  • NuGen IIIK.HoshinaMay. 10 2013IceCube spring collaboration meeting in Madison

  • History of neutrino simulationNUSIM (Gary)Garys fast neutrino simulation for AMANDAANIS (Marek)Next generation of AMANDA neutrino simulationCross section tables, final interaction tables are provided (used in NuGen too)NeutrinoGenerator (Aya)originally it was I3 version of ANIS, but renamed when Aya implemented neutrino re-generation in NuTau CC channel

  • Now NuGen is the third generation !Before release V00-06-01 ( NuGen 1)Used up to IC40 standard productionContains bugs in weight calculationFrom V00-06-01 to now ( NuGen II)Weight bug fixed, added weighted calculation for propagation inside the EarthCode maintainer is changed from Aya to Kotoyo Will be included in the first release of IceSim V4Coming soon ! (NuGen III)Older versions are still available with new IceSim, and will be maintained as long as Im the maintainer...

  • Why NuGen III ?Well... yes, I can implement them, but future NuGen maintainers will cry... :((NuGen is complicated enough already!)I want to use Genie at detector!

  • How structures of code is changed?v3 internal classes are in namespace nugen(some of them are renamed from v2) v1, v2 classes are in legacy directorySource modules put one primary neutrino into frame with the name of NuGPrimary

  • NuGen III consist of three modulesYou may skip Propagator if you want

  • NuGen SourcesThree modules exist now and easy to add moreI3NuGDiffuseSourceI3NuGPointSourceI3NuGSourceSelectorselects a neutrino from I3MCTree (use Nathans Corsika-reader) Currently select a neutrino randomly from all candidateStores NuGPrimary and generation weight as I3MCWeightDict in frame

  • Added new option for Injection areaCurrent setting of Injection Radius : 1200mfor straight downgoing (upgoing) tracks, more than 80% of injection area is outside of the detectorSome tracks are even out of range of photonics table (radius 680m)

  • NUSIM style injection areaDefine cylindrical detector area outside of IceCubeInject neutrinos which pass through the detector areathe injection area varies with injection zenith angleInjection area (r14 in Nusim) is recorded in MCWeightDictOneWeight will compensate the effect

  • Propagation inside the EarthI3NuGPropagator Take a primary neutrino NuGPrimary from framePropagate it up to near by the detector Store one final-candidate neutrino in frame as NuGInIceNeutrino and add propagation weight to I3MCWeightDictWill support table output in near future (Similar as JULIeT table but contains only neutrinos)

  • Vertex Generator ModuleTake a particle NuGInIceNeutrino(if the neutrino does not exist take NuGPrimary instead) and calculate detection volumeThen make interaction vertex inside the detection volume Three interaction modes will be availableusing NuGens final interaction tablesusing Genies cross sections and vertex generatorHybrid (use Genie for low energy, NuGen for high energy)Coding is not finished yet, but first integration of Genie to NuGen is done!

  • Genie Integration to NuGenGMCJDriver is a large programNot easy to understand, IceCube-type experiment is not supposed by developers, thus may contain problematic change in any updateAll we need is Cross Section and Functions to make Final State ParticlesGood bye genie::GMCJDriver !Such core codes will be relatively stable, then we dont have to worry about version dependence of Genie too much (hopefully).

  • Step 1 : Genie Stand-alone testMake an stand-alone genie program that follows exactly same procedure as NuGenDefine detection cylinder volume, and inject a neutrino from the forward cap of the cylinderCalculate total cross section for the injected neutrino and volume materialCalculate survival probability Psurv then get interaction probability Pint = 1.0 - PsurvSelect a vertex randomly, and calculate position weight Make a vertex and generate secondariesThen compare it to standard Genie!

  • 100000 events simulation results (no weight applied)Low statistics at Low EBlue : GMCJDriver with weight opt (ice)Green : GMCJDriver default (ice)Red : Genie-NuG driver (ice)Violet : Genie-NuG driver (ice + rock)

  • 100000 events simulation results (no weight applied)Secondary = secondary lepton (Muon for CC, Neutrino for NC)

  • 100000 events simulation results (weighted)

  • 100000 events simulation results (weighted)

  • Step 2 : I3NuGGenie (interaction module) Port stand-alone Genie-NuG program to nugen as an interaction module (I3NuGGenie)with correct geometry (Ice + Rock)PrimarySource : I3NuGDiffuseSourceEnergy range : 1GeV ~ 200GeVZenith range : 0deg ~ 180degCompare the result with current NuGen II simulation (with InjectOnCylinder option)

  • Comparison : NuGen and NuGGenie

  • Step 3 : Make a unified moduleThinking about Hybrid option, a unified VertexGenerator will be easier to manageCore functions like genie::GetXsec (get cross section) and genie::GenerateEvent (making secondary particles) could be implemented as a service in genie-icetray projectBut for now, we may use I3NuGGenie (with Ice + Bedrock) as a substitute of genie-icetray, especially for HE muon background study

  • Plan towards next releaseSend request to genie-icetray maintainer (Ken? Claudio?) to move following headers to public directoryConvertToGST.hConvertPDGEncodingToI3ParticleType.hIf LowEnergy group want to use or check I3NuGGenie very soon, make new release as NuGen 2.5 after cleaning source codes Add table writer for propagatorAdd unified vertex generatorThen release NuGen 3 !

  • Backup

  • Benchmark modeNew event class dedicated for generating benchmark dataset may be useful to get muon / cascade effective areaskips InEarth propagation, interaction weight is always 1.0 currently three options are supportedgenerate charged lepton at front edge of the detector area, with primarys energy and directiongenerate charged lepton inside the detector area, with primarys energy and directiongenerate charged leptons (and hadron cascades) inside the detector area with standard process (energy of secondary particles are smaller than primary)

  • Benchmark Mode

  • gevgen_simpledriver RandomGen * rnd = RandomGen::Instance(); while (ievent < gOptNevents) { // 1. get neutrino energy, direction and position Particle injected_nu = InjectANeutrino(particles, rnd); // 2. calculate total column depth, surviving probability etc. and fill stepping info CalcSteppingInfo(injected_nu, gevg_drivers, matratiomap, stepmap) // 3. find interaction position in uniform distribution double cdep = total_cdep * rnd->RndGen().Rndm(); // 4. select target material at the column depth and get proper GEVGDriver SteppingMap::iterator iter1= stepmap.lower_bound(cdep); StepInfo theStep = iter1->second; // choose a target! double total_nsigma = theStep.fTotalNsigma_; double nsigma = total_nsigma * rnd->RndGen().Rndm(); map::iterator iter2 = theStep.fDriverMap_.lower_bound(random2 * nsigma); GEVGDriver * driver = iter2->second; // 5. Generate an event! TLorentzVector nup4 = injected_nu.GetMomentum(); EventRecord * event = driver->GenerateEvent(nup4);

  • gevgen_i3Basically same as gevgen (with GMCJDriver) :Primary flux is always E-1 Interaction vertex is uniformly distributed in detection volume (no position weight)Should perform exactly same as genie-icetrayWeighted option is available (Word Weight used in Genie is a little different from what we usually use : its the interaction weight but doesnt mean 1 - Psurv.)

  • Weight differenceIntWeight : 1 - exp (- n*X*sigma)IntWeight_lowE : n*X*sigmaIceOnlyIceRock

  • Vertex positions (weighted)