Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added Dirac HNL proc_cards as well as potting script #10

Open
wants to merge 49 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
10c0b32
add example to run analysis_stage1 over privately-produced LL HNL sig…
jalimena Oct 19, 2022
6a0affc
add example to run analysis_final over privately-produced LL HNL signals
jalimena Oct 19, 2022
d2103fc
Merge pull request #1 from jalimena/runFinalUpdates
jalimena Oct 20, 2022
9e84c97
Merge pull request #2 from jalimena/updateLLHNL
jalimena Oct 20, 2022
fa2e3ba
add example to run analysis_stage1 over privately-produced LL HNL sig…
jalimena Oct 19, 2022
b8db6a0
add example to run analysis_final over privately-produced LL HNL signals
jalimena Oct 19, 2022
1d3bbe0
Merge branch 'master' of github.com:FCC-LLP/FCCAnalyses into master
jalimena Oct 20, 2022
00da5ca
add example to run analysis_stage1 over privately-produced LL HNL sig…
jalimena Oct 19, 2022
b84ab7a
add example to run analysis_final over privately-produced LL HNL signals
jalimena Oct 19, 2022
861d088
Merge branch 'master' of github.com:FCC-LLP/FCCAnalyses into master
jalimena Oct 21, 2022
0d66324
add processLabels option for runFinal
jalimena Oct 21, 2022
671969b
Merge pull request #3 from jalimena/processLabels
jalimena Oct 21, 2022
1245fd4
minor updates for tutorial
jalimena Oct 21, 2022
68d22b7
Merge pull request #4 from jalimena/updateLLHNL2
jalimena Oct 22, 2022
9379250
add ALP UFO model from Andrea Thamm
jalimena Oct 25, 2022
5ae76b9
add ALP sample creation files
jalimena Oct 25, 2022
d3d4384
add HNL sample creation files
jalimena Oct 25, 2022
c82d1b0
Merge pull request #5 from jalimena/addOld
jalimena Oct 25, 2022
d1ec38a
rename mg5 proc card to be clearer
jalimena Oct 25, 2022
766dce5
Merge pull request #6 from jalimena/majorana
jalimena Oct 25, 2022
d9ad8ef
Adding mg5 card for Dirac ejj
Nayaqs Nov 10, 2022
bad764d
Add mg5 card for Dirac eenu
Nayaqs Nov 10, 2022
809b7f3
add mg5 card for Majorana ejj
Nayaqs Nov 10, 2022
8374e7d
Adding plotting_tools directory, containing scripts and readme
Nayaqs Nov 10, 2022
6b0c7c8
Update Readme.md
Nayaqs Nov 10, 2022
b3b96fd
Update Readme.md
Nayaqs Nov 10, 2022
ca8cdcf
Update Readme.md
Nayaqs Nov 10, 2022
2d85a2f
Added log_scale variable along with axis title modification to plot o…
Nayaqs Nov 14, 2022
0d6859f
Merge branch 'master' of https://github.com/Nayaqs/FCCAnalyses_local …
Nayaqs Nov 14, 2022
f2c561e
add HNL-->eenu mg5 proc card for validation
jalimena Nov 17, 2022
ff8ccfc
Merge pull request #8 from jalimena/addMgFile
jalimena Nov 17, 2022
c980f00
Removed undesired eenunu final state
Nayaqs Nov 17, 2022
de0fde9
Merge branch 'FCC-LLP:master' into master
Nayaqs Nov 17, 2022
f6b737e
Added selMC function definition from FCCPhysicsPerformance. This func…
Nayaqs Dec 1, 2022
af5a25c
Update of Analysis files. Now includes Jet variable analyses, Leading…
Nayaqs Dec 1, 2022
8a59019
Merge branch 'master' of https://github.com/Nayaqs/FCCAnalyses_local
Nayaqs Dec 1, 2022
6c5e494
Updated make_plots.py and make_selection.py to account for different …
Nayaqs Dec 1, 2022
2649a00
Delete make_plots.py
Nayaqs Dec 1, 2022
edc488a
Delete examples/FCCee/bsm/LLPs/DisplacedHNL/Analysis directory
Nayaqs Dec 1, 2022
e88c255
Updated make_selection and make_plots to include optional selections …
Nayaqs Dec 1, 2022
87b3d7b
Merge branch 'master' of https://github.com/Nayaqs/FCCAnalyses_local
Nayaqs Dec 1, 2022
bf7c7b6
Delete make_selection.py
Nayaqs Dec 1, 2022
d9989c8
Included get_tlv functions to return tlv from PtEtaPhiE coordinates. …
Nayaqs Dec 8, 2022
6b011b6
Included declarations on get_tlv functions.
Nayaqs Dec 8, 2022
370737b
Included di-jet distributions as well as GenElectron vs DiJet delta d…
Nayaqs Dec 8, 2022
165dcdc
Added Di-Jet variables to the list.
Nayaqs Dec 8, 2022
8b97fc8
Added Di-Jet variables to the selection
Nayaqs Dec 8, 2022
0b2b603
Added Di-Jet variables to be plotted
Nayaqs Dec 8, 2022
8f5dc79
Merge branch 'master' of https://github.com/Nayaqs/FCCAnalyses_local
Nayaqs Dec 8, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions analyzers/dataframe/FCCAnalyses/MCParticle.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,13 @@ namespace MCParticle{
ROOT::VecOps::RVec<edm4hep::MCParticleData> operator() (ROOT::VecOps::RVec<edm4hep::MCParticleData> in);
};

