425 def create_path(self):
426 """
427 Create basf2 path to process with event generation and simulation.
428 """
429 basf2.set_random_seed(self.random_seed)
430 path = basf2.create_path()
431 if self.experiment_number in [0, 1002, 1003]:
432 runNo = 0
433 else:
434 runNo = 0
435 raise ValueError(
436 f"Simulating events with experiment number {self.experiment_number} is not implemented yet.")
437 path.add_module(
438 "EventInfoSetter", evtNumList=[self.n_events], runList=[runNo], expList=[self.experiment_number]
439 )
440 if "BBBAR" in self.random_seed:
441 path.add_module("EvtGenInput")
442 elif "V0BBBAR" in self.random_seed:
443 path.add_module("EvtGenInput")
444 path.add_module("InclusiveParticleChecker", particles=[310, 3122], includeConjugates=True)
445 else:
446 import generators as ge
447
448
449
450
451
452 if "V0STUDY" in self.random_seed:
453 if "V0STUDYKS" in self.random_seed:
454
455 mu = 0.5
456 beta = 0.2
457 pdgs = [310]
458 if "V0STUDYL0" in self.random_seed:
459
460 mu = 0.35
461 beta = 0.15
462 pdgs = [3122, -3122]
463 else:
464
465 mu = 0.43
466 beta = 0.18
467 pdgs = [310, 3122, -3122]
468
469 myx = [i*0.01 for i in range(321)]
470 myy = []
471 for x in myx:
472 y = createV0momenta(x, mu, beta)
473 myy.append(y)
474 polParams = myx + myy
475
476 pdg_list = pdgs
477
478 particlegun = basf2.register_module('ParticleGun')
479 particlegun.param('pdgCodes', pdg_list)
480 particlegun.param('nTracks', 8)
481 particlegun.param('momentumGeneration', 'polyline')
482 particlegun.param('momentumParams', polParams)
483 particlegun.param('thetaGeneration', 'uniformCos')
484 particlegun.param('thetaParams', [17, 150])
485 particlegun.param('phiGeneration', 'uniform')
486 particlegun.param('phiParams', [0, 360])
487 particlegun.param('vertexGeneration', 'fixed')
488 particlegun.param('xVertexParams', [0])
489 particlegun.param('yVertexParams', [0])
490 particlegun.param('zVertexParams', [0])
491 path.add_module(particlegun)
492 if "BHABHA" in self.random_seed:
493 ge.add_babayaganlo_generator(path=path, finalstate='ee', minenergy=0.15, minangle=10.0)
494 elif "MUMU" in self.random_seed:
495 ge.add_kkmc_generator(path=path, finalstate='mu+mu-')
496 elif "YY" in self.random_seed:
497 babayaganlo = basf2.register_module('BabayagaNLOInput')
498 babayaganlo.param('FinalState', 'gg')
499 babayaganlo.param('MaxAcollinearity', 180.0)
500 babayaganlo.param('ScatteringAngleRange', [0., 180.])
501 babayaganlo.param('FMax', 75000)
502 babayaganlo.param('MinEnergy', 0.01)
503 babayaganlo.param('Order', 'exp')
504 babayaganlo.param('DebugEnergySpread', 0.01)
505 babayaganlo.param('Epsilon', 0.00005)
506 path.add_module(babayaganlo)
507 generatorpreselection = basf2.register_module('GeneratorPreselection')
508 generatorpreselection.param('nChargedMin', 0)
509 generatorpreselection.param('nChargedMax', 999)
510 generatorpreselection.param('MinChargedPt', 0.15)
511 generatorpreselection.param('MinChargedTheta', 17.)
512 generatorpreselection.param('MaxChargedTheta', 150.)
513 generatorpreselection.param('nPhotonMin', 1)
514 generatorpreselection.param('MinPhotonEnergy', 1.5)
515 generatorpreselection.param('MinPhotonTheta', 15.0)
516 generatorpreselection.param('MaxPhotonTheta', 165.0)
517 generatorpreselection.param('applyInCMS', True)
518 path.add_module(generatorpreselection)
519 empty = basf2.create_path()
520 generatorpreselection.if_value('!=11', empty)
521 elif "EEEE" in self.random_seed:
522 ge.add_aafh_generator(path=path, finalstate='e+e-e+e-', preselection=False)
523 elif "EEMUMU" in self.random_seed:
524 ge.add_aafh_generator(path=path, finalstate='e+e-mu+mu-', preselection=False)
525 elif "TAUPAIR" in self.random_seed:
526 ge.add_kkmc_generator(path, finalstate='tau+tau-')
527 elif "DDBAR" in self.random_seed:
528 ge.add_continuum_generator(path, finalstate='ddbar')
529 elif "UUBAR" in self.random_seed:
530 ge.add_continuum_generator(path, finalstate='uubar')
531 elif "SSBAR" in self.random_seed:
532 ge.add_continuum_generator(path, finalstate='ssbar')
533 elif "CCBAR" in self.random_seed:
534 ge.add_continuum_generator(path, finalstate='ccbar')
535
536
537
538
540
541 if self.experiment_number == 1002:
542
543 components = ['PXD', 'SVD', 'CDC', 'ECL', 'TOP', 'ARICH', 'TRG']
544 else:
545 components = None
546
548
549 path.add_module(
550 "RootOutput",
551 outputFileName=self.get_output_file_name(self.output_file_name()),
552 )
553 return path
554
555
556
557
get_background_files(folder=None, output_file_info=True)
add_simulation(path, components=None, bkgfiles=None, bkgOverlay=True, forceSetPXDDataReduction=False, usePXDDataReduction=True, cleanupPXDDataReduction=True, generate_2nd_cdc_hits=False, simulateT0jitter=True, isCosmics=False, FilterEvents=False, usePXDGatedMode=False, skipExperimentCheckForBG=False, ignoreRunNumberForBG=False, save_slow_pions_in_mc=False, save_all_charged_particles_in_mc=False)