پیاده سازی ابزار تصمیم گیری ماشه کمی پیچیده تر از ابزارهای دیگر است. در AnalysisBase، این فرآیند به دو ابزار نیاز دارد: "TrigConfig" و "TrigDecision". ما می خواهیم مراحل مشابه ابزارهای قبلی را دنبال کنیم. ابتدا باید کتابخانه ها را اضافه کنیم:
- TrigConfxAODLib
- TrigDecisionToolLib
- xAODTrigger
اکنون می خواهیم ابزارهای خود را به گزینه های شغلی اضافه کنیم. ابزار TrigConfig فقط برای پیکربندی TrigDecisionTool مورد نیاز است، بنابراین می توانیم آن را در گزینه های شغلی جدا کنیم.
xAODConfTool = createPublicTool( 'TrigConf::xAODConfigTool', 'xAODConfigTool' ) کار.algsافزودن (xAODConfTool) addPrivateTool( alg, "trigDecisionTool", "Trig::TrigDecisionTool" ) . alg.trigDecisionTool.ConfigTool = '%s/%s' % ( xAODConfTool.getType(), xAODConfTool.getName() ) alg.trigDecisionTool.TrigDecisionKey = "xTrigDecision"
در مرحله بعد، می توانیم شامل را اضافه کنیم و شاخه ntuple و دو دسته ابزار خود را به فایل هدر خود اعلام کنیم:
#include "TrigDecisionTool/TrigDecisionTool. h" . بدون امضا بین المللی m_trigDecision = 0; /// . Tool Handleماشه::ITrigDecisionTool> m_trigDecisionTool;
اکنون باید ابزار خود را در ابتدای الگوریتم راه اندازی کنیم. ما در این حرفه هستیم!
m_trigDecisionTool ("Trig::TrigDecisionTool/TrigDecisionTool") . اظهار اموال ("trigDecisionTool", m_trigDecisionTool, "ابزار تصمیم گیری ماشه"); . ANA_CHECK( m_trigDecisionTool_handle.بازیابی());
فراموش نکنید که شاخه جدید ما را به ntuple اضافه کنید!
درخت من>شاخه ("TriggerDecision", &m_trigDecision);
اکنون که ابزارها مقداردهی اولیه شده اند، انجام تصمیم ماشه بسیار ساده است. ابزار TrigDecision یک تابع isPassed() دارد که در آن رشته ای از تریگرها را که می خواهید بررسی کنید وارد می کنید. این تابع همچنین رشته های دارای حروف عام مانند L1* را می پذیرد تا بررسی کند و ببیند آیا رویدادی از همه محرک های L1 عبور می کند یا خیر. بیایید این را روی تریگر HLT_e26_lhtight_ivarloose_L1EM22VHI آزمایش کنیم. در تابع execute () قبل از نوشتن به ntuple خط زیر را اضافه کنید:
m_trigDecision = m_trigDecisionTool>گذشت("HLT_e26_lhtight_ivarloose_L1EM22VHI");
با بررسی این شاخه جدید، می توانید ببینید که محتویات فقط 0 یا 1 هستند که نشان می دهد آیا رویداد از ماشه داده شده عبور کرده است یا خیر.
محرک های متعدد
ما همچنین می توانیم برای رویدادی که چندین محرک را پشت سر می گذارد، تصمیم بگیریم. برای انجام این کار، باید رشته ارسال شده به ابزار در تابع execute () را تغییر دهیم. تابع isPassed() به گزاره های منطقی در رشته ای که داده می شود اجازه می دهد. بیایید یک یا ( || ) را با تریگر HLT_e60_lhmedium_L1EM22VHI به رشته ماشه اضافه کنیم:
m_trigDecision = m_trigDecisionTool>گذشت("HLT_e26_lhtight_ivarloose_L1EM22VHI || HLT_e60_lhmedium_L1EM22VHI");
شاخه های تصمیم گیری ماشه دو ntuples ما را مقایسه کنید. آیا تفاوت بین شاخه ها همان چیزی است که انتظار داشتید؟
اغلب تجزیه و تحلیل ها کانال های مختلفی دارند که به لیست متفاوتی از محرک ها نیاز دارند. کامپایل مجدد کل بسته به منظور تغییر رشته امکان پذیر نیست، بنابراین بیایید این را به ویژگی الگوریتم تبدیل کنیم. همان مراحلی را که برای ویژگی SampleName از بخش قبلی انجام شد، دنبال کنید. ما همان رشته ماشه مرحله قبل را در گزینه های شغلی اضافه می کنیم:
alg.TriggerString = "HLT_e26_lhtight_ivarloose_L1EM22VHI || HLT_e60_lhmedium_L1EM22VHI"
ادامه دهید و گزینه job خود را اجرا کنید و خروجی را بررسی کنید. شاخه TriggerDecision این ntuple باید با ntuple قبلی یکسان باشد.
اکنون که تأیید کردیم که ویژگی ما کار می کند، بیایید لیست ماشه را کمی خواناتر کنیم. ما می توانیم یک فایل اضافی در پوشه MyAnalysis/share/ به نام trigger_list. py بسازیم و محتوای زیر را اضافه کنیم:
باعث می شود = [ "HLT_e26_lhtight_ivarloose_L1EM22VHI", "HLT_e60_lhmedium_L1EM22VHI" ]
تجزیه لیست محرک ها از این طریق برای ما بسیار ساده تر است. با این فایل جدید، می توانیم فهرست راه اندازی با فرمت مناسب ایجاد کنیم تا همان تصمیم ماشه را به ما بدهد. در فایل گزینه job، ATestRun_eljob. py فایل ماشه را وارد کرده و رشته را ایجاد کنید:
#وارد کردن تریگرها و ایجاد رشته از جانب trigger_list وارد كردن باعث می شود trigList = "" برای t in باعث می شود: if باعث می شود.فهرست مطالب(t) != 0: trigList += " || " trigList += t . alg.TriggerString = trigList
از آنجایی که ما فقط فایل های پایتون را تغییر دادیم، نیازی به کامپایل مجدد بسته ما نیست! گزینه job را اجرا کنید و خروجی را بررسی کنید تا مطمئن شوید کد شما به درستی پیاده سازی شده است.
⭐️ تمرین پاداش
با افزودن یک لیست جدید به فایل trigger_list. py و گزینه های شغلی، مجموعه ای از محرک ها را با منطق "و"، && به تصمیم آغازگر خود اضافه کنید.
تالیف گروه نرم افزار تحلیلهر مشکلی را اینجا گزارش کنید
ساخته شده با جکیل و بوت استرپ. با تشکر از بنیاد نرم افزار HEP برای ایده های چیدمان.
سیگنالهای معاملاتی...
ما را در سایت سیگنالهای معاملاتی دنبال می کنید
برچسب :
نویسنده : عارف لرستانی
بازدید : <-PostHit->
تاريخ : چهارشنبه
8 شهريور
1402 ساعت: 21:07