struct selMC_leg{
selMC_leg( int idx );
int m_idx;
ROOT::VecOps::RVec<edm4hep::MCParticleData> operator() (ROOT::VecOps::RVec<int> list_of_indices,
ROOT::VecOps::RVec<edm4hep::MCParticleData> in) ;
};

/// select MCParticles with their status
struct sel_genStatus {
sel_genStatus(int arg_status);
Expand Down
19 changes: 19 additions & 0 deletions analyzers/dataframe/FCCAnalyses/ReconstructedParticle.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,25 @@ namespace ReconstructedParticle{
/// return the TlorentzVector of the one input ReconstructedParticle
TLorentzVector get_tlv(edm4hep::ReconstructedParticleData in);

/// return the TlorentzVector from the (pt,eta,phi,E) components
TLorentzVector get_tlv_PtEtaPhiE(float pt, float eta, float phi, float e);

/// Return the sum of two 4-vectors
TLorentzVector get_tlv_sum(TLorentzVector v1, TLorentzVector v2);

/// Return energy of TLorentzVector
ROOT::VecOps::RVec<float> get_tlv_e(TLorentzVector in);

/// Return phi of TLorentzVector
ROOT::VecOps::RVec<float> get_tlv_phi(TLorentzVector in);

/// Return pt of TLorentzVector
ROOT::VecOps::RVec<float> get_tlv_pt(TLorentzVector in);

/// Return eta of TLorentzVector
ROOT::VecOps::RVec<float> get_tlv_eta(TLorentzVector in);


/// concatenate both input vectors and return the resulting vector
ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> merge(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> x, ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> y);

Expand Down
22 changes: 22 additions & 0 deletions analyzers/dataframe/src/MCParticle.cc
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,28 @@ ROOT::VecOps::RVec<edm4hep::MCParticleData> sel_pdgID::operator() (ROOT::VecOps
return result;
}

selMC_leg::selMC_leg( int idx ) {
m_idx = idx;
};

// I return a vector instead of a single particle :
// - such that the vector is empty when there is no such decay mode (instead
// of returning a dummy particle)
// - such that I can use the getMC_theta etc functions, which work with a
// ROOT::VecOps::RVec of particles, and not a single particle

ROOT::VecOps::RVec<edm4hep::MCParticleData> selMC_leg::operator() ( ROOT::VecOps::RVec<int> list_of_indices, ROOT::VecOps::RVec<edm4hep::MCParticleData> in) {
ROOT::VecOps::RVec<edm4hep::MCParticleData> res;
if ( list_of_indices.size() == 0) return res;
if ( m_idx < list_of_indices.size() ) {
res.push_back( sel_byIndex( list_of_indices[m_idx], in ) );
return res;
}
else {
std::cout << " !!! in selMC_leg: idx = " << m_idx << " but size of list_of_indices = " << list_of_indices.size() << std::endl;
}
return res;
}


get_decay::get_decay(int arg_mother, int arg_daughters, bool arg_inf){m_mother=arg_mother; m_daughters=arg_daughters; m_inf=arg_inf;};
Expand Down
41 changes: 41 additions & 0 deletions analyzers/dataframe/src/ReconstructedParticle.cc
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,7 @@ ROOT::VecOps::RVec<float> get_eta(ROOT::VecOps::RVec<edm4hep::ReconstructedParti
return result;
}


ROOT::VecOps::RVec<float> get_phi(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> in) {
ROOT::VecOps::RVec<float> result;
for (auto & p: in) {
Expand Down Expand Up @@ -357,6 +358,46 @@ TLorentzVector get_tlv(edm4hep::ReconstructedParticleData in) {
return result;
}

TLorentzVector get_tlv_PtEtaPhiE(float pt, float eta, float phi, float e) {
TLorentzVector result;
if (e>-1)
result.SetPtEtaPhiE(pt, eta, phi, e);
else
result.SetPtEtaPhiE(0, 0, 0, -1);
return result;
}

TLorentzVector get_tlv_sum(TLorentzVector v1, TLorentzVector v2) {
TLorentzVector result;
result = v1 + v2;
return result;
}

ROOT::VecOps::RVec<float> get_tlv_phi(TLorentzVector in) {
ROOT::VecOps::RVec<float> result;
result.push_back(in.Phi());
return result;
}

ROOT::VecOps::RVec<float> get_tlv_e(TLorentzVector in) {
ROOT::VecOps::RVec<float> result;
result.push_back(in.Energy());
return result;
}

ROOT::VecOps::RVec<float> get_tlv_eta(TLorentzVector in) {
ROOT::VecOps::RVec<float> result;
result.push_back(in.Eta());
return result;
}

ROOT::VecOps::RVec<float> get_tlv_pt(TLorentzVector in) {
ROOT::VecOps::RVec<float> result;
result.push_back(in.Pt());
return result;
}


ROOT::VecOps::RVec<int>
get_type(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> in){
ROOT::VecOps::RVec<int> result;
Expand Down
16 changes: 14 additions & 2 deletions config/FCCAnalysisRun.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,12 @@ def getElement(rdfModule, element, isFinal=False):
return {}
else: print('The option <{}> is not available in presel analysis'.format(element))

elif element=='processLabels':
if isFinal:
print('The variable <{}> is optional in your analysis_final.py file return empty dictionary'.format(element))
return {}
else: print('The option <{}> is not available in presel analysis'.format(element))

elif element=='geometryFile':
print('The variable <{}> is optional in your analysys.py file, return default value empty string'.format(element))
if isFinal: print('The option <{}> is not available in final analysis'.format(element))
Expand Down Expand Up @@ -765,6 +771,7 @@ def runFinal(rdfModule):
cutList = getElement(rdfModule,"cutList", True)
length_cuts_names = max([len(cut) for cut in cutList])
cutLabels = getElement(rdfModule,"cutLabels", True)
processLabels = getElement(rdfModule,"processLabels", True)

# save a table in a separate tex file
saveTabular = getElement(rdfModule,"saveTabular", True)
Expand Down Expand Up @@ -851,9 +858,14 @@ def runFinal(rdfModule):
tdf_list = []
count_list = []
cuts_list = []
cuts_list.append(pr)
eff_list=[]
eff_list.append(pr)

if processLabels:
cuts_list.append(processLabels[pr])
eff_list.append(processLabels[pr])
else:
cuts_list.append(pr)
eff_list.append(pr)

# Define all histos, snapshots, etc...
print ('----> Defining snapshots and histograms')
Expand Down
88 changes: 88 additions & 0 deletions examples/FCCee/bsm/LLPs/ALP_NLO_UFO/ALP_NLO_UFO.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# This file was automatically created by FeynRules 2.3.43
# Mathematica version: 12.1.1 for Mac OS X x86 (64-bit) (June 19, 2020)
# Date: Mon 19 Apr 2021 15:23:10


#
# This is the logfile for the model ALP_NLO

# Authors: M. Bauer, M. Neubert, S. Renner, M. Schnubel, A. Thamm
# Model version: 1
# Checking the Quantum numbers
* Electric charge defined.
# Checking the Lagrangians
* All Lagrangians are ok.
#
# Particle definitions
#

* No particles removed. All particles correspond to GenInt setup.

# Automatically assigned PDG numbers
* Assigned PDG number 9000001 to particle ghA
* Assigned PDG number 9000002 to particle ghZ
* Assigned PDG number 9000003 to particle ghWp
* Assigned PDG number 9000004 to particle ghWm
* Assigned PDG number 9000005 to particle ALP


# Compulsory PDG codes:
* Class SM leptons complete.
* Class SM neutrinos complete.
* Class SM quarks complete.
* Class SM gauge bosons complete.
#
# Parameter definitions
#

* All parameters are ok.


# Vertices
* Calling FeynmanRules for 1 Lagrangians.
* Number of classes vertices: 95
* Number of flavored vertices: 95
* Saved vertices in InterfaceRun[ 1 ].
* Checked QNumber conservation.
- Quantum number GhostNumber conserved in all vertices.
- Quantum number LeptonNumber conserved in all vertices.
- Quantum number Q conserved in all vertices.
- Quantum number Y conserved in all vertices.
* particles.py written.
* parameters.py written.
#
# Vertex definitions
#

* 95 vertices written.
* vertices.py written.
#
# Lorentz structure definitions
#

* 24 lorentz structures written.
* lorentz.py written.
#
# Coupling definitions
#

* 73 couplings written.
* couplings.py written.
#
# Coupling order definitions
#

* 0 couplings orders written.
* coupling_orders.py written.
#
# Decay definitions
#

* 13 decays written.
* decay.py not written
#
# CTCoupling definitions
#

* 0 CTcouplings written.
* CT_couplings.py written.
11 changes: 11 additions & 0 deletions examples/FCCee/bsm/LLPs/ALP_NLO_UFO/CT_couplings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# This file was automatically created by FeynRules 2.3.43
# Mathematica version: 12.1.1 for Mac OS X x86 (64-bit) (June 19, 2020)
# Date: Mon 19 Apr 2021 15:23:43


from object_library import all_couplings, Coupling

from function_library import complexconjugate, re, im, csc, sec, acsc, asec, cot



50 changes: 50 additions & 0 deletions examples/FCCee/bsm/LLPs/ALP_NLO_UFO/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@

import particles
import couplings
import lorentz
import parameters
import vertices
import coupling_orders
#import write_param_card
import propagators
import object_library
import function_library


all_particles = particles.all_particles
all_vertices = vertices.all_vertices
all_couplings = couplings.all_couplings
all_lorentz = lorentz.all_lorentz
all_parameters = parameters.all_parameters
all_orders = coupling_orders.all_orders
all_functions = function_library.all_functions
all_propagators = propagators.all_propagators

try:
import decays
except ImportError:
pass
else:
all_decays = decays.all_decays

try:
import form_factors
except ImportError:
pass
else:
all_form_factors = form_factors.all_form_factors

try:
import CT_vertices
except ImportError:
pass
else:
all_CTvertices = CT_vertices.all_CTvertices


gauge = [0]


__author__ = "M. Bauer, M. Neubert, S. Renner, M. Schnubel, A. Thamm"
__date__ = "19/04/2021"
__version__= "1"
20 changes: 20 additions & 0 deletions examples/FCCee/bsm/LLPs/ALP_NLO_UFO/coupling_orders.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# This file was automatically created by FeynRules 2.3.43
# Mathematica version: 12.1.1 for Mac OS X x86 (64-bit) (June 19, 2020)
# Date: Mon 19 Apr 2021 15:23:43


from object_library import all_orders, CouplingOrder


NP = CouplingOrder(name = 'NP',
expansion_order = 99,
hierarchy = 2)

QCD = CouplingOrder(name = 'QCD',
expansion_order = 99,
hierarchy = 1)

QED = CouplingOrder(name = 'QED',
expansion_order = 99,
hierarchy = 2)

Loading