Monte Carlo Production
TR-Grid sitesinden
ATHENA ile "FULL CHAIN"
ATHENA ile Monte Carlo olaylarını üretmek (simulasyon) için “Full Chain” adımları izlenmelidir. Partonik düzeyde olay üretiminden (örneğin, PYTHIA ile) analiz nesne verisine (AOD) kadar adımlara full chain denir. Şekil 1, “full chain” i göstermektedir.
Şekil 1. Full Chain Monte Carlo Production
Şekilden de görüldüğü gibi, ATLFAST kullanarak bu zincir kısa devre yapılabilir. ATLFAST, olay üretiminden onların smear edilmesine ve doğrudan AOD’lerin üretilmesine imkan sağlar. ATLFAST bir olay üreticiden sonuçları alır, simule eder, dijitalleştirir veya olay özet verisi (ESD) dosyaları oluşturur.
ATHENA ile Olaylar Yaratmak (Generating Events)
- Z0+jet olayları üretimi
Bu bölümde Athena yazılımı kullanılarak lufer makinesi üzerinde olaylar üretilecektir. Olay üretimi, belirli bir fizik sürecinde parçacıkların dörtlü vektörlerinin bilinmesi anlamına gelir. ATLAS yazılımında kullanılan 30 civarında olay üreticisi vardır, bunlar PYTHIA, HERWIG, COMPHEP, SHERPA, ACERMC, MC@NLO vb. Bu örnekte PYTHIA kullanılarak olaylar yaratılacaktır.
NOT: Bu örnek de(MC Production) atlas yazılımın 15.3.0 sürümü kullanılacaktır.
Öncelikle bundan önceki dökümanlardada anlatıldığı üzere hesabınızı aşağıda ki gibi 15.3.0 üzerinde çalışacak şekilde ayarlayınız. Sonrasında çalışma dizininize geçiniz.
$ cd $HOME $ mkdir cmthome $ mkdir testarea $ mkdir testarea/13.5.0 $ mkdir testarea/13.5.0/run $ cd ~/cmthome
$ source /opt/exp_soft/atlas/prod/releases/rel_15-3/CMT/v1r20p20090520/mgr/setup.sh
Aşağıda ki içeriği sahip requirements dosyası hazırlayınız.
#--------------------------------------------------------
set CMTSITE STANDALONE
set SITEROOT /opt/exp_soft/atlas/prod/releases/rel_15-3
macro ATLAS_TEST_AREA ${HOME}/testarea
macro ATLAS_DIST_AREA ${SITEROOT}
apply_tag projectArea
macro SITE_PROJECT_AREA ${SITEROOT}
macro EXTERNAL_PROJECT_AREA ${SITEROOT}
apply_tag opt
apply_tag setup
apply_tag simpleTest
use AtlasLogin AtlasLogin-* $(ATLAS_DIST_AREA)
set CMTCONFIG i686-slc4-gcc34-opt
#--------------------------------------------------------
$ cmt config $ source setup.sh -tag=15.3.0 $ cd ~/testarea/15.3.0/run $ get_files PDGTABLE.MeV $ get_files jobOptions.pythia.py
Sonrasında aşağıda ki komut ile hem sonuç bir dosyaya yazdırılmış olur, hemde içeriği teminal de gösterilmiş olur.
$ athena.py jobOptions.pythia.py | tee athena_gen.out
Buradaki iş tanım dosyasında (jobOptions.pythia.py) aşağıda ki satır bulunmaktadır. Bu satırın anlamı ve çıktı dosyasında hangi olayın yaratıldığı bilgisi aşağıdadır.
Pythia.PythiaCommand = ["pysubs msel 13","pysubs ckin 3 18.","pypars mstp 43 2"]
Tanımlar:
• MSEL = 13 # anahtarı Z0 + Jet üretimini seçer
• CKIN(3) = 18. # süreçteki minimum enine momentum (p_T) değeri GeV
• MSTP(43) = 2 # Z0/gamma* interference kapalı (sadece Z0 katılmış)
PYTHIA ile Z0+jet olayları üretimi :
15 f + fbar --> g + Z0
30 f + g --> f + Z0
- Z0-->e+e- Olayları Üretimi
Bu olayları yaratmak için myGenOptions.py adında yeni bir PYTHIA iş dosyası yaratılıp içeriği aşağıda ki gibi düzenlenir.
#-------------------------------------------------------------- # Private Application Configuration option #-------------------------------------------------------------- from AthenaCommon.AppMgr import ServiceMgr ServiceMgr.MessageSvc.OutputLevel = INFO #-------------------------------------------------------------- # Event related parameters #-------------------------------------------------------------- # Number of events to be processed (default is 10) theApp.EvtMax = 5 #-------------------------------------------------------------- # Algorithms Private Options #-------------------------------------------------------------- from AthenaServices.AthenaServicesConf import AtRndmGenSvc ServiceMgr += AtRndmGenSvc() ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] # from AthenaCommon.AlgSequence import AlgSequence job=AlgSequence() # from Pythia_i.Pythia_iConf import Pythia job +=Pythia() # Generate Z->ee job.Pythia.PythiaCommand = ["pysubs msel 0","pysubs msub 1 1", "pypars mstp 43 2","pydat3 mdme 174 1 0", "pydat3 mdme 175 1 0","pydat3 mdme 176 1 0", "pydat3 mdme 177 1 0","pydat3 mdme 178 1 0", "pydat3 mdme 179 1 0","pydat3 mdme 180 1 0", "pydat3 mdme 181 1 0","pydat3 mdme 182 1 1", "pydat3 mdme 183 1 0","pydat3 mdme 184 1 0", "pydat3 mdme 185 1 0","pydat3 mdme 186 1 0", "pydat3 mdme 187 1 0"] from TruthExamples.TruthExamplesConf import DumpMC job += DumpMC() #--------------------------------------------------------------- # Pool Persistency #--------------------------------------------------------------- from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream Stream1 = AthenaPoolOutputStream( "Stream1" ) Stream1.OutputFile = "pythia.pool.root" Stream1.ItemList += [ 'EventInfo#*', 'McEventCollection#*' ]
Bu dosyanın içinde bulunan Stream1.OutputFile satırı çıktı dosya ismini (pythia.pool.root) tanımlamaktadır. Phthia.PythiaCommand satırı ise süreç üretimi seçimi, bozunum kanalları ve parametrelerin girilmesini sağlamaktadır. Burada f fbar-->Z0 sürecinin seçimi pysubs msub 1 1 ile yapılmaktadır. Z-bozonun bozunum kanallarından sadece e+e- açılmıştır (mdme 182 1 1). Eğer Z0 --> mu+ mu- bozumununa bakmak istenirse (mdme 184 1 1) seçilmelidir.
Athena yazılımı ile çalıştırmak için aşağıda ki komut kullanılır.
$ athena.py myGenOptions.py > athena_mygen.out
Çıktıda gelen Z0 ve çıkan electron pozitronun yanında ışımalardan kaynaklanan ekstra fotonlar görünecektir. Üretilen dosyanın büyüklüğü ls –al komutu ile iş dosyasında çıktı olarak belirlediğimiz “pythia.pool.root” dosyanın boyutu 161313 Byte olmalıdır.
You can look at what containers are stored in this root file with the command:
$ checkFile pythia.pool.root
Not: Bu örnek sadece eğitim amaçlıdır. ATLAS dedektörüne özgü olay üretimi için ATLAS Computing Workbook Twiki web sayfasına bakılabilir.
ATHENA ile Olayların Simülasyonu (Simulating Events [GEANT Hits])
Athena çerçevesinde PYTHIA ile üretilen olayları simule etmek için GEANT4 kullanılmaktadır. GEANT4 “Hit”lerini (herbir parçacığın dedektörü nerede geçtiği ve ne kadar enerji depolandığı bilgisi), üretmek için ATLAS dedektörünün simulasyonu yapılmaktadır. Run dizininden. <= UPDATE?
The basic job options can be obtained with:
$ get_files jobOptions.G4Atlas_Sim.py
yazılarak jobOptions.G4Atlas_Sim.py dosyası çalışılan dizine alınır, ve bu dosya içinde gerekli birtakım değişiklikler yapılır. Bunlar aşağıda ki gibidir: (Yorum satırlarının bazıları kaldırılacak, bazıları yorum satırına dönüştürülecek, çıktı dosyasının ismi belirtilecek)
After some modifications, the new job options file, let's call it g4htis.py, without the comments, is something like:
__version__="$Revision: 1.43 $" from AthenaCommon.DetFlags import DetFlags DetFlags.ID_setOn() DetFlags.Calo_setOff() DetFlags.Muon_setOff() DetFlags.simulate.Truth_setOn() from AthenaCommon.AthenaCommonFlags import athenaCommonFlags from G4AtlasApps.SimFlags import SimFlags SimFlags.SimLayout='ATLAS-CSC-02-01-00' athenaCommonFlags.PoolHitsOutput='g4hits.pool.root' SimFlags.KinematicsMode='ReadGeneratedEvents' athenaCommonFlags.PoolEvgenInput=['pythia.pool.root'] theApp.EvtMax = 1 MessageSvc = Service( "MessageSvc" ) MessageSvc.OutputLevel = 4 from G4AtlasApps import SimKernel
GEANT simulation is CPU-intensive (taking about 10 minutes for each event), so in the above job options I have selected only one event and switched off the calorimeter and muon subsystems to speed things up.
Athena’yı çalıştırmak için:
$ athena.py g4hits.py > g4hits.out 2>&1 &
You can follow the progress of the output with tail -f g4hits.out (use Ctrl-C to break out of tail.)
Simulasyon biraz uzun zaman almaktadır (Z0->e+e- için 15 dakika/olay). Lxplus makinelerde ancak 40 dakika iş çalıştırabiliyoruz, bu da ancak 2 olay simulasyonu demek. Çünkü bağlandığımız ve üzerinde çalıştığımız bilgisayar hesaplama nodu değil, kullanıcı arayüzüdür. Pek çok kullanıcının aynı anda tek bilgisayarı kullandığı düşünülürse, bilgisayarın sahip olduğu kaynaklar hepsine hizmet veremiyecektir. Bu yüzden lxplus bilgisayaları üzerinde çalıştırabilceğiniz işler fazla kaynak tüketmeyecek olan işlerdir. Çok olay ile simulasyon için Lxbatch sistemini kullanmak gerekmektedir.
Benzer şekilde kendi merkezimizde de aynı politika uygulanmaktadır. Pek çok TR-Grid kullanıcısının lufer üzerinde çalıştığı düşünülürse, hesaplama işlerinin lufer değil hesaplama nodu üzerinde yapılması gerekmektedir. Böyle bir durumda işler ULAKBIM kümesine gönderilmeli ve orada çalıştırılmalıdır. Küme mantığında çalıştığınız bilgisayarın özellikleri, sahip olduğunuz dosyalar ve yerleri karşı tarafta hesaplama nodunda da aynı olduğundan hazırlayacağınız basit bir betik dosyası ile işler karşı tarafta yapılır. Ancak YEF çalışmalarının küme değil Grid ortamında çalışması gerektiğinden böyle bir yaklaşım tavsiye edilmez.
After the job successfully completes you can check which containers have been generated with the following command:
$ checkFile g4hits.pool.root
You should see that there is one event, and containers for the calorimeter and muon system are missing.
To run on more events and include the whole detector, modify the job options such that:
DetFlags.Calo_setOn() DetFlags.Muon_setOn() theApp.EvtMax = 5
i.e. switch on the Colorimeter and Muon chambers, and read in 5 events (that's the number of events in pythia.pool.root (you check verify that with checkFile)
This job will take about an hour to run so it's best sent it to batch using PBS. Create a PBS script as follows:
$ edit g4hits.sh #!/bin/sh #PBS -q atlas@kalkan1.ulakbim.gov.tr #PBS -N G4HITS #PBS -l nodes=1:ppn=1 #PBS -V source ~/cmthome/setup.sh -tag=15.3.0 cd ~/testarea/15.3.0/run athena.py g4hits.py > g4hits.out 2>&1
Yukarıda işimizin bir hesaplama nodunda iki çekirdek kullanacağını söylüyoruz. Göndereceğimiz işi kalkan1 hesaplama elemanına gideceğini, isminin ornek_pbs_atlas2 olduğunu, önceden hazırlanmış olan iş özellikli dosyanın normal ekran çıktısını myjob.out dosyasına, hata oluşması durumunda bunun da myjob.err dosyasına yazılması gerektiğini belrtmiş oluyoruz.
qsub komutu ile iş dosyası kümeye aktarılır, qstat komutu ile de durumu takip edilir.
$ qsub g4hits.sh
370088.kalkan1.ulakbim.gov.tr
Küme ortamına gönderdiğimiz işin ID bilgisi: 370088.kalkan1.ulakbim.gov.tr
$ qstat -a 370088.kalkan1.ulakbim.gov.tr
kalkan1.ulakbim.gov.tr:
Req'd Req'd Elap
Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time
-------------------- -------- -------- ---------- ------ ----- --- ------ ----- - -----
370088.kalkan1.ulakb beddall atlas G4HITS -- 1 -- -- 48:00 R --
qstat komutunu –f parametresi ile kullandığınızda işiniz ile ilgili çok daha detaylı bilgi alabilirsiniz.
İşin adı İşin sahibi Kullanılan İşlemci Saati Kullanılan bellek miktarı İşin durumu Kuyruk adı Çalıştığı WN ismi Kaç işlemci ve hesaplama nodu kullandığı ...
ATHENA ile Olayların Dijitalleştilmesi
GEANT4 Hitleri şeklinde simule edilmiş olaylar, dedektör responsuna maruz bırakılarak gerçek dedektörden alınan ham veride olduğu gibi (zaman, voltaj gibi) dijitalleştirilir. Burada önce bir jobOption dosyası oluşturalım, myDigiOptions.py dosyası içinde aşağıdaki satırlar bulunacaktır.
########################################################## # User Digitization Job Options PoolHitsInput = ["g4hits.pool.root"] PoolRDOOutput = "g4digi.pool.root" # Run through EvtMax events; if -1 run to end of file EvtMax = -1 # Detector description DetDescrVersion='ATLAS-CSC-02-01-00'
Dijitalleştirme için AtlasDigitization.py dosyasına ihtiyaç olacaktır. Bunun için
$ get_files AtlasDigitization.py
ve sonrasında Athena çalıştırılır:
$ athena.py myDigiOptions.py AtlasDigitization.py > athena_digi.out
athena_digi.out dosyasının içeriğine bakılarak başarılı bir şekilde sonlandığından emin olunmalıdır.
Program çalışıp sonlandığında dizinde aşağıdaki üç dosya bulunmalıdır (5 adet Z0->e+e- olayı için dosyalar):
pythia.pool.root --> Olayların yaratılması sonrası oluşturulan dosyadır. Olayların simülasyonu sırasında bu dosya üzerinden işlemler yapılacaktır.
g4hits.pool.root --> Simülasyon sonrası ortaya çıkan dosyadır. Dijitalleştirme sırasında input olarak kullanılacaktır.
g4digi.pool.root --> Simülasyondan sonra olayların dijitalleştirilmesi sonrası yaratılan dosyadır.
ATHENA ile Olayların Yeniden Oluşturulması
Daha öncesinden ATHENA ile dijitalleştirilmiş (veya gerçek) olayların yeniden oluşturulması anlatılmıştır. Yeniden oluşturma, ham veri dijitlerindan, zaman ve voltaj gibi, olay özet verisi (ESD) olarak enerji depolanması ve izler şeklinde oluşturulmasıdır. Burada da önce RecExCommon_topOptions.py dosyasını alarak,
$ get_files RecExCommon_topOptions.py
kullanıcı kendi iş dosyasını yazabilir, bu dosyanın ismi myRecOptions.py olsun, dosyanın içindeki satırlar aşağıdaki gibi olabilir:
########################################################## # For ESD Production doWriteESD = True doWriteAOD = False # Detector description DetDescrVersion='ATLAS-CSC-02-01-00' # doTrigger = False # Do not run trigger simulation as it breaks in 12.0.1 #number of Event to process (-1 is all) EvtMax = 5 SkipEvents = 0 # suppress the production of ntuple and histogram files doCBNT = False doHist = False # the input data file PoolRDOInput = [ "g4digi.pool.root" ] # The ESD output file name PoolESDOutput = "esd.pool.root" #PoolAODOutput = "aod.pool.root" ##########################################################
Burada DetDescrVersion='ATLAS-CSC-02-01-00' satırı ATLAS dedektörünü tanımlama sürümünü gösterir. Burada olaylar oluşturulurken sadece ESD verisinin yaratılmasını istedik. Eğer AOD dosyasının da yaratılmasını isteseydik, dosya içerisinde doWriteAOD true olarak set edilmesinin yanında çıktı AOD dosyasının ismini de PoolAODOutput = "aod.pool.root" düzeltmemiz gerekecekti.
Yeniden oluşturma için ATHENA çalıştırılır,
$ athena.py myRecOptions.py RecExCommon_topOptions.py > athena_rec.out
Bu durumda çalışma dizininde ESD dosyası da görünmelidir (burada 5 adet Z0-->e+e- olayı çalışılmıştır)
Aynı İş Dosyası ile hem ESD hem de NTUPLE Dosyası Oluşturmak
Kullanıcı iş dosyası myRecOptions.py içinde aşağıdaki değişiklikleri yaparak yeniden isimlendirilebilir myRecOptions2.py (disk kotasını aşmamak için bu dosyada AOD ve ESD üretim satırları False yapılabilir, doCBNT = True ve doHist = True alınabilir). bu şekilde “Athena Aware NTuple” (AANTuple) dosyası da oluşturulabilir:
Bu dosya içerisinde aşağıda ki değişiklikler yapılmalıdır;
# specify CBNT AA is requested CBNTAthenaAware=True # name of root output file RootNtupleOutput="AANTuple.root"
Athena tekrar çalıştırıldığında
$ athena.py myRecOptions2.py RecExCommon_topOptions.py
çalışma dizininde aşağıdaki ESD ve AANT dosyaları bulunacaktır. (AANTuple.root, esd.pool.root)
ESD Dosyalarından AOD Dosyaları Oluşturmak
AOD dosyaları yeniden oluşturulmuş (reconstructed) veriler içeren ESD dosyasının bir özetidir. (ATLAS yazılım sürümü 13.0.30 için bu dönüşüm problemli olabilir!, fakat yeniden oluşturma sırasında üretilen AOD kabul edilir). Başka sürümlerde kullanılabilecek bir yapı aşağıdaki myAODOptions.py dosyasında tanımlanmıştır.
########################################## AllAlgs = False DetDescrVersion='ATLAS-CSC-02-01-00' doWriteESD=False readESD = True doWriteAOD = True doWriteTAG = False doCBNT = False doHist = False EvtMax = -1 PoolESDInput = [ "esd.pool.root" ] PoolAODOutput = "aod.pool.root" #############################################
Input dosyası olarak önceden yarattığımız ESD dosyasını veriyoruz ve çıktı olarak sadece AOD dosyasının yaratılmasını istiyoruz.
Bu durumda Athena çalıştırılırsa:
$ athena.py myAODOptions.py RecExCommon_topOptions.py > athena_aod.out
aod.pool.root dosyası elde edilir.
ATHENA ILE Hızlı Simülasyon AOD Elde Edilmesi
Bu kısımda Athena kullanılarak üretilmiş olaylardan doğrudan ATLAS hızlı simulasyon (ATLFAST) kullanarak AOD dosyalarının nasıl üretileceği anlatılmıştır. AOD dosyaları yeniden oluşturulmuş ESD’lerin bir özetidir. Bu hızlı AOD dosyalarında hızlı “TrackParticles” kaydedilmemiştir, fakat bununla ilgili bir etiket vardır, gerekirse eklenebilir. Sürüm 11.1.0 dan sonra hızlı ve full AOD ler aynı çıktı dosyasına yazılmaktadır.

Şekil 3. ATLFAST tüm dedektör simulasyonu ve yeniden oluşturma fazlarının yerine geçer.
TLFAST paketi Monte Carlo (MC) yeniden oluşturmanın (reconstruction), tüm dedektör simulasyonu ve yeniden oluşturma fazlarının yerine geçer. Hızlı simulasyon “MC truth” bilgisini, full dedektör simulasyon çalışmalarında ölçülen çözünürlüklerle (resolution) “smear” ederek gerçekleştirilir. Bunun için ATLAS hızlı simulasyonunda aşağıdaki dosyalar elde edilir,
$ get_files POOLtoAtlfasttoAOD.py $ get_files Atlfast_ReadPOOLFile.py
Sonra Atlfast_ReadPOOLFile.py dosyasındaki girdi dosyası ismi
EventSelector.InputCollections = [ "rfio:/castor/cern.ch/atlas/project/dc2/preprod/evgen802/dc2.002880.pyt_z_ee.evgen802/data/dc2.002880.pyt_z_ee.evgen802._0001.pool.root"]
den
EventSelector.InputCollections = [ "pythia.pool.root" ]
şeklinde değiştirilir (Burada input dosyası CERN’de bulunan uzak bir dosyası göstermektedir), ve POOLtoAtlfasttoAOD.py dosyasındaki
#include ( "AtlfastAlgs/Atlfast_ReadPOOLFile.py" )
satırı aşağıdaki satır ile değiştirilir:
#include ( "./Atlfast_ReadPOOLFile.py" )
Böylece Athena çalıştırılabilir:
$ athena.py POOLtoAtlfasttoAOD.py > athena_fast.out
Sonuçta AOD dosyası (10 adet Z0->e+e- olayı) oluşur.
NOT: Bu sayfa hazırlanırken O.Çakır ve I.Türk Çakır'ın hazırlamış oldukları dökümandan yararlanılmıştır.
Hazırlayan: Emrah AKKOYUN






