Skip to content

Commit

Permalink
Merge pull request #19 from mlarson02/ExoticHiggsCLDHadronicNeutrinoA…
Browse files Browse the repository at this point in the history
…dditions

Adding for code for exotic Higgs analysis for CLD, hadronic/invisible Z decay samples
  • Loading branch information
jalimena authored Jul 4, 2024
2 parents e61fda5 + 6a5482e commit 565b59d
Show file tree
Hide file tree
Showing 35 changed files with 3,059 additions and 28 deletions.
15 changes: 15 additions & 0 deletions analyzers/dataframe/FCCAnalyses/ReconstructedParticle.h
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,21 @@ namespace ReconstructedParticle{
/// get number of b-jets
int getJet_ntags(ROOT::VecOps::RVec<bool> in);

// get sum of vector of floats
float get_sum_float(ROOT::VecOps::RVec<float> in);

// get sum of vector of ints
int get_sum_int(ROOT::VecOps::RVec<int> in);

// get avg of vector of floats
float get_avg_float(ROOT::VecOps::RVec<float> in);

// get avg of vector of ints
int get_avg_int(ROOT::VecOps::RVec<float> in);

/// return the summed total energy of all of the input ReconstructedParticles
float get_total_e(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> in);

}//end NS ReconstructedParticle

}//end NS FCCAnalyses
Expand Down
6 changes: 5 additions & 1 deletion analyzers/dataframe/FCCAnalyses/VertexingUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,11 @@ namespace VertexingUtils{
/// Retrieve the indices of the tracks fitted to that vertex, but now in the collection of RecoParticles
ROOT::VecOps::RVec<int> get_VertexRecoParticlesInd( FCCAnalysesVertex TheVertex,
const ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>& reco );


/// Retrieve the indices of the tracks fitted to a vector of vertices, but now in the collection of RecoParticles
ROOT::VecOps::RVec<int> get_VerticesRecoParticlesInd( ROOT::VecOps::RVec<FCCAnalysesVertex > vertices,
const ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>& reco );

/// Return the number of tracks in a given track collection
int get_nTracks(ROOT::VecOps::RVec<edm4hep::TrackState> tracks);

Expand Down
51 changes: 51 additions & 0 deletions analyzers/dataframe/src/ReconstructedParticle.cc
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,14 @@ ROOT::VecOps::RVec<float> get_e(ROOT::VecOps::RVec<edm4hep::ReconstructedParticl
return result;
}

float get_total_e(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> in){
float result;
for (auto & p: in) {
result += p.energy;
}
return result;
}

ROOT::VecOps::RVec<float> get_p(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> in) {
ROOT::VecOps::RVec<float> result;
for (auto & p: in) {
Expand Down Expand Up @@ -475,6 +483,49 @@ int getJet_ntags(ROOT::VecOps::RVec<bool> in) {
return result;
}

float get_sum_float(ROOT::VecOps::RVec<float> in){
float result = std::accumulate(in.begin(), in.end(), 0.0f);
//float result = 0;
//for (int i; i < in.size(); ++i){
// result += in[i];
//}
return result;
}

// get sum of int
int get_sum_int(ROOT::VecOps::RVec<int> in){
int result = std::accumulate(in.begin(), in.end(), 0);
//int result = 0;
//for (int i; i < in.size(); ++i){
// result += in[i];
//}
return result;
}

// get avg of floats
float get_avg_float(ROOT::VecOps::RVec<float> in){
//float result;
//for (int i; i < in.size(); ++i){
// result += in[i];
//}
float result = std::accumulate(in.begin(), in.end(), 0.0f) / in.size();
//result /= in.size();
return result;
}

// get avg of ints
int get_avg_int(ROOT::VecOps::RVec<float> in){
//int result;
//for (int i; i < in.size(); ++i){
// result += in[i];
//}
//result /= in.size();
int result = std::accumulate(in.begin(), in.end(), 0.0f) / in.size();
return result;
}



}//end NS ReconstructedParticle

}//end NS FCCAnalyses
4 changes: 2 additions & 2 deletions analyzers/dataframe/src/VertexFinderLCFIPlus.cc
Original file line number Diff line number Diff line change
Expand Up @@ -307,10 +307,10 @@ ROOT::VecOps::RVec<VertexingUtils::FCCAnalysesVertex> findSVfromTracks(ROOT::Vec
VertexingUtils::FCCAnalysesVertex sec_vtx = VertexFitterSimple::VertexFitter_Tk(2, tr_vtx_fin, alltracks); // flag 2 for SVs

// save the tracks that are used to fit the SV
sec_vtx.tracks = tr_vtx_fin;
//sec_vtx.tracks = tr_vtx_fin;

// save the tracks that are used to fit the SV
sec_vtx.tracks = tr_vtx_fin;
//sec_vtx.tracks = tr_vtx_fin;

// see if we can also get indices in the reco collection (for tracks forming an SV)
//sec_vtx.reco_ind = VertexFitterSimple::get_reco_ind(recoparticles,thetracks); // incorrect
Expand Down
25 changes: 25 additions & 0 deletions analyzers/dataframe/src/VertexingUtils.cc
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,31 @@ ROOT::VecOps::RVec<int> get_VertexRecoParticlesInd(
return result;
}

ROOT::VecOps::RVec<int> get_VerticesRecoParticlesInd(
ROOT::VecOps::RVec<FCCAnalysesVertex > vertices,
const ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> &reco) {

ROOT::VecOps::RVec<int> result;
for (int j = 0; j < vertices.size(); ++j){
ROOT::VecOps::RVec<int> indices_tracks = vertices[j].reco_ind;
for (int i = 0; i < indices_tracks.size(); i++) {
int tk_index = indices_tracks[i];
for (int j = 0; j < reco.size(); j++) {
auto &p = reco[j];
if (p.tracks_begin == p.tracks_end)
continue;
if (p.tracks_begin == tk_index) {
result.push_back(j);
break;
}
}
}
}

return result;
}


TVectorD ParToACTS(TVectorD Par) {

TVectorD pACTS(6); // Return vector
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
#************************************************************
#* MadGraph5_aMC@NLO *
#* *
#* * * *
#* * * * * *
#* * * * * 5 * * * * *
#* * * * * *
#* * * *
#* *
#* *
#* VERSION 3.4.1 2022-09-01 *
#* *
#* The MadGraph5_aMC@NLO Development Team - Find us at *
#* https://server06.fynu.ucl.ac.be/projects/madgraph *
#* *
#************************************************************
#* *
#* Command File for MadGraph5_aMC@NLO *
#* *
#* run as ./bin/mg5_aMC filename *
#* *
#************************************************************
set group_subprocesses Auto
set ignore_six_quark_processes False
set low_mem_multicore_nlo_generation False
set complex_mass_scheme False
set include_lepton_initiated_processes False
set gauge unitary
set loop_optimized_output True
set loop_color_flows False
set max_npoint_for_channel 0
set default_unset_couplings 99
set max_t_for_channel 99
set zerowidth_tchannel True
set nlo_mixed_expansion True
import model sm

set auto_convert_model T
import model --modelname HAHM_variableMW_v3_UFO/
define l+ = e+ m+
define l- = e- m-
define q = u c d s b
define q~ = u~ c~ d~ s~ b~
define f = u c d s u~ c~ d~ s~ b b~ e+ e- m+ m- tt+ tt-

#*** generate the process: e+ e- -> Z -> Z h with Z -> q q~ and h -> 2hs -> 4b
generate e+ e- > z > z h, z > q q~, (h > hs hs, hs > b b~)

output h_2hs_4b_mhs20GeV_WHSe-14_H

# launch the event generation
launch

#*** set electron beams and the center-of-mass energy to the ZH maximum production peak (240 GeV), i.e 120 GeV per electron beam

# set beam type; 0 for electron, 1 for proton
set lpp1 0
set lpp2 0
# set total energy in GeV for each beam
set ebeam1 120
set ebeam2 120

#*** set model parameters; couplings and masses

# the model accounts both dark scalars and dark photons, hence set the kinetic mixing coupling epsilon to zero and mass of dark photon high (to only simulate SM + dark scalar singlet)
set epsilon 1.000000e-10
set mZDinput 1.000000e+03

# set the mass of the dark scalar
set MHSinput 20.000000e+00

# set singlet-higgs coupling
set kap 7.000000e-04

# set the decay width to O(e-14) s.t sin^2 theta = O(e-10) and decay length O(mm)
set whs 5.7793e-14

# set the width of the higgs and the dark photon to auto
set wh Auto
set wzp Auto

# needed to get llp
set time_of_flight 0

# set number of events
set nevents 10000

done
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
#************************************************************
#* MadGraph5_aMC@NLO *
#* *
#* * * *
#* * * * * *
#* * * * * 5 * * * * *
#* * * * * *
#* * * *
#* *
#* *
#* VERSION 3.4.1 2022-09-01 *
#* *
#* The MadGraph5_aMC@NLO Development Team - Find us at *
#* https://server06.fynu.ucl.ac.be/projects/madgraph *
#* *
#************************************************************
#* *
#* Command File for MadGraph5_aMC@NLO *
#* *
#* run as ./bin/mg5_aMC filename *
#* *
#************************************************************
set group_subprocesses Auto
set ignore_six_quark_processes False
set low_mem_multicore_nlo_generation False
set complex_mass_scheme False
set include_lepton_initiated_processes False
set gauge unitary
set loop_optimized_output True
set loop_color_flows False
set max_npoint_for_channel 0
set default_unset_couplings 99
set max_t_for_channel 99
set zerowidth_tchannel True
set nlo_mixed_expansion True
import model sm

set auto_convert_model T
import model --modelname HAHM_variableMW_v3_UFO/
define l+ = e+ m+
define l- = e- m-
define q = u c d s b
define q~ = u~ c~ d~ s~ b~
define f = u c d s u~ c~ d~ s~ b b~ e+ e- m+ m- tt+ tt-

#*** generate the process: e+ e- -> Z -> Z h with Z -> q q~ and h -> 2hs -> 4b
generate e+ e- > z > z h, z > vl vl~, (h > hs hs, hs > b b~)

output h_2hs_4b_mhs20GeV_WHSe-14_NU

# launch the event generation
launch

#*** set electron beams and the center-of-mass energy to the ZH maximum production peak (240 GeV), i.e 120 GeV per electron beam

# set beam type; 0 for electron, 1 for proton
set lpp1 0
set lpp2 0
# set total energy in GeV for each beam
set ebeam1 120
set ebeam2 120

#*** set model parameters; couplings and masses

# the model accounts both dark scalars and dark photons, hence set the kinetic mixing coupling epsilon to zero and mass of dark photon high (to only simulate SM + dark scalar singlet)
set epsilon 1.000000e-10
set mZDinput 1.000000e+03

# set the mass of the dark scalar
set MHSinput 20.000000e+00

# set singlet-higgs coupling
set kap 7.000000e-04

# set the decay width to O(e-14) s.t sin^2 theta = O(e-10) and decay length O(mm)
set whs 5.7793e-14

# set the width of the higgs and the dark photon to auto
set wh Auto
set wzp Auto

# needed to get llp
set time_of_flight 0

# set number of events
set nevents 10000

done
Loading

0 comments on commit 565b59d

Please sign in to comment.