Index: trunk/HiggsBounds-5/minipaper.bib
===================================================================
--- trunk/HiggsBounds-5/minipaper.bib (revision 593)
+++ trunk/HiggsBounds-5/minipaper.bib (revision 594)
@@ -1,1808 +1,1717 @@
@misc{CDFnotes,
collaboration = "CDF",
- note = "CDF Notes 10500 10799 10573 8353 9999 10796 7307 10574 10485 7712 10010 10439 10599 10798",
+ note = "CDF Notes 9999 10574 7307 7712 10485 10010 10798 10799 10573 10439 10500 8353 10599 10796",
year = ""
}
@misc{D0notes,
collaboration = "D0",
title = "",
- note = "D0 Notes 6304 6305 6296 5873 6302 5739 6299 6227 6083 6295 6276 5845 6301 6183 6171 6286 6309 5757",
+ note = "D0 Notes 5845 6304 6276 6286 6305 6083 5873 5739 6227 6296 6299 6183 6301 6295 6309 6171 5757 6302",
year = ""
}
@misc{CMSnotes,
collaboration = "CMS",
title = "",
note = "CMS Physics Analysis Summaries",
year = ""
}
@misc{ATLASnotes,
collaboration = "ATLAS",
title = "",
- note = "ATLAS CONF Notes 2012-160 2016-062 2016-089 2016-049 2012-135 2013-013 2012-161 2016-004 2016-059 2014-049 2016-074 2014-050 2012-092 2012-078 2016-088 2012-016 2012-019 2016-044 2016-071 2012-168 2011-094 2013-010 2016-055 2011-157 2016-056 2012-012 2013-030 2016-015 2016-079 2012-017 2016-082",
+ note = "ATLAS CONF Notes 2016-079 2012-135 2012-017 2013-030 2016-044 2011-094 2016-049 2016-056 2013-010 2016-074 2012-078 2014-049 2014-050 2012-012 2013-013 2016-004 2016-055 2016-015 2012-161 2016-071 2016-088 2011-157 2012-160 2012-019 2012-016 2018-025 2016-082 2012-092 2012-168 2016-062",
year = ""
}
@misc{LHWGnotes,
collaboration = "LHWG",
title = "",
note = "LHWG Notes 2002-02",
year = ""
}
-% Save this file and include it in your paper as the bibliography
-% or cut and paste directly into your LaTeX
-
@Article{arXiv:0811.4169,
author = "Bechtle, Philip and Brein, Oliver and Heinemeyer, Sven and
Weiglein, Georg and Williams, Karina E.",
title = "{HiggsBounds: Confronting Arbitrary Higgs Sectors with
Exclusion Bounds from LEP and the Tevatron}",
journal = "Comput. Phys. Commun.",
volume = "181",
year = "2010",
pages = "138-167",
eprint = "0811.4169",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
doi = "10.1016/j.cpc.2009.09.003",
SLACcitation = "%%CITATION = 0811.4169;%%"
}
@Article{arXiv:1102.1898,
author = "Bechtle, Philip and Brein, Oliver and Heinemeyer, Sven and
Weiglein, Georg and Williams, Karina E.",
title = "{HiggsBounds 2.0.0: Confronting Neutral and Charged Higgs
Sector Predictions with Exclusion Bounds from LEP and the
Tevatron}",
journal = "Comput. Phys. Commun.",
volume = "182",
year = "2011",
pages = "2605-2631",
eprint = "1102.1898",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
doi = "10.1016/j.cpc.2011.07.015",
SLACcitation = "%%CITATION = 1102.1898;%%"
}
@Article{arXiv:1301.2345,
author = "Bechtle, Philip and others",
title = "{Recent Developments in HiggsBounds and a Preview of
HiggsSignals}",
journal = "PoS",
volume = "CHARGED2012",
year = "2012",
pages = "024",
eprint = "1301.2345",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
SLACcitation = "%%CITATION = 1301.2345;%%"
}
@Article{arXiv:1311.0055,
author = "Bechtle, Philip and others",
title = "{HiggsBounds-4: Improved Tests of Extended Higgs Sectors
against Exclusion Bounds from LEP, the Tevatron and the
LHC}",
journal = "Eur. Phys. J.",
volume = "C74",
year = "2014",
pages = "2693",
eprint = "1311.0055",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
SLACcitation = "%%CITATION = 1311.0055;%%"
}
@Article{arXiv:1507.06706,
author = "Bechtle, Philip and Heinemeyer, Sven and Stal, Oscar and
Stefaniak, Tim and Weiglein, Georg",
title = "{Applying Exclusion Likelihoods from LHC Searches to
Extended Higgs Sectors}",
year = "2015",
eprint = "1507.06706",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
SLACcitation = "%%CITATION = 1507.06706;%%"
}
-@Article{arXiv:1112.2577,
- author = "Aad, Georges",
+@Article{arXiv:1406.7663,
+ author = ",",
collaboration = "ATLAS",
- title = "{Search for the Higgs boson in the H->WW(*)->lvlv decay
- channel in pp collisions at sqrt{s} = 7 TeV with the ATLAS
- detector}",
- journal = "Phys. Rev. Lett.",
- volume = "108",
- year = "2012",
- pages = "111802",
- eprint = "1112.2577",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- doi = "10.1103/PhysRevLett.108.111802",
- SLACcitation = "%%CITATION = 1112.2577;%%"
-}
-
-@Article{arXiv:0806.0611,
- author = "Abazov, V. M. and others",
-collaboration = "D0",
- title = "{Search for a scalar or vector particle decaying into
- Zgamma in p anti-p collisions at s**(1/2) = 1.96-TeV}",
- journal = "Phys. Lett.",
- volume = "B671",
- year = "2009",
- pages = "349-355",
- eprint = "0806.0611",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- doi = "10.1016/j.physletb.2008.12.009",
- SLACcitation = "%%CITATION = 0806.0611;%%"
-}
-
-@Article{arXiv:1207.0449,
- author = "Group, CDF and D0 Collaborations and the Tevatron New Physics an
- ",
-collaboration = "Tevatron New Physics Higgs Working Group",
- title = "{Updated Combination of CDF and D0 Searches for Standard
- Model Higgs Boson Production with up to 10.0 fb$^{-1}$ of
- Data}",
- year = "2012",
- eprint = "1207.0449",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1207.0449;%%"
-}
-
-@Article{arXiv:0809.3930,
- author = "Aaltonen, T. and others",
-collaboration = "CDF",
- title = "{Search for a Higgs Boson Decaying to Two W Bosons at
- CDF}",
- journal = "Phys. Rev. Lett.",
- volume = "102",
- year = "2009",
- pages = "021802",
- eprint = "0809.3930",
+ title = "{Search for the Standard Model Higgs boson decay to
+ $\mu^{+}\mu^{-}$ with the ATLAS detector}",
+ journal = "Physics Letters",
+ volume = "B738",
+ year = "2014",
+ pages = "68-86",
+ eprint = "1406.7663",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- doi = "10.1103/PhysRevLett.102.021802",
- SLACcitation = "%%CITATION = 0809.3930;%%"
+ SLACcitation = "%%CITATION = 1406.7663;%%"
}
-@Article{arXiv:0901.1887,
- author = "Abazov, V. M. and others",
+@Article{arXiv:1106.4885,
+ author = "Abazov, Victor Mukhamedovich and others",
collaboration = "D0",
- title = "{Search for Resonant Diphoton Production with the D0
- Detector}",
+ title = "{Search for neutral Higgs bosons decaying to tau pairs
+ produced in association with b quarks in ppbar collisions
+ at sqrt(s)=1.96 TeV}",
journal = "Phys. Rev. Lett.",
- volume = "102",
- year = "2009",
- pages = "231801",
- eprint = "0901.1887",
+ volume = "107",
+ year = "2011",
+ pages = "121801",
+ eprint = "1106.4885",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- doi = "10.1103/PhysRevLett.102.231801",
- SLACcitation = "%%CITATION = 0901.1887;%%"
+ doi = "10.1103/PhysRevLett.107.121801",
+ SLACcitation = "%%CITATION = 1106.4885;%%"
}
-@Article{arXiv:1603.06896,
+@Article{arXiv:1603.02991,
author = ",",
collaboration = "CMS",
- title = "{Search for two Higgs bosons in final states containing two
- photons and two bottom quarks}",
+ title = "{Search for neutral resonances decaying into a Z boson and
+ a pair of b jets or tau leptons}",
+ journal = "Phys. Lett.",
+ volume = "B759",
year = "2016",
- eprint = "1603.06896",
+ pages = "369",
+ eprint = "1603.02991",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1603.06896;%%"
+ SLACcitation = "%%CITATION = 1603.02991;%%"
}
-@Article{arXiv:1108.3331,
- author = "Benjamin, Doug and others",
-collaboration = "CDF",
- title = "{Combined CDF and D0 upper limits on gg->H W+W- and
- constraints on the Higgs boson mass in fourth-generation
- fermion models with up to 8.2 fb-1 of data}",
+@Article{arXiv:1107.1268,
+ author = "Abazov, V. M. and others",
+collaboration = "D0",
+ title = "{Search for associated Higgs boson production using like
+ charge dilepton events in ppbar collisions at sqrt{s} =
+ 1.96 TeV}",
+ journal = "Phys. Rev.",
+ volume = "D84",
year = "2011",
- eprint = "1108.3331",
+ pages = "092002",
+ eprint = "1107.1268",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1108.3331;%%"
+ doi = "10.1103/PhysRevD.84.092002",
+ SLACcitation = "%%CITATION = 1107.1268;%%"
}
-@Article{arXiv:1109.3357,
- author = " and others",
-collaboration = "ATLAS",
- title = "{Search for a Standard Model Higgs boson in the H->ZZ-
-llnunu decay channel with the ATLAS detector}",
+% No SPIRES record found for cite request arXiv:1809.06682
+
+@Article{arXiv:1001.4468,
+ author = "Aaltonen, T. and others",
+collaboration = "CDF",
+ title = "{Inclusive Search for Standard Model Higgs Boson Production
+ in the WW Decay Channel using the CDF II Detector}",
journal = "Phys. Rev. Lett.",
- volume = "107",
- year = "2011",
- pages = "221802",
- eprint = "1109.3357",
+ volume = "104",
+ year = "2010",
+ pages = "061803",
+ eprint = "1001.4468",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- doi = "10.1103/PhysRevLett.107.221802",
- SLACcitation = "%%CITATION = 1109.3357;%%"
+ doi = "10.1103/PhysRevLett.104.061803",
+ SLACcitation = "%%CITATION = 1001.4468;%%"
}
-@Article{arXiv:1202.1408,
- author = "Aad, Georges",
-collaboration = "ATLAS",
- title = "{Combined search for the Standard Model Higgs boson using
- up to 4.9 fb$^{-1}$ of $pp$ collision data at $\sqrt{s}=7$
- TeV with the ATLAS detector at the LHC}",
- journal = "Phys. Lett.",
- volume = "B710",
- year = "2012",
- pages = "49-66",
- eprint = "1202.1408",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- doi = "10.1016/j.physletb.2012.02.044",
- SLACcitation = "%%CITATION = 1202.1408;%%"
-}
+% No SPIRES record found for cite request arXiv:1807.00539
-% No SPIRES record found for cite request arXiv:1712.06386
+% No SPIRES record found for cite request arXiv:1807.07915
-@Article{arXiv:1003.3363,
- author = "Benjamin, Doug and others",
-collaboration = "Tevatron New Phenomena and Higgs Working Group",
- title = "{Combined CDF and D0 upper limits on MSSM Higgs boson
- production in tau-tau final states with up to 2.2 fb-1}",
- year = "2010",
- eprint = "1003.3363",
+@Article{arXiv:1503.04233,
+ author = ",",
+collaboration = "ATLAS",
+ title = "{Search for a Charged Higgs Boson Produced in the Vector-
+ boson Fusion Mode with Decay $H^\pm \to W^\pm Z$ using $pp$
+ Collisions at $\sqrt{s}=8$ TeV with the ATLAS Experiment}",
+ journal = "",
+ volume = "",
+ year = "2015",
+ pages = "",
+ year = "2015",
+ eprint = "1503.04233",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1003.3363;%%"
+ SLACcitation = "%%CITATION = 1503.04233;%%"
}
-@Article{arXiv:1012.0874,
- author = "Abazov, Victor Mukhamedovich and others",
-collaboration = "D0",
- title = "{Search for $WH$ associated production in 5.3 fb$^{-1}$ of
- $p\bar{p}$ collisions at the Fermilab Tevatron}",
- journal = "Phys. Lett.",
- volume = "B698",
- year = "2011",
- pages = "6-13",
- eprint = "1012.0874",
+@Article{arXiv:1509.00389,
+ author = ",",
+collaboration = "ATLAS",
+ title = "{Search for a high-mass Higgs boson decaying to a $W$ boson
+ pair in $pp$ collisions at $\sqrt{s} = 8$ TeV with the
+ ATLAS detector}",
+ journal = "",
+ volume = "JHEP01",
+ year = "2016",
+ pages = "032",
+ year = "2015",
+ eprint = "1509.00389",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- doi = "10.1016/j.physletb.2011.02.036",
- SLACcitation = "%%CITATION = 1012.0874;%%"
+ SLACcitation = "%%CITATION = 1509.00389;%%"
}
-@Article{arXiv:1202.3478,
- author = "Chatrchyan, Serguei",
-collaboration = "CMS",
- title = "{Search for the standard model Higgs boson in the H to ZZ
- to 2l 2nu channel in pp collisions at sqrt(s) = 7 TeV}",
- journal = "JHEP",
- volume = "03",
- year = "2012",
- pages = "040",
- eprint = "1202.3478",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- doi = "10.1007/JHEP03(2012)040",
- SLACcitation = "%%CITATION = 1202.3478;%%"
-}
+% No SPIRES record found for cite request arXiv:1701.02032
-@Article{arXiv:1504.00936,
+@Article{arXiv:1504.04710,
author = ",",
collaboration = "CMS",
- title = "{Search for a Higgs boson in the mass range from 145 to
- 1000 GeV decaying to a pair of W or Z bosons}",
+ title = "{Search for a pseudoscalar boson decaying into a Z boson
+ and the 125 GeV Higgs boson in llbb final states}",
+ journal = "Phys. Lett.",
+ volume = "B748",
year = "2015",
- eprint = "1504.00936",
+ pages = "221",
+ eprint = "1504.04710",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1504.00936;%%"
+ SLACcitation = "%%CITATION = 1504.04710;%%"
}
-@Article{arXiv:1502.04478,
- author = ",",
-collaboration = "ATLAS",
- title = "{Search for a CP-odd Higgs boson decaying to $Zh$ in $pp$
- collisions at $\sqrt{s} = 8$ TeV with the ATLAS detector}",
- journal = "Physics Letters",
- volume = "B744",
- year = "2015",
- pages = "163-183",
- eprint = "1502.04478",
+% No SPIRES record found for cite request arXiv:1807.04873
+
+@Article{hep-ex/0107031,
+ author = "",
+collaboration = "LEP Higgs Working Group for Higgs boson searches",
+ title = "{Search for charged Higgs bosons: Preliminary combined
+ results using LEP data collected at energies up to 209-
+ GeV}",
+ year = "2001",
+ eprint = "hep-ex/0107031",
archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1502.04478;%%"
+ SLACcitation = "%%CITATION = HEP-EX/0107031;%%"
}
-@Article{arXiv:1509.05051,
- author = ",",
-collaboration = "ATLAS",
- title = "{Search for new phenomena in events with at least three
- photons collected in $pp$ collisions at $\sqrt{s}$ = 8 TeV
- with the ATLAS detector}",
- journal = "",
- volume = "",
- year = "2015",
- pages = "",
- year = "2015",
- eprint = "1509.05051",
+@Article{hep-ex/0410017,
+ author = "Abdallah, J. and others",
+collaboration = "DELPHI",
+ title = "{Searches for neutral Higgs bosons in extended models}",
+ journal = "Eur. Phys. J.",
+ volume = "C38",
+ year = "2004",
+ pages = "1-28",
+ eprint = "hep-ex/0410017",
archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1509.05051;%%"
+ doi = "10.1140/epjc/s2004-02011-4",
+ SLACcitation = "%%CITATION = HEP-EX/0410017;%%"
}
@Article{arXiv:1507.05930,
author = ",",
collaboration = "ATLAS",
title = "{Search for an additional, heavy Higgs boson in the
$H\rightarrow ZZ$ decay channel at $\sqrt{s}$ = 8 TeV in
$pp$ collision data with the ATLAS detector}",
journal = "Eur. Phys. J.",
volume = "C76",
year = "2016",
pages = "45",
eprint = "1507.05930",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
SLACcitation = "%%CITATION = 1507.05930;%%"
}
-@Article{arXiv:1011.1931,
- author = "Abazov, Victor Mukhamedovich and others",
-collaboration = "D0",
- title = "{Search for neutral Higgs bosons in the multi-b-jet
- topology in 5.2fb-1 of ppbar collisions at sqrt(s)=1.96
- TeV}",
- journal = "Phys. Lett.",
- volume = "B698",
- year = "2011",
- pages = "97-104",
- eprint = "1011.1931",
+@Article{arXiv:1407.6583,
+ author = ",",
+collaboration = "ATLAS",
+ title = "{Search for Scalar Diphoton Resonances in the Mass Range
+ $65-600$ GeV with the ATLAS Detector in $pp$ Collision Data
+ at $\sqrt{s}$ = 8 $TeV$}",
+ year = "2014",
+ eprint = "1407.6583",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- doi = "10.1016/j.physletb.2011.02.062",
- SLACcitation = "%%CITATION = 1011.1931;%%"
+ SLACcitation = "%%CITATION = 1407.6583;%%"
}
-@Article{arXiv:1506.00424,
+@Article{arXiv:1504.00936,
author = ",",
collaboration = "CMS",
- title = "{A search for pair production of new light bosons decaying
- into muons}",
- journal = "Phys. Lett.",
- volume = "B752",
- year = "2016",
- pages = "146",
- eprint = "1506.00424",
+ title = "{Search for a Higgs boson in the mass range from 145 to
+ 1000 GeV decaying to a pair of W or Z bosons}",
+ year = "2015",
+ eprint = "1504.00936",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1506.00424;%%"
+ SLACcitation = "%%CITATION = 1504.00936;%%"
}
-@Article{arXiv:1503.04233,
+@Article{arXiv:1406.5053,
author = ",",
collaboration = "ATLAS",
- title = "{Search for a Charged Higgs Boson Produced in the Vector-
- boson Fusion Mode with Decay $H^\pm \to W^\pm Z$ using $pp$
- Collisions at $\sqrt{s}=8$ TeV with the ATLAS Experiment}",
+ title = "{Search For Higgs Boson Pair Production in the
+ $\gamma\gamma b\bar{b}$ Final State using $pp$ Collision
+ Data at $\sqrt{s}=8$ TeV from the ATLAS Detector}",
journal = "",
volume = "",
- year = "2015",
+ year = "2014",
pages = "",
- year = "2015",
- eprint = "1503.04233",
+ year = "2014",
+ eprint = "1406.5053",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1503.04233;%%"
+ SLACcitation = "%%CITATION = 1406.5053;%%"
}
@Article{arXiv:1008.3564,
author = "Abazov, Victor Mukhamedovich and others",
collaboration = "D0",
title = "{Search for $ZH \rightarrow \ell^+\ell^-b\bar{b}$
production in $4.2$~fb$^{-1}$ of $p\bar{p}$ collisions at
$\sqrt{s}=1.96$ TeV}",
journal = "Phys. Rev. Lett.",
volume = "105",
year = "2010",
pages = "251801",
eprint = "1008.3564",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
doi = "10.1103/PhysRevLett.105.251801",
SLACcitation = "%%CITATION = 1008.3564;%%"
}
-@Article{hep-ex/0404012,
+@Article{hep-ex/0401022,
author = "Abdallah, J. and others",
collaboration = "DELPHI",
- title = "{Search for charged Higgs bosons at LEP in general two
- Higgs doublet models}",
+ title = "{Searches for invisibly decaying Higgs bosons with the
+ DELPHI detector at LEP}",
journal = "Eur. Phys. J.",
- volume = "C34",
+ volume = "C32",
year = "2004",
- pages = "399-418",
- eprint = "hep-ex/0404012",
+ pages = "475-492",
+ eprint = "hep-ex/0401022",
archivePrefix = "arXiv",
- doi = "10.1140/epjc/s2004-01732-6",
- SLACcitation = "%%CITATION = HEP-EX/0404012;%%"
+ doi = "10.1140/epjc/s2003-01469-8",
+ SLACcitation = "%%CITATION = HEP-EX/0401022;%%"
}
-@Article{arXiv:1108.5064,
- author = "Aad, Georges",
-collaboration = "ATLAS",
- title = "{Search for a heavy Standard Model Higgs boson in the
- channel H->ZZ->llqq using the ATLAS detector}",
+@Article{arXiv:1506.02301,
+ author = ",",
+collaboration = "CMS",
+ title = "{Search for diphoton resonances in the mass range from 150
+ to 850 GeV in pp collisions at sqrt(s) = 8 TeV}",
journal = "Phys. Lett.",
- volume = "B707",
- year = "2012",
- pages = "27-45",
- eprint = "1108.5064",
+ volume = "B750",
+ year = "2015",
+ pages = "494",
+ eprint = "1506.02301",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- doi = "10.1016/j.physletb.2011.11.056",
- SLACcitation = "%%CITATION = 1108.5064;%%"
+ SLACcitation = "%%CITATION = 1506.02301;%%"
}
% No SPIRES record found for cite request arXiv:1710.01123
-@Article{arXiv:1509.00389,
- author = ",",
+@Article{arXiv:1202.1415,
+ author = "Aad, G. and others",
collaboration = "ATLAS",
- title = "{Search for a high-mass Higgs boson decaying to a $W$ boson
- pair in $pp$ collisions at $\sqrt{s} = 8$ TeV with the
- ATLAS detector}",
- journal = "",
- volume = "JHEP01",
- year = "2016",
- pages = "032",
- year = "2015",
- eprint = "1509.00389",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1509.00389;%%"
-}
-
-@Article{arXiv:1202.1416,
- author = "Chatrchyan, Serguei",
-collaboration = "CMS",
- title = "{Search for a Higgs boson in the decay channel H to ZZ(*)
- to q qbar l-l+ in pp collisions at sqrt(s) = 7 TeV}",
- journal = "JHEP",
- volume = "04",
- year = "2012",
- pages = "036",
- eprint = "1202.1416",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- doi = "10.1007/JHEP04(2012)036",
- SLACcitation = "%%CITATION = 1202.1416;%%"
-}
-
-@Article{hep-ex/0501033,
- author = "Achard, P. and others",
-collaboration = "L3",
- title = "{Search for an invisibly-decaying Higgs boson at LEP}",
+ title = "{Search for the Standard Model Higgs boson in the decay
+ channel H->ZZ(*)->4l with 4.8 fb-1 of pp collision data at
+ sqrt(s) = 7 TeV with ATLAS}",
journal = "Phys. Lett.",
- volume = "B609",
- year = "2005",
- pages = "35-48",
- eprint = "hep-ex/0501033",
- archivePrefix = "arXiv",
- doi = "10.1016/j.physletb.2005.01.030",
- SLACcitation = "%%CITATION = HEP-EX/0501033;%%"
-}
-
-% No SPIRES record found for cite request arXiv:1701.02032
-
-@Article{arXiv:1506.08329,
- author = ",",
-collaboration = "CMS",
- title = "{Search for neutral MSSM Higgs bosons decaying into a pair
- of bottom quarks}",
- journal = "",
- volume = "JHEP11",
- year = "2015",
- pages = "071",
- year = "2015",
- eprint = "1506.08329",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1506.08329;%%"
-}
-
-@Article{arXiv:0905.3381,
- author = "Abazov, V. M. and others",
-collaboration = "D0",
- title = "{Search for NMSSM Higgs bosons in the $h \to a a
- \to\mu\mu\: \mu\mu, \mu\mu \: \tau\tau$ channels using $p
- \bar{p}$ collisions at $\sqrt{s}$=1.96 TeV}",
- journal = "Phys. Rev. Lett.",
- volume = "103",
- year = "2009",
- pages = "061801",
- eprint = "0905.3381",
+ volume = "B710",
+ year = "2012",
+ pages = "383-402",
+ eprint = "1202.1415",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- doi = "10.1103/PhysRevLett.103.061801",
- SLACcitation = "%%CITATION = 0905.3381;%%"
+ doi = "10.1016/j.physletb.2012.03.005",
+ SLACcitation = "%%CITATION = 1202.1415;%%"
}
@Article{arXiv:1001.4481,
author = "Abazov, V. M. and others",
collaboration = "D0",
title = "{Search for Higgs boson production in dilepton and missing
energy final states with ~5.4 $\bm{\mathrm{fb^{-1}}}$ of
$\bm{p\bar{p}}$ collisions at $\bm{\sqrt $s$ =1.96}$ TeV}",
journal = "Phys. Rev. Lett.",
volume = "104",
year = "2010",
pages = "061804",
eprint = "1001.4481",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
doi = "10.1103/PhysRevLett.104.061804",
SLACcitation = "%%CITATION = 1001.4481;%%"
}
-% No SPIRES record found for cite request arXiv:1709.07242
+@Article{arXiv:1107.4960,
+ author = " and others",
+collaboration = "TEVNPH Working Group",
+ title = "{Combined CDF and D0 Searches for the Standard Model Higgs
+ Boson Decaying to Two Photons with up to 8.2 fb^-1}",
+ year = "2011",
+ eprint = "1107.4960",
+ archivePrefix = "arXiv",
+ primaryClass = "hep-ex",
+ SLACcitation = "%%CITATION = 1107.4960;%%"
+}
@Article{arXiv:1402.3244,
author = ",",
collaboration = "ATLAS",
title = "{Search for Invisible Decays of a Higgs Boson Produced in
Association with a Z Boson in ATLAS}",
journal = "",
volume = "",
year = "2014",
pages = "",
year = "2014",
eprint = "1402.3244",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
SLACcitation = "%%CITATION = 1402.3244;%%"
}
-@Article{arXiv:1409.6064,
+@Article{arXiv:1112.2577,
+ author = "Aad, Georges",
+collaboration = "ATLAS",
+ title = "{Search for the Higgs boson in the H->WW(*)->lvlv decay
+ channel in pp collisions at sqrt{s} = 7 TeV with the ATLAS
+ detector}",
+ journal = "Phys. Rev. Lett.",
+ volume = "108",
+ year = "2012",
+ pages = "111802",
+ eprint = "1112.2577",
+ archivePrefix = "arXiv",
+ primaryClass = "hep-ex",
+ doi = "10.1103/PhysRevLett.108.111802",
+ SLACcitation = "%%CITATION = 1112.2577;%%"
+}
+
+@Article{arXiv:1301.6065,
+ author = "Abbiendi, G. and others",
+collaboration = "ALEPH",
+ title = "{Search for Charged Higgs bosons: Combined Results Using
+ LEP Data}",
+ year = "2013",
+ eprint = "1301.6065",
+ archivePrefix = "arXiv",
+ primaryClass = "hep-ex",
+ SLACcitation = "%%CITATION = 1301.6065;%%"
+}
+
+% No SPIRES record found for cite request arXiv:1807.08567
+
+@Article{arXiv:0906.1014,
+ author = "Aaltonen, T. and others",
+collaboration = "CDF",
+ title = "{Search for Higgs bosons predicted in two-Higgs-doublet
+ models via decays to tau lepton pairs in 1.96 TeV proton-
+ antiproton collisions}",
+ journal = "Phys. Rev. Lett.",
+ volume = "103",
+ year = "2009",
+ pages = "201801",
+ eprint = "0906.1014",
+ archivePrefix = "arXiv",
+ primaryClass = "hep-ex",
+ doi = "10.1103/PhysRevLett.103.201801",
+ SLACcitation = "%%CITATION = 0906.1014;%%"
+}
+
+@Article{arXiv:1503.04114,
+ author = ",",
+collaboration = "CMS",
+ title = "{Search for resonant pair production of Higgs bosons
+ decaying to two bottom quark-antiquark pairs in proton-
+ proton collisions at 8 TeV}",
+ journal = "Phys. Lett.",
+ volume = "B749",
+ year = "2015",
+ pages = "560",
+ eprint = "1503.04114",
+ archivePrefix = "arXiv",
+ primaryClass = "hep-ex",
+ SLACcitation = "%%CITATION = 1503.04114;%%"
+}
+
+@Article{arXiv:1509.05051,
author = ",",
collaboration = "ATLAS",
- title = "{Search for neutral Higgs bosons of the minimal
- supersymmetric standard model in pp collisions at
- $\sqrt{s}$ = 8 TeV with the ATLAS detector}",
+ title = "{Search for new phenomena in events with at least three
+ photons collected in $pp$ collisions at $\sqrt{s}$ = 8 TeV
+ with the ATLAS detector}",
journal = "",
volume = "",
- year = "2014",
+ year = "2015",
pages = "",
- year = "2014",
- eprint = "1409.6064",
+ year = "2015",
+ eprint = "1509.05051",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1409.6064;%%"
+ SLACcitation = "%%CITATION = 1509.05051;%%"
}
+@Article{arXiv:1202.1997,
+ author = "Chatrchyan, Serguei",
+collaboration = "CMS",
+ title = "{Search for the standard model Higgs boson in the decay
+ channel H to ZZ to 4 leptons in pp collisions at sqrt(s) =
+ 7 TeV}",
+ journal = "Phys. Rev. Lett.",
+ volume = "108",
+ year = "2012",
+ pages = "111804",
+ eprint = "1202.1997",
+ archivePrefix = "arXiv",
+ primaryClass = "hep-ex",
+ doi = "10.1103/PhysRevLett.108.111804",
+ SLACcitation = "%%CITATION = 1202.1997;%%"
+}
+
+@Article{hep-ex/0111010,
+ author = "Abbiendi, G. and others",
+collaboration = "OPAL",
+ title = "{Search for Yukawa production of a light neutral Higgs
+ boson at LEP}",
+ journal = "Eur. Phys. J.",
+ volume = "C23",
+ year = "2002",
+ pages = "397-407",
+ eprint = "hep-ex/0111010",
+ archivePrefix = "arXiv",
+ doi = "10.1007/s100520200896",
+ SLACcitation = "%%CITATION = HEP-EX/0111010;%%"
+}
+
+@Article{hep-ex/0602042,
+ author = "Schael, S. and others",
+collaboration = "ALEPH",
+ title = "{Search for neutral MSSM Higgs bosons at LEP}",
+ journal = "Eur. Phys. J.",
+ volume = "C47",
+ year = "2006",
+ pages = "547-587",
+ eprint = "hep-ex/0602042",
+ archivePrefix = "arXiv",
+ doi = "10.1140/epjc/s2006-02569-7",
+ SLACcitation = "%%CITATION = HEP-EX/0602042;%%"
+}
+
+@Article{arXiv:1011.1931,
+ author = "Abazov, Victor Mukhamedovich and others",
+collaboration = "D0",
+ title = "{Search for neutral Higgs bosons in the multi-b-jet
+ topology in 5.2fb-1 of ppbar collisions at sqrt(s)=1.96
+ TeV}",
+ journal = "Phys. Lett.",
+ volume = "B698",
+ year = "2011",
+ pages = "97-104",
+ eprint = "1011.1931",
+ archivePrefix = "arXiv",
+ primaryClass = "hep-ex",
+ doi = "10.1016/j.physletb.2011.02.062",
+ SLACcitation = "%%CITATION = 1011.1931;%%"
+}
+
+% No SPIRES record found for cite request arXiv:1707.04147
+
@Article{arXiv:1509.04670,
author = ",",
collaboration = "ATLAS",
title = "{Searches for Higgs boson pair production in the $hh\to
bb\tau\tau, \gamma\gamma WW*, \gamma\gamma bb, bbbb$
channels with the ATLAS detector}",
journal = "",
volume = "",
year = "2015",
pages = "",
year = "2015",
eprint = "1509.04670",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
SLACcitation = "%%CITATION = 1509.04670;%%"
}
-@Article{arXiv:0908.1811,
- author = "Abazov, V. M. and others",
-collaboration = "D0",
- title = "{Search for charged Higgs bosons in top quark decays}",
- journal = "Phys. Lett.",
- volume = "B682",
- year = "2009",
- pages = "278-286",
- eprint = "0908.1811",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- doi = "10.1016/j.physletb.2009.11.016",
- SLACcitation = "%%CITATION = 0908.1811;%%"
-}
-
-@Article{hep-ex/0410017,
- author = "Abdallah, J. and others",
-collaboration = "DELPHI",
- title = "{Searches for neutral Higgs bosons in extended models}",
- journal = "Eur. Phys. J.",
- volume = "C38",
- year = "2004",
- pages = "1-28",
- eprint = "hep-ex/0410017",
- archivePrefix = "arXiv",
- doi = "10.1140/epjc/s2004-02011-4",
- SLACcitation = "%%CITATION = HEP-EX/0410017;%%"
-}
-
@Article{arXiv:1202.1414,
author = "Aad, Georges",
collaboration = "ATLAS",
title = "{Search for the Standard Model Higgs boson in the diphoton
decay channel with 4.9 fb$^{-1}$ of $pp$ collisions at
$\sqrt{s}=7$ TeV with ATLAS}",
journal = "Phys. Rev. Lett.",
volume = "108",
year = "2012",
pages = "111803",
eprint = "1202.1414",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
doi = "10.1103/PhysRevLett.108.111803",
SLACcitation = "%%CITATION = 1202.1414;%%"
}
-@Article{arXiv:1001.4468,
- author = "Aaltonen, T. and others",
-collaboration = "CDF",
- title = "{Inclusive Search for Standard Model Higgs Boson Production
- in the WW Decay Channel using the CDF II Detector}",
+% No SPIRES record found for cite request arXiv:1709.07242
+
+@Article{arXiv:1109.3357,
+ author = " and others",
+collaboration = "ATLAS",
+ title = "{Search for a Standard Model Higgs boson in the H->ZZ-
+llnunu decay channel with the ATLAS detector}",
journal = "Phys. Rev. Lett.",
- volume = "104",
- year = "2010",
- pages = "061803",
- eprint = "1001.4468",
+ volume = "107",
+ year = "2011",
+ pages = "221802",
+ eprint = "1109.3357",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- doi = "10.1103/PhysRevLett.104.061803",
- SLACcitation = "%%CITATION = 1001.4468;%%"
+ doi = "10.1103/PhysRevLett.107.221802",
+ SLACcitation = "%%CITATION = 1109.3357;%%"
}
-@Article{arXiv:1204.2760,
- author = "Aad, Georges",
-collaboration = "ATLAS",
- title = "{Search for charged Higgs bosons decaying via H+ -> tau nu
- in top quark pair events using pp collision data at sqrt(s)
- = 7 TeV with the ATLAS detector}",
- journal = "JHEP",
- volume = "06",
+% No SPIRES record found for cite request arXiv:1808.03599
+
+@Article{arXiv:0812.0267,
+ author = "Abbiendi, G. and others",
+collaboration = "OPAL",
+ title = "{Search for Charged Higgs Bosons in e+e- Collisions at
+ sqrts(s) = 189-209 GeV}",
+ journal = "Eur. Phys. J.",
+ volume = "C72",
year = "2012",
- pages = "039",
- eprint = "1204.2760",
+ pages = "2076",
+ eprint = "0812.0267",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- doi = "10.1007/JHEP06(2012)039",
- SLACcitation = "%%CITATION = 1204.2760;%%"
+ doi = "10.1140/epjc/s10052-012-2076-0",
+ SLACcitation = "%%CITATION = 0812.0267;%%"
+}
+
+@Article{arXiv:0806.0611,
+ author = "Abazov, V. M. and others",
+collaboration = "D0",
+ title = "{Search for a scalar or vector particle decaying into
+ Zgamma in p anti-p collisions at s**(1/2) = 1.96-TeV}",
+ journal = "Phys. Lett.",
+ volume = "B671",
+ year = "2009",
+ pages = "349-355",
+ eprint = "0806.0611",
+ archivePrefix = "arXiv",
+ primaryClass = "hep-ex",
+ doi = "10.1016/j.physletb.2008.12.009",
+ SLACcitation = "%%CITATION = 0806.0611;%%"
+}
+
+@Article{arXiv:1510.01181,
+ author = ",",
+collaboration = "CMS",
+ title = "{Searches for a heavy scalar boson H decaying to a pair of
+ 125 GeV Higgs bosons hh or for a heavy pseudoscalar boson A
+ decaying to Zh, in the final states with h to tau tau}",
+ journal = "Phys. Lett.",
+ volume = "B755",
+ year = "2016",
+ pages = "217",
+ eprint = "1510.01181",
+ archivePrefix = "arXiv",
+ primaryClass = "hep-ex",
+ SLACcitation = "%%CITATION = 1510.01181;%%"
+}
+
+@Article{arXiv:1307.5515,
+ author = ",",
+collaboration = "CMS",
+ title = "{Search for a Higgs boson decaying into a Z and a photon in
+ pp collisions at sqrt(s) = 7 and 8 TeV}",
+ journal = "Phys. Lett.",
+ volume = "B726",
+ year = "2013",
+ pages = "587",
+ eprint = "1307.5515",
+ archivePrefix = "arXiv",
+ primaryClass = "hep-ex",
+ SLACcitation = "%%CITATION = 1307.5515;%%"
+}
+
+@Article{hep-ex/0206022,
+ author = "Abbiendi, G. and others",
+collaboration = "OPAL",
+ title = "{Decay-mode independent searches for new scalar bosons with
+ the OPAL detector at LEP}",
+ journal = "Eur. Phys. J.",
+ volume = "C27",
+ year = "2003",
+ pages = "311-329",
+ eprint = "hep-ex/0206022",
+ archivePrefix = "arXiv",
+ doi = "10.1140/epjc/s2002-01115-1",
+ SLACcitation = "%%CITATION = HEP-EX/0206022;%%"
+}
+
+@Article{arXiv:1108.3331,
+ author = "Benjamin, Doug and others",
+collaboration = "CDF",
+ title = "{Combined CDF and D0 upper limits on gg->H W+W- and
+ constraints on the Higgs boson mass in fourth-generation
+ fermion models with up to 8.2 fb-1 of data}",
+ year = "2011",
+ eprint = "1108.3331",
+ archivePrefix = "arXiv",
+ primaryClass = "hep-ex",
+ SLACcitation = "%%CITATION = 1108.3331;%%"
+}
+
+@Article{arXiv:0707.0373,
+ author = "Abbiendi, G. and others",
+collaboration = "OPAL",
+ title = "{Search for invisibly decaying Higgs bosons in $e^+e^- \to
+ Z^0 h^0$ production at $\sqrt{s}$=183 - 209 GeV}",
+ journal = "Phys. Lett.",
+ volume = "B682",
+ year = "2010",
+ pages = "381-390",
+ eprint = "0707.0373",
+ archivePrefix = "arXiv",
+ primaryClass = "hep-ex",
+ doi = "10.1016/j.physletb.2009.09.010",
+ SLACcitation = "%%CITATION = 0707.0373;%%"
}
@Article{arXiv:0906.5613,
author = "Aaltonen, T. and others",
collaboration = "CDF",
title = "{Search for a Higgs Boson in $W H \to \ell \nu b \bar{b}$
in $p\bar{p}$ Collisions at $\sqrt{s} = 1.96$ TeV}",
journal = "Phys. Rev. Lett.",
volume = "103",
year = "2009",
pages = "101802",
eprint = "0906.5613",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
doi = "10.1103/PhysRevLett.103.101802",
SLACcitation = "%%CITATION = 0906.5613;%%"
}
+@Article{arXiv:1506.00424,
+ author = ",",
+collaboration = "CMS",
+ title = "{A search for pair production of new light bosons decaying
+ into muons}",
+ journal = "Phys. Lett.",
+ volume = "B752",
+ year = "2016",
+ pages = "146",
+ eprint = "1506.00424",
+ archivePrefix = "arXiv",
+ primaryClass = "hep-ex",
+ SLACcitation = "%%CITATION = 1506.00424;%%"
+}
+
+@Article{arXiv:1409.6064,
+ author = ",",
+collaboration = "ATLAS",
+ title = "{Search for neutral Higgs bosons of the minimal
+ supersymmetric standard model in pp collisions at
+ $\sqrt{s}$ = 8 TeV with the ATLAS detector}",
+ journal = "",
+ volume = "",
+ year = "2014",
+ pages = "",
+ year = "2014",
+ eprint = "1409.6064",
+ archivePrefix = "arXiv",
+ primaryClass = "hep-ex",
+ SLACcitation = "%%CITATION = 1409.6064;%%"
+}
+
+@Article{arXiv:1207.0449,
+ author = "Group, CDF and D0 Collaborations and the Tevatron New Physics an
+ ",
+collaboration = "Tevatron New Physics Higgs Working Group",
+ title = "{Updated Combination of CDF and D0 Searches for Standard
+ Model Higgs Boson Production with up to 10.0 fb$^{-1}$ of
+ Data}",
+ year = "2012",
+ eprint = "1207.0449",
+ archivePrefix = "arXiv",
+ primaryClass = "hep-ex",
+ SLACcitation = "%%CITATION = 1207.0449;%%"
+}
+
@Article{arXiv:1207.7214,
author = "",
collaboration = "ATLAS",
title = "{Observation of a new particle in the search for the
Standard Model Higgs boson with the ATLAS detector at the
LHC}",
journal = "Phys. Lett.",
volume = "B716",
year = "2012",
pages = "1-29",
eprint = "1207.7214",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
doi = "10.1016/j.physletb.2012.08.020",
SLACcitation = "%%CITATION = 1207.7214;%%"
}
-@Article{arXiv:0812.0267,
- author = "Abbiendi, G. and others",
-collaboration = "OPAL",
- title = "{Search for Charged Higgs Bosons in e+e- Collisions at
- sqrts(s) = 189-209 GeV}",
- journal = "Eur. Phys. J.",
- volume = "C72",
- year = "2012",
- pages = "2076",
- eprint = "0812.0267",
+@Article{hep-ex/0501033,
+ author = "Achard, P. and others",
+collaboration = "L3",
+ title = "{Search for an invisibly-decaying Higgs boson at LEP}",
+ journal = "Phys. Lett.",
+ volume = "B609",
+ year = "2005",
+ pages = "35-48",
+ eprint = "hep-ex/0501033",
archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- doi = "10.1140/epjc/s10052-012-2076-0",
- SLACcitation = "%%CITATION = 0812.0267;%%"
+ doi = "10.1016/j.physletb.2005.01.030",
+ SLACcitation = "%%CITATION = HEP-EX/0501033;%%"
}
-@Article{arXiv:1207.6436,
+@Article{arXiv:0907.1269,
author = "Aaltonen, T. and others",
collaboration = "CDF",
- title = "{Evidence for a particle produced in association with weak
- bosons and decaying to a bottom-antibottom quark pair in
- Higgs boson searches at the Tevatron}",
+ title = "{Search for charged Higgs bosons in decays of top quarks in
+ $p-\bar{p}$ collisions at $\sqrt{s} = 1.96$ TeV}",
journal = "Phys. Rev. Lett.",
- volume = "109",
- year = "2012",
- pages = "071804",
- eprint = "1207.6436",
+ volume = "103",
+ year = "2009",
+ pages = "101803",
+ eprint = "0907.1269",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- doi = "10.1103/PhysRevLett.109.071804",
- SLACcitation = "%%CITATION = 1207.6436;%%"
+ doi = "10.1103/PhysRevLett.103.101803",
+ SLACcitation = "%%CITATION = 0907.1269;%%"
}
-@Article{arXiv:0707.0373,
- author = "Abbiendi, G. and others",
-collaboration = "OPAL",
- title = "{Search for invisibly decaying Higgs bosons in $e^+e^- \to
- Z^0 h^0$ production at $\sqrt{s}$=183 - 209 GeV}",
- journal = "Phys. Lett.",
- volume = "B682",
- year = "2010",
- pages = "381-390",
- eprint = "0707.0373",
+@Article{arXiv:1202.3478,
+ author = "Chatrchyan, Serguei",
+collaboration = "CMS",
+ title = "{Search for the standard model Higgs boson in the H to ZZ
+ to 2l 2nu channel in pp collisions at sqrt(s) = 7 TeV}",
+ journal = "JHEP",
+ volume = "03",
+ year = "2012",
+ pages = "040",
+ eprint = "1202.3478",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- doi = "10.1016/j.physletb.2009.09.010",
- SLACcitation = "%%CITATION = 0707.0373;%%"
+ doi = "10.1007/JHEP03(2012)040",
+ SLACcitation = "%%CITATION = 1202.3478;%%"
}
-@Article{arXiv:1603.02991,
+@Article{arXiv:1506.08329,
author = ",",
collaboration = "CMS",
- title = "{Search for neutral resonances decaying into a Z boson and
- a pair of b jets or tau leptons}",
- journal = "Phys. Lett.",
- volume = "B759",
- year = "2016",
- pages = "369",
- eprint = "1603.02991",
+ title = "{Search for neutral MSSM Higgs bosons decaying into a pair
+ of bottom quarks}",
+ journal = "",
+ volume = "JHEP11",
+ year = "2015",
+ pages = "071",
+ year = "2015",
+ eprint = "1506.08329",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1603.02991;%%"
+ SLACcitation = "%%CITATION = 1506.08329;%%"
+}
+
+@Article{arXiv:1502.04478,
+ author = ",",
+collaboration = "ATLAS",
+ title = "{Search for a CP-odd Higgs boson decaying to $Zh$ in $pp$
+ collisions at $\sqrt{s} = 8$ TeV with the ATLAS detector}",
+ journal = "Physics Letters",
+ volume = "B744",
+ year = "2015",
+ pages = "163-183",
+ eprint = "1502.04478",
+ archivePrefix = "arXiv",
+ primaryClass = "hep-ex",
+ SLACcitation = "%%CITATION = 1502.04478;%%"
}
@Article{arXiv:1402.3051,
author = ",",
collaboration = "ATLAS",
title = "{Search for Higgs boson decays to a photon and a Z boson in
pp collisions at sqrt(s)=7 and 8 TeV with the ATLAS
detector}",
journal = "Phys. Lett.",
volume = "B732",
year = "2014",
pages = "8-27",
eprint = "1402.3051",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
doi = "10.1016/j.physletb.2014.03.015",
SLACcitation = "%%CITATION = 1402.3051;%%"
}
-@Article{hep-ex/0107032,
- author = "",
-collaboration = "LEP Higgs Working for Higgs boson searches",
- title = "{Searches for Invisible Higgs bosons: Preliminary combined
- results using LEP data collected at energies up to 209
- GeV}",
- year = "2001",
- eprint = "hep-ex/0107032",
- archivePrefix = "arXiv",
- SLACcitation = "%%CITATION = HEP-EX/0107032;%%"
-}
-
-@Article{hep-ex/0602042,
- author = "Schael, S. and others",
-collaboration = "ALEPH",
- title = "{Search for neutral MSSM Higgs bosons at LEP}",
- journal = "Eur. Phys. J.",
- volume = "C47",
- year = "2006",
- pages = "547-587",
- eprint = "hep-ex/0602042",
- archivePrefix = "arXiv",
- doi = "10.1140/epjc/s2006-02569-7",
- SLACcitation = "%%CITATION = HEP-EX/0602042;%%"
-}
-
-@Article{hep-ex/0111010,
- author = "Abbiendi, G. and others",
-collaboration = "OPAL",
- title = "{Search for Yukawa production of a light neutral Higgs
- boson at LEP}",
- journal = "Eur. Phys. J.",
- volume = "C23",
- year = "2002",
- pages = "397-407",
- eprint = "hep-ex/0111010",
+@Article{arXiv:1603.06896,
+ author = ",",
+collaboration = "CMS",
+ title = "{Search for two Higgs bosons in final states containing two
+ photons and two bottom quarks}",
+ year = "2016",
+ eprint = "1603.06896",
archivePrefix = "arXiv",
- doi = "10.1007/s100520200896",
- SLACcitation = "%%CITATION = HEP-EX/0111010;%%"
+ primaryClass = "hep-ex",
+ SLACcitation = "%%CITATION = 1603.06896;%%"
}
@Article{arXiv:1106.4555,
author = "Abazov, Victor Mukhamedovich and others",
collaboration = "D0",
title = "{Search for Higgs bosons decaying to tautau pairs in ppbar
collisions at sqrt(s) = 1.96 TeV}",
journal = "Phys. Lett.",
volume = "B707",
year = "2012",
pages = "323-329",
eprint = "1106.4555",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
doi = "10.1016/j.physletb.2011.12.050",
SLACcitation = "%%CITATION = 1106.4555;%%"
}
-@Article{arXiv:1503.04114,
- author = ",",
-collaboration = "CMS",
- title = "{Search for resonant pair production of Higgs bosons
- decaying to two bottom quark-antiquark pairs in proton-
- proton collisions at 8 TeV}",
- journal = "Phys. Lett.",
- volume = "B749",
- year = "2015",
- pages = "560",
- eprint = "1503.04114",
+@Article{arXiv:1204.2760,
+ author = "Aad, Georges",
+collaboration = "ATLAS",
+ title = "{Search for charged Higgs bosons decaying via H+ -> tau nu
+ in top quark pair events using pp collision data at sqrt(s)
+ = 7 TeV with the ATLAS detector}",
+ journal = "JHEP",
+ volume = "06",
+ year = "2012",
+ pages = "039",
+ eprint = "1204.2760",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1503.04114;%%"
+ doi = "10.1007/JHEP06(2012)039",
+ SLACcitation = "%%CITATION = 1204.2760;%%"
}
-@Article{hep-ex/0107031,
+@Article{hep-ex/0107034,
author = "",
collaboration = "LEP Higgs Working Group for Higgs boson searches",
- title = "{Search for charged Higgs bosons: Preliminary combined
- results using LEP data collected at energies up to 209-
- GeV}",
+ title = "{Flavor independent search for hadronically decaying
+ neutral Higgs bosons at LEP}",
year = "2001",
- eprint = "hep-ex/0107031",
+ eprint = "hep-ex/0107034",
archivePrefix = "arXiv",
- SLACcitation = "%%CITATION = HEP-EX/0107031;%%"
+ SLACcitation = "%%CITATION = HEP-EX/0107034;%%"
}
-@Article{arXiv:1407.6583,
- author = ",",
-collaboration = "ATLAS",
- title = "{Search for Scalar Diphoton Resonances in the Mass Range
- $65-600$ GeV with the ATLAS Detector in $pp$ Collision Data
- at $\sqrt{s}$ = 8 $TeV$}",
- year = "2014",
- eprint = "1407.6583",
+@Article{arXiv:1202.1488,
+ author = "Chatrchyan, Serguei",
+collaboration = "CMS",
+ title = "{Combined results of searches for the standard model Higgs
+ boson in pp collisions at sqrt(s) = 7 TeV}",
+ journal = "Phys. Lett.",
+ volume = "B710",
+ year = "2012",
+ pages = "26-48",
+ eprint = "1202.1488",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1407.6583;%%"
+ doi = "10.1016/j.physletb.2012.02.064",
+ SLACcitation = "%%CITATION = 1202.1488;%%"
}
-@Article{arXiv:1404.1344,
- author = ",",
-collaboration = "CMS",
- title = "{Search for invisible decays of Higgs bosons in the vector
- boson fusion and associated ZH production modes}",
- journal = "Eur. Phys. J.",
- volume = "C74",
- year = "2014",
- pages = "2980",
- eprint = "1404.1344",
+@Article{arXiv:0809.3930,
+ author = "Aaltonen, T. and others",
+collaboration = "CDF",
+ title = "{Search for a Higgs Boson Decaying to Two W Bosons at
+ CDF}",
+ journal = "Phys. Rev. Lett.",
+ volume = "102",
+ year = "2009",
+ pages = "021802",
+ eprint = "0809.3930",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1404.1344;%%"
+ doi = "10.1103/PhysRevLett.102.021802",
+ SLACcitation = "%%CITATION = 0809.3930;%%"
}
-@Article{hep-ex/0401022,
+@Article{arXiv:0901.1887,
+ author = "Abazov, V. M. and others",
+collaboration = "D0",
+ title = "{Search for Resonant Diphoton Production with the D0
+ Detector}",
+ journal = "Phys. Rev. Lett.",
+ volume = "102",
+ year = "2009",
+ pages = "231801",
+ eprint = "0901.1887",
+ archivePrefix = "arXiv",
+ primaryClass = "hep-ex",
+ doi = "10.1103/PhysRevLett.102.231801",
+ SLACcitation = "%%CITATION = 0901.1887;%%"
+}
+
+@Article{hep-ex/0404012,
author = "Abdallah, J. and others",
collaboration = "DELPHI",
- title = "{Searches for invisibly decaying Higgs bosons with the
- DELPHI detector at LEP}",
+ title = "{Search for charged Higgs bosons at LEP in general two
+ Higgs doublet models}",
journal = "Eur. Phys. J.",
- volume = "C32",
+ volume = "C34",
year = "2004",
- pages = "475-492",
- eprint = "hep-ex/0401022",
+ pages = "399-418",
+ eprint = "hep-ex/0404012",
archivePrefix = "arXiv",
- doi = "10.1140/epjc/s2003-01469-8",
- SLACcitation = "%%CITATION = HEP-EX/0401022;%%"
+ doi = "10.1140/epjc/s2004-01732-6",
+ SLACcitation = "%%CITATION = HEP-EX/0404012;%%"
}
-@Article{arXiv:1510.06534,
- author = ",",
-collaboration = "CMS",
- title = "{Search for a very light NMSSM Higgs boson produced in
- decays of the 125 GeV scalar boson and decaying into tau
- leptons in pp collisions at sqrt(s) = 8 TeV}",
- journal = "",
- volume = "JHEP01",
- year = "2016",
- pages = "079",
- year = "2015",
- eprint = "1510.06534",
+@Article{hep-ex/0107032,
+ author = "",
+collaboration = "LEP Higgs Working for Higgs boson searches",
+ title = "{Searches for Invisible Higgs bosons: Preliminary combined
+ results using LEP data collected at energies up to 209
+ GeV}",
+ year = "2001",
+ eprint = "hep-ex/0107032",
archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1510.06534;%%"
+ SLACcitation = "%%CITATION = HEP-EX/0107032;%%"
}
-@Article{arXiv:1301.6065,
- author = "Abbiendi, G. and others",
-collaboration = "ALEPH",
- title = "{Search for Charged Higgs bosons: Combined Results Using
- LEP Data}",
- year = "2013",
- eprint = "1301.6065",
+% No SPIRES record found for cite request arXiv:1712.06386
+
+@Article{arXiv:0905.3381,
+ author = "Abazov, V. M. and others",
+collaboration = "D0",
+ title = "{Search for NMSSM Higgs bosons in the $h \to a a
+ \to\mu\mu\: \mu\mu, \mu\mu \: \tau\tau$ channels using $p
+ \bar{p}$ collisions at $\sqrt{s}$=1.96 TeV}",
+ journal = "Phys. Rev. Lett.",
+ volume = "103",
+ year = "2009",
+ pages = "061801",
+ eprint = "0905.3381",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1301.6065;%%"
+ doi = "10.1103/PhysRevLett.103.061801",
+ SLACcitation = "%%CITATION = 0905.3381;%%"
}
-@Article{arXiv:1406.7663,
- author = ",",
+@Article{arXiv:1108.5064,
+ author = "Aad, Georges",
collaboration = "ATLAS",
- title = "{Search for the Standard Model Higgs boson decay to
- $\mu^{+}\mu^{-}$ with the ATLAS detector}",
- journal = "Physics Letters",
- volume = "B738",
- year = "2014",
- pages = "68-86",
- eprint = "1406.7663",
+ title = "{Search for a heavy Standard Model Higgs boson in the
+ channel H->ZZ->llqq using the ATLAS detector}",
+ journal = "Phys. Lett.",
+ volume = "B707",
+ year = "2012",
+ pages = "27-45",
+ eprint = "1108.5064",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1406.7663;%%"
+ doi = "10.1016/j.physletb.2011.11.056",
+ SLACcitation = "%%CITATION = 1108.5064;%%"
}
-% No SPIRES record found for cite request arXiv:1807.07915
-
-@Article{arXiv:1106.4885,
- author = "Abazov, Victor Mukhamedovich and others",
-collaboration = "D0",
- title = "{Search for neutral Higgs bosons decaying to tau pairs
- produced in association with b quarks in ppbar collisions
- at sqrt(s)=1.96 TeV}",
+@Article{arXiv:1207.6436,
+ author = "Aaltonen, T. and others",
+collaboration = "CDF",
+ title = "{Evidence for a particle produced in association with weak
+ bosons and decaying to a bottom-antibottom quark pair in
+ Higgs boson searches at the Tevatron}",
journal = "Phys. Rev. Lett.",
- volume = "107",
- year = "2011",
- pages = "121801",
- eprint = "1106.4885",
+ volume = "109",
+ year = "2012",
+ pages = "071804",
+ eprint = "1207.6436",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- doi = "10.1103/PhysRevLett.107.121801",
- SLACcitation = "%%CITATION = 1106.4885;%%"
+ doi = "10.1103/PhysRevLett.109.071804",
+ SLACcitation = "%%CITATION = 1207.6436;%%"
}
-@Article{arXiv:1504.04710,
+@Article{arXiv:1404.1344,
author = ",",
collaboration = "CMS",
- title = "{Search for a pseudoscalar boson decaying into a Z boson
- and the 125 GeV Higgs boson in llbb final states}",
+ title = "{Search for invisible decays of Higgs bosons in the vector
+ boson fusion and associated ZH production modes}",
+ journal = "Eur. Phys. J.",
+ volume = "C74",
+ year = "2014",
+ pages = "2980",
+ eprint = "1404.1344",
+ archivePrefix = "arXiv",
+ primaryClass = "hep-ex",
+ SLACcitation = "%%CITATION = 1404.1344;%%"
+}
+
+@Article{arXiv:1012.0874,
+ author = "Abazov, Victor Mukhamedovich and others",
+collaboration = "D0",
+ title = "{Search for $WH$ associated production in 5.3 fb$^{-1}$ of
+ $p\bar{p}$ collisions at the Fermilab Tevatron}",
journal = "Phys. Lett.",
- volume = "B748",
- year = "2015",
- pages = "221",
- eprint = "1504.04710",
+ volume = "B698",
+ year = "2011",
+ pages = "6-13",
+ eprint = "1012.0874",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1504.04710;%%"
+ doi = "10.1016/j.physletb.2011.02.036",
+ SLACcitation = "%%CITATION = 1012.0874;%%"
}
-@Article{arXiv:1202.1415,
- author = "Aad, G. and others",
+% No SPIRES record found for cite request arXiv:1806.07355
+
+@Article{arXiv:1202.1408,
+ author = "Aad, Georges",
collaboration = "ATLAS",
- title = "{Search for the Standard Model Higgs boson in the decay
- channel H->ZZ(*)->4l with 4.8 fb-1 of pp collision data at
- sqrt(s) = 7 TeV with ATLAS}",
+ title = "{Combined search for the Standard Model Higgs boson using
+ up to 4.9 fb$^{-1}$ of $pp$ collision data at $\sqrt{s}=7$
+ TeV with the ATLAS detector at the LHC}",
journal = "Phys. Lett.",
volume = "B710",
year = "2012",
- pages = "383-402",
- eprint = "1202.1415",
+ pages = "49-66",
+ eprint = "1202.1408",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- doi = "10.1016/j.physletb.2012.03.005",
- SLACcitation = "%%CITATION = 1202.1415;%%"
-}
-
-@Article{hep-ex/0107034,
- author = "",
-collaboration = "LEP Higgs Working Group for Higgs boson searches",
- title = "{Flavor independent search for hadronically decaying
- neutral Higgs bosons at LEP}",
- year = "2001",
- eprint = "hep-ex/0107034",
- archivePrefix = "arXiv",
- SLACcitation = "%%CITATION = HEP-EX/0107034;%%"
+ doi = "10.1016/j.physletb.2012.02.044",
+ SLACcitation = "%%CITATION = 1202.1408;%%"
}
-@Article{arXiv:1406.5053,
- author = ",",
-collaboration = "ATLAS",
- title = "{Search For Higgs Boson Pair Production in the
- $\gamma\gamma b\bar{b}$ Final State using $pp$ Collision
- Data at $\sqrt{s}=8$ TeV from the ATLAS Detector}",
- journal = "",
- volume = "",
- year = "2014",
- pages = "",
- year = "2014",
- eprint = "1406.5053",
+@Article{arXiv:1003.3363,
+ author = "Benjamin, Doug and others",
+collaboration = "Tevatron New Phenomena and Higgs Working Group",
+ title = "{Combined CDF and D0 upper limits on MSSM Higgs boson
+ production in tau-tau final states with up to 2.2 fb-1}",
+ year = "2010",
+ eprint = "1003.3363",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1406.5053;%%"
+ SLACcitation = "%%CITATION = 1003.3363;%%"
}
@Article{arXiv:1106.4782,
author = "Aaltonen, T. and others",
collaboration = "CDF",
title = "{Search for Higgs Bosons Produced in Association with b-
Quarks}",
journal = "Phys. Rev.",
volume = "D85",
year = "2012",
pages = "032005",
eprint = "1106.4782",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
doi = "10.1103/PhysRevD.85.032005",
SLACcitation = "%%CITATION = 1106.4782;%%"
}
-@Article{arXiv:1510.01181,
+@Article{arXiv:1510.06534,
author = ",",
collaboration = "CMS",
- title = "{Searches for a heavy scalar boson H decaying to a pair of
- 125 GeV Higgs bosons hh or for a heavy pseudoscalar boson A
- decaying to Zh, in the final states with h to tau tau}",
- journal = "Phys. Lett.",
- volume = "B755",
+ title = "{Search for a very light NMSSM Higgs boson produced in
+ decays of the 125 GeV scalar boson and decaying into tau
+ leptons in pp collisions at sqrt(s) = 8 TeV}",
+ journal = "",
+ volume = "JHEP01",
year = "2016",
- pages = "217",
- eprint = "1510.01181",
+ pages = "079",
+ year = "2015",
+ eprint = "1510.06534",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1510.01181;%%"
+ SLACcitation = "%%CITATION = 1510.06534;%%"
}
-@Article{arXiv:1107.1268,
+@Article{arXiv:0908.1811,
author = "Abazov, V. M. and others",
collaboration = "D0",
- title = "{Search for associated Higgs boson production using like
- charge dilepton events in ppbar collisions at sqrt{s} =
- 1.96 TeV}",
- journal = "Phys. Rev.",
- volume = "D84",
- year = "2011",
- pages = "092002",
- eprint = "1107.1268",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- doi = "10.1103/PhysRevD.84.092002",
- SLACcitation = "%%CITATION = 1107.1268;%%"
-}
-
-@Article{arXiv:1202.1997,
- author = "Chatrchyan, Serguei",
-collaboration = "CMS",
- title = "{Search for the standard model Higgs boson in the decay
- channel H to ZZ to 4 leptons in pp collisions at sqrt(s) =
- 7 TeV}",
- journal = "Phys. Rev. Lett.",
- volume = "108",
- year = "2012",
- pages = "111804",
- eprint = "1202.1997",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- doi = "10.1103/PhysRevLett.108.111804",
- SLACcitation = "%%CITATION = 1202.1997;%%"
-}
-
-@Article{arXiv:1107.4960,
- author = " and others",
-collaboration = "TEVNPH Working Group",
- title = "{Combined CDF and D0 Searches for the Standard Model Higgs
- Boson Decaying to Two Photons with up to 8.2 fb^-1}",
- year = "2011",
- eprint = "1107.4960",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1107.4960;%%"
-}
-
-@Article{arXiv:1307.5515,
- author = ",",
-collaboration = "CMS",
- title = "{Search for a Higgs boson decaying into a Z and a photon in
- pp collisions at sqrt(s) = 7 and 8 TeV}",
+ title = "{Search for charged Higgs bosons in top quark decays}",
journal = "Phys. Lett.",
- volume = "B726",
- year = "2013",
- pages = "587",
- eprint = "1307.5515",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1307.5515;%%"
-}
-
-@Article{hep-ex/0206022,
- author = "Abbiendi, G. and others",
-collaboration = "OPAL",
- title = "{Decay-mode independent searches for new scalar bosons with
- the OPAL detector at LEP}",
- journal = "Eur. Phys. J.",
- volume = "C27",
- year = "2003",
- pages = "311-329",
- eprint = "hep-ex/0206022",
- archivePrefix = "arXiv",
- doi = "10.1140/epjc/s2002-01115-1",
- SLACcitation = "%%CITATION = HEP-EX/0206022;%%"
-}
-
-@Article{arXiv:0906.1014,
- author = "Aaltonen, T. and others",
-collaboration = "CDF",
- title = "{Search for Higgs bosons predicted in two-Higgs-doublet
- models via decays to tau lepton pairs in 1.96 TeV proton-
- antiproton collisions}",
- journal = "Phys. Rev. Lett.",
- volume = "103",
+ volume = "B682",
year = "2009",
- pages = "201801",
- eprint = "0906.1014",
+ pages = "278-286",
+ eprint = "0908.1811",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- doi = "10.1103/PhysRevLett.103.201801",
- SLACcitation = "%%CITATION = 0906.1014;%%"
+ doi = "10.1016/j.physletb.2009.11.016",
+ SLACcitation = "%%CITATION = 0908.1811;%%"
}
-@Article{arXiv:0907.1269,
- author = "Aaltonen, T. and others",
-collaboration = "CDF",
- title = "{Search for charged Higgs bosons in decays of top quarks in
- $p-\bar{p}$ collisions at $\sqrt{s} = 1.96$ TeV}",
- journal = "Phys. Rev. Lett.",
- volume = "103",
- year = "2009",
- pages = "101803",
- eprint = "0907.1269",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- doi = "10.1103/PhysRevLett.103.101803",
- SLACcitation = "%%CITATION = 0907.1269;%%"
-}
+% No SPIRES record found for cite request arXiv:1808.00336
-@Article{arXiv:1202.1488,
+@Article{arXiv:1202.1416,
author = "Chatrchyan, Serguei",
collaboration = "CMS",
- title = "{Combined results of searches for the standard model Higgs
- boson in pp collisions at sqrt(s) = 7 TeV}",
- journal = "Phys. Lett.",
- volume = "B710",
+ title = "{Search for a Higgs boson in the decay channel H to ZZ(*)
+ to q qbar l-l+ in pp collisions at sqrt(s) = 7 TeV}",
+ journal = "JHEP",
+ volume = "04",
year = "2012",
- pages = "26-48",
- eprint = "1202.1488",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- doi = "10.1016/j.physletb.2012.02.064",
- SLACcitation = "%%CITATION = 1202.1488;%%"
-}
-
-@Article{arXiv:1506.02301,
- author = ",",
-collaboration = "CMS",
- title = "{Search for diphoton resonances in the mass range from 150
- to 850 GeV in pp collisions at sqrt(s) = 8 TeV}",
- journal = "Phys. Lett.",
- volume = "B750",
- year = "2015",
- pages = "494",
- eprint = "1506.02301",
+ pages = "036",
+ eprint = "1202.1416",
archivePrefix = "arXiv",
primaryClass = "hep-ex",
- SLACcitation = "%%CITATION = 1506.02301;%%"
+ doi = "10.1007/JHEP04(2012)036",
+ SLACcitation = "%%CITATION = 1202.1416;%%"
}
% No SPIRES record found for cite request CDFnotes,D0notes,CMSnotes
% No SPIRES record found for cite request ATLASnotes,LHWGnotes
@Article{hep-ph/9704448,
author = "Djouadi, A. and Kalinowski, J. and Spira, M.",
title = "{HDECAY: A program for Higgs boson decays in the standard
model and its supersymmetric extension}",
journal = "Comput. Phys. Commun.",
volume = "108",
year = "1998",
pages = "56-74",
eprint = "hep-ph/9704448",
archivePrefix = "arXiv",
doi = "10.1016/S0010-4655(97)00123-9",
SLACcitation = "%%CITATION = HEP-PH/9704448;%%"
}
@Article{hep-ph/0102227,
author = "Catani, Stefano and de Florian, Daniel and Grazzini,
Massimiliano",
title = "{Higgs production in hadron collisions: Soft and virtual
QCD corrections at NNLO}",
journal = "JHEP",
volume = "05",
year = "2001",
pages = "025",
eprint = "hep-ph/0102227",
archivePrefix = "arXiv",
SLACcitation = "%%CITATION = HEP-PH/0102227;%%"
}
@Article{hep-ph/0102241,
author = "Harlander, Robert V. and Kilgore, William B.",
title = "{Soft and virtual corrections to p p --> H + X at NNLO}",
journal = "Phys. Rev.",
volume = "D64",
year = "2001",
pages = "013015",
eprint = "hep-ph/0102241",
archivePrefix = "arXiv",
doi = "10.1103/PhysRevD.64.013015",
SLACcitation = "%%CITATION = HEP-PH/0102241;%%"
}
@Article{hep-ph/0201206,
author = "Harlander, Robert V. and Kilgore, William B.",
title = "{Next-to-next-to-leading order Higgs production at hadron
colliders}",
journal = "Phys. Rev. Lett.",
volume = "88",
year = "2002",
pages = "201801",
eprint = "hep-ph/0201206",
archivePrefix = "arXiv",
doi = "10.1103/PhysRevLett.88.201801",
SLACcitation = "%%CITATION = HEP-PH/0201206;%%"
}
@Article{hep-ph/0207004,
author = "Anastasiou, Charalampos and Melnikov, Kirill",
title = "{Higgs boson production at hadron colliders in NNLO QCD}",
journal = "Nucl. Phys.",
volume = "B646",
year = "2002",
pages = "220-256",
eprint = "hep-ph/0207004",
archivePrefix = "arXiv",
doi = "10.1016/S0550-3213(02)00837-4",
SLACcitation = "%%CITATION = HEP-PH/0207004;%%"
}
@Article{hep-ph/0302135,
author = "Ravindran, V. and Smith, J. and van Neerven, W. L.",
title = "{NNLO corrections to the total cross section for Higgs
boson production in hadron hadron collisions}",
journal = "Nucl. Phys.",
volume = "B665",
year = "2003",
pages = "325-366",
eprint = "hep-ph/0302135",
archivePrefix = "arXiv",
doi = "10.1016/S0550-3213(03)00457-7",
SLACcitation = "%%CITATION = HEP-PH/0302135;%%"
}
@Article{arXiv:0811.3458,
author = "Anastasiou, Charalampos and Boughezal, Radja and Petriello,
Frank",
title = "{Mixed QCD-electroweak corrections to Higgs boson
production in gluon fusion}",
journal = "JHEP",
volume = "04",
year = "2009",
pages = "003",
eprint = "0811.3458",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
doi = "10.1088/1126-6708/2009/04/003",
SLACcitation = "%%CITATION = 0811.3458;%%"
}
@Article{Dawson:1990zj,
author = "Dawson, S.",
title = "{Radiative corrections to Higgs boson production}",
journal = "Nucl. Phys.",
volume = "B359",
year = "1991",
pages = "283-300",
doi = "10.1016/0550-3213(91)90061-2",
SLACcitation = "%%CITATION = NUPHA,B359,283;%%"
}
@Article{Djouadi:1991tka,
author = "Djouadi, A. and Spira, M. and Zerwas, P. M.",
title = "{Production of Higgs bosons in proton colliders: QCD
corrections}",
journal = "Phys. Lett.",
volume = "B264",
year = "1991",
pages = "440-446",
doi = "10.1016/0370-2693(91)90375-Z",
SLACcitation = "%%CITATION = PHLTA,B264,440;%%"
}
@Article{hep-ph/9504378,
author = "Spira, M. and Djouadi, A. and Graudenz, D. and Zerwas, P.
M.",
title = "{Higgs boson production at the LHC}",
journal = "Nucl. Phys.",
volume = "B453",
year = "1995",
pages = "17-82",
eprint = "hep-ph/9504378",
archivePrefix = "arXiv",
doi = "10.1016/0550-3213(95)00379-7",
SLACcitation = "%%CITATION = HEP-PH/9504378;%%"
}
@Article{hep-ph/0404071,
author = "Aglietti, U. and Bonciani, R. and Degrassi, G. and Vicini,
A.",
title = "{Two-loop light fermion contribution to Higgs production
and decays}",
journal = "Phys. Lett.",
volume = "B595",
year = "2004",
pages = "432-441",
eprint = "hep-ph/0404071",
archivePrefix = "arXiv",
doi = "10.1016/j.physletb.2004.06.063",
SLACcitation = "%%CITATION = HEP-PH/0404071;%%"
}
@Article{hep-ph/0407249,
author = "Degrassi, Giuseppe and Maltoni, Fabio",
title = "{Two-loop electroweak corrections to Higgs production at
hadron colliders}",
journal = "Phys. Lett.",
volume = "B600",
year = "2004",
pages = "255-260",
eprint = "hep-ph/0407249",
archivePrefix = "arXiv",
doi = "10.1016/j.physletb.2004.09.008",
SLACcitation = "%%CITATION = HEP-PH/0407249;%%"
}
@Article{arXiv:0809.1301,
author = "Actis, Stefano and Passarino, Giampiero and Sturm,
Christian and Uccirati, Sandro",
title = "{NLO Electroweak Corrections to Higgs Boson Production at
Hadron Colliders}",
journal = "Phys. Lett.",
volume = "B670",
year = "2008",
pages = "12-17",
eprint = "0809.1301",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
doi = "10.1016/j.physletb.2008.10.018",
SLACcitation = "%%CITATION = 0809.1301;%%"
}
@Article{arXiv:0809.3667,
author = "Actis, Stefano and Passarino, Giampiero and Sturm,
Christian and Uccirati, Sandro",
title = "{NNLO Computational Techniques: the Cases $H \to \gamma
\gamma$ and $H \to g g$}",
journal = "Nucl. Phys.",
volume = "B811",
year = "2009",
pages = "182-273",
eprint = "0809.3667",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
doi = "10.1016/j.nuclphysb.2008.11.024",
SLACcitation = "%%CITATION = 0809.3667;%%"
}
@Article{hep-ph/0306211,
author = "Catani, Stefano and de Florian, Daniel and Grazzini,
Massimiliano and Nason, Paolo",
title = "{Soft-gluon resummation for Higgs boson production at
hadron colliders}",
journal = "JHEP",
volume = "07",
year = "2003",
pages = "028",
eprint = "hep-ph/0306211",
archivePrefix = "arXiv",
SLACcitation = "%%CITATION = HEP-PH/0306211;%%"
}
@Article{arXiv:0901.2427,
author = "de Florian, Daniel and Grazzini, Massimiliano",
title = "{Higgs production through gluon fusion: updated cross
sections at the Tevatron and the LHC}",
journal = "Phys. Lett.",
volume = "B674",
year = "2009",
pages = "291-294",
eprint = "0901.2427",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
doi = "10.1016/j.physletb.2009.03.033",
SLACcitation = "%%CITATION = 0901.2427;%%"
}
@Article{hep-ph/0307206,
author = "Brein, Oliver and Djouadi, Abdelhak and Harlander, Robert",
title = "{NNLO QCD corrections to the Higgs-strahlung processes at
hadron colliders}",
journal = "Phys. Lett.",
volume = "B579",
year = "2004",
pages = "149-156",
eprint = "hep-ph/0307206",
archivePrefix = "arXiv",
doi = "10.1016/j.physletb.2003.10.112",
SLACcitation = "%%CITATION = HEP-PH/0307206;%%"
}
@Article{hep-ph/0306234,
author = "Ciccolini, M. L. and Dittmaier, S. and Kramer, M.",
title = "{Electroweak radiative corrections to associated W H and Z
H production at hadron colliders}",
journal = "Phys. Rev.",
volume = "D68",
year = "2003",
pages = "073003",
eprint = "hep-ph/0306234",
archivePrefix = "arXiv",
doi = "10.1103/PhysRevD.68.073003",
SLACcitation = "%%CITATION = HEP-PH/0306234;%%"
}
@Article{hep-ph/0406152,
author = "Assamagan, K. A. and others",
collaboration = "Higgs Working Group",
title = "{The Higgs working group: Summary report 2003}",
year = "2004",
eprint = "hep-ph/0406152",
archivePrefix = "arXiv",
SLACcitation = "%%CITATION = HEP-PH/0406152;%%"
}
@Article{hep-ph/0304035,
author = "Harlander, Robert V. and Kilgore, William B.",
title = "{Higgs boson production in bottom quark fusion at next-to-
next-to-leading order}",
journal = "Phys. Rev.",
volume = "D68",
year = "2003",
pages = "013001",
eprint = "hep-ph/0304035",
archivePrefix = "arXiv",
doi = "10.1103/PhysRevD.68.013001",
SLACcitation = "%%CITATION = HEP-PH/0304035;%%"
}
@Article{hep-ph/9206246,
author = "Han, Tao and Valencia, G. and Willenbrock, S.",
title = "{Structure function approach to vector boson scattering in
p p collisions}",
journal = "Phys. Rev. Lett.",
volume = "69",
year = "1992",
pages = "3274-3277",
eprint = "hep-ph/9206246",
archivePrefix = "arXiv",
doi = "10.1103/PhysRevLett.69.3274",
SLACcitation = "%%CITATION = HEP-PH/9206246;%%"
}
@Article{hep-ph/9905386,
author = "Campbell, John M. and Ellis, R. Keith",
title = "{An update on vector boson pair production at hadron
colliders}",
journal = "Phys. Rev.",
volume = "D60",
year = "1999",
pages = "113006",
eprint = "hep-ph/9905386",
archivePrefix = "arXiv",
doi = "10.1103/PhysRevD.60.113006",
SLACcitation = "%%CITATION = HEP-PH/9905386;%%"
}
@Article{hep-ph/0306109,
author = "Figy, T. and Oleari, C. and Zeppenfeld, D.",
title = "{Next-to-leading order jet distributions for Higgs boson
production via weak-boson fusion}",
journal = "Phys. Rev.",
volume = "D68",
year = "2003",
pages = "073005",
eprint = "hep-ph/0306109",
archivePrefix = "arXiv",
doi = "10.1103/PhysRevD.68.073005",
SLACcitation = "%%CITATION = HEP-PH/0306109;%%"
}
@Article{hep-ph/0403194,
author = "Berger, Edmond L. and Campbell, John M.",
title = "{Higgs boson production in weak boson fusion at next-to-
leading order}",
journal = "Phys. Rev.",
volume = "D70",
year = "2004",
pages = "073011",
eprint = "hep-ph/0403194",
archivePrefix = "arXiv",
doi = "10.1103/PhysRevD.70.073011",
SLACcitation = "%%CITATION = HEP-PH/0403194;%%"
}
@Article{hep-ph/0612172,
author = "Aglietti, U. and others",
title = "{Tevatron for LHC report: Higgs}",
year = "2006",
eprint = "hep-ph/0612172",
archivePrefix = "arXiv",
SLACcitation = "%%CITATION = HEP-PH/0612172;%%"
}
@Article{hep-ph/0107081,
author = "Beenakker, W. and others",
title = "{Higgs radiation off top quarks at the Tevatron and the
LHC}",
journal = "Phys. Rev. Lett.",
volume = "87",
year = "2001",
pages = "201805",
eprint = "hep-ph/0107081",
archivePrefix = "arXiv",
doi = "10.1103/PhysRevLett.87.201805",
SLACcitation = "%%CITATION = HEP-PH/0107081;%%"
}
@Article{hep-ph/0107101,
author = "Reina, L. and Dawson, S.",
title = "{Next-to-leading order results for t anti-t h production at
the Tevatron}",
journal = "Phys. Rev. Lett.",
volume = "87",
year = "2001",
pages = "201804",
eprint = "hep-ph/0107101",
archivePrefix = "arXiv",
doi = "10.1103/PhysRevLett.87.201804",
SLACcitation = "%%CITATION = HEP-PH/0107101;%%"
}
@Article{hep-ph/0211438,
author = "Dawson, S. and Orr, L. H. and Reina, L. and Wackeroth, D.",
title = "{Associated top quark Higgs boson production at the LHC}",
journal = "Phys. Rev.",
volume = "D67",
year = "2003",
pages = "071503",
eprint = "hep-ph/0211438",
archivePrefix = "arXiv",
doi = "10.1103/PhysRevD.67.071503",
SLACcitation = "%%CITATION = HEP-PH/0211438;%%"
}
@Article{hep-ph/0305321,
author = "Brein, Oliver and Hollik, Wolfgang",
title = "{MSSM Higgs bosons associated with high-p(T) jets at hadron
colliders}",
journal = "Phys. Rev.",
volume = "D68",
year = "2003",
pages = "095006",
eprint = "hep-ph/0305321",
archivePrefix = "arXiv",
doi = "10.1103/PhysRevD.68.095006",
SLACcitation = "%%CITATION = HEP-PH/0305321;%%"
}
@Article{arXiv:0705.2744,
author = "Brein, Oliver and Hollik, Wolfgang",
title = "{Distributions for MSSM Higgs boson + jet production at
hadron colliders}",
journal = "Phys. Rev.",
volume = "D76",
year = "2007",
pages = "035002",
eprint = "0705.2744",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
doi = "10.1103/PhysRevD.76.035002",
SLACcitation = "%%CITATION = 0705.2744;%%"
}
@Article{arXiv:0707.0381,
author = "Ciccolini, M. and Denner, Ansgar and Dittmaier, S.",
title = "{Strong and electroweak corrections to the production of
Higgs+2jets via weak interactions at the LHC}",
journal = "Phys. Rev. Lett.",
volume = "99",
year = "2007",
pages = "161803",
eprint = "0707.0381",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
doi = "10.1103/PhysRevLett.99.161803",
SLACcitation = "%%CITATION = 0707.0381;%%"
}
@Article{arXiv:0710.4749,
author = "Ciccolini, Mariano and Denner, Ansgar and Dittmaier, Stefan
",
title = "{Electroweak and QCD corrections to Higgs production via
vector-boson fusion at the LHC}",
journal = "Phys. Rev.",
volume = "D77",
year = "2008",
pages = "013002",
eprint = "0710.4749",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
doi = "10.1103/PhysRevD.77.013002",
SLACcitation = "%%CITATION = 0710.4749;%%"
}
@Article{arXiv:1101.0593,
author = "Dittmaier, S. and others",
collaboration = "LHC Higgs Cross Section Working Group",
title = "{Handbook of LHC Higgs Cross Sections: 1. Inclusive
Observables}",
year = "2011",
eprint = "1101.0593",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
SLACcitation = "%%CITATION = 1101.0593;%%"
}
@Article{arXiv:1201.3084,
author = "Dittmaier, S. and others",
title = "{Handbook of LHC Higgs Cross Sections: 2. Differential
Distributions}",
year = "2012",
eprint = "1201.3084",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
SLACcitation = "%%CITATION = 1201.3084;%%"
}
@Article{arXiv:1307.1347,
author = "The LHC Higgs Cross Section Working Group, and others",
title = "{Handbook of LHC Higgs Cross Sections: 3. Higgs
Properties}",
year = "2013",
eprint = "1307.1347",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
SLACcitation = "%%CITATION = 1307.1347;%%"
}
-@article{arXiv:1712.06386,
- author = "Aaboud, M. and others",
- title = "{Search for heavy ZZ resonances in the $\ell ^+\ell
- ^-\ell ^+\ell ^-$ and $\ell ^+\ell ^-\nu \bar{\nu }$ final
- states using proton–proton collisions at $\sqrt{s}= 13$
- $\text {TeV}$ with the ATLAS detector}",
- collaboration = "ATLAS",
- journal = "Eur. Phys. J.",
- volume = "C78",
- year = "2018",
- number = "4",
- pages = "293",
- doi = "10.1140/epjc/s10052-018-5686-3",
- eprint = "1712.06386",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- reportNumber = "CERN-EP-2017-251",
- SLACcitation = "%%CITATION = ARXIV:1712.06386;%%"
-}
-
-@article{arXiv:1710.01123,
- author = "Aaboud, Morad and others",
- title = "{Search for heavy resonances decaying into $WW$ in the
- $e\nu\mu\nu$ final state in $pp$ collisions at
- $\sqrt{s}=13$ TeV with the ATLAS detector}",
- collaboration = "ATLAS",
- journal = "Eur. Phys. J.",
- volume = "C78",
- year = "2018",
- number = "1",
- pages = "24",
- doi = "10.1140/epjc/s10052-017-5491-4",
- eprint = "1710.01123",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- reportNumber = "CERN-EP-2017-214",
- SLACcitation = "%%CITATION = ARXIV:1710.01123;%%"
-}
-
-@article{arXiv:1701.02032,
- author = "Khachatryan, V. and others",
- title = "{Search for light bosons in decays of the 125 GeV Higgs
- boson in proton-proton collisions at $ \sqrt{s}=8 $ TeV}",
- collaboration = "CMS",
- journal = "JHEP",
- volume = "10",
- year = "2017",
- pages = "076",
- doi = "10.1007/JHEP10(2017)076",
- eprint = "1701.02032",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- reportNumber = "CMS-HIG-16-015, CERN-EP-2016-292",
- SLACcitation = "%%CITATION = ARXIV:1701.02032;%%"
-}
-
-@article{arXiv:1709.07242,
- author = "Aaboud, Morad and others",
- title = "{Search for additional heavy neutral Higgs and gauge
- bosons in the ditau final state produced in 36 fb$^{−1}$
- of pp collisions at $ \sqrt{s}=13 $ TeV with the ATLAS
- detector}",
- collaboration = "ATLAS",
- journal = "JHEP",
- volume = "01",
- year = "2018",
- pages = "055",
- doi = "10.1007/JHEP01(2018)055",
- eprint = "1709.07242",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- reportNumber = "CERN-EP-2017-199",
- SLACcitation = "%%CITATION = ARXIV:1709.07242;%%"
-}
-
-@article{arXiv:1807.07915,
- author = "Aaboud, Morad and others",
- title = "{Search for charged Higgs bosons decaying via $H^{\pm}
- \to \tau^{\pm}\nu_{\tau}$ in the $\tau$+jets and
- $\tau$+lepton final states with 36 fb$^{-1}$ of $pp$
- collision data recorded at $\sqrt{s} = 13$ TeV with the
- ATLAS experiment}",
- collaboration = "ATLAS",
- journal = "Submitted to: JHEP",
- year = "2018",
- eprint = "1807.07915",
- archivePrefix = "arXiv",
- primaryClass = "hep-ex",
- reportNumber = "CERN-EP-2018-148",
- SLACcitation = "%%CITATION = ARXIV:1807.07915;%%"
-}
-
-@article{arXiv:1610.07922,
- author = "de Florian, D. and others",
- title = "{Handbook of LHC Higgs Cross Sections: 4. Deciphering the
- Nature of the Higgs Sector}",
- collaboration = "LHC Higgs Cross Section Working Group",
- doi = "10.23731/CYRM-2017-002",
- year = "2016",
- eprint = "1610.07922",
- archivePrefix = "arXiv",
- primaryClass = "hep-ph",
- reportNumber = "FERMILAB-FN-1025-T, CERN-2017-002-M",
- SLACcitation = "%%CITATION = ARXIV:1610.07922;%%"
-}
\ No newline at end of file
+% No SPIRES record found for cite request arXiv:1610.07922
\ No newline at end of file
Index: trunk/HiggsBounds-5/minipaper.bbl
===================================================================
--- trunk/HiggsBounds-5/minipaper.bbl (revision 593)
+++ trunk/HiggsBounds-5/minipaper.bbl (revision 594)
@@ -1,615 +1,585 @@
\begin{thebibliography}{100}\raggedright
\bibitem{arXiv:0811.4169}
P. Bechtle et~al.,
\newblock Comput. Phys. Commun. 181 (2010) 138, {{\tt arXiv:0811.4169}}.
%%CITATION = 0811.4169;%%
\bibitem{arXiv:1102.1898}
P. Bechtle et~al.,
\newblock Comput. Phys. Commun. 182 (2011) 2605, {{\tt arXiv:1102.1898}}.
%%CITATION = 1102.1898;%%
\bibitem{arXiv:1301.2345}
P. Bechtle et~al.,
\newblock PoS CHARGED2012 (2012) 024, {{\tt arXiv:1301.2345}}.
%%CITATION = 1301.2345;%%
\bibitem{arXiv:1311.0055}
P. Bechtle et~al.,
\newblock Eur. Phys. J. C74 (2014) 2693, {{\tt arXiv:1311.0055}}.
%%CITATION = 1311.0055;%%
\bibitem{arXiv:1507.06706}
P. Bechtle et~al.,
\newblock (2015), {{\tt arXiv:1507.06706}}.
%%CITATION = 1507.06706;%%
-\bibitem{arxiv:1112.2577}
-ATLAS, G. Aad,
-\newblock Phys. Rev. Lett. 108 (2012) 111802, {{\tt arXiv:1112.2577}}.
-%%CITATION = 1112.2577;%%
-
-\bibitem{arXiv:0806.0611}
-D0, V.M. Abazov et~al.,
-\newblock Phys. Lett. B671 (2009) 349, {{\tt arXiv:0806.0611}}.
-%%CITATION = 0806.0611;%%
-
-\bibitem{arXiv:1207.0449}
-Tevatron New Physics Higgs Working Group, C. Group, D. Collaborations and . the
- Tevatron New Physics~an,
-\newblock (2012), {{\tt arXiv:1207.0449}}.
-%%CITATION = 1207.0449;%%
-
-\bibitem{arXiv:0809.3930}
-CDF, T. Aaltonen et~al.,
-\newblock Phys. Rev. Lett. 102 (2009) 021802, {{\tt arXiv:0809.3930}}.
-%%CITATION = 0809.3930;%%
+\bibitem{arXiv:1406.7663}
+ATLAS, . ,
+\newblock Physics Letters B738 (2014) 68, {{\tt arXiv:1406.7663}}.
+%%CITATION = 1406.7663;%%
-\bibitem{arXiv:0901.1887}
+\bibitem{arXiv:1106.4885}
D0, V.M. Abazov et~al.,
-\newblock Phys. Rev. Lett. 102 (2009) 231801, {{\tt arXiv:0901.1887}}.
-%%CITATION = 0901.1887;%%
+\newblock Phys. Rev. Lett. 107 (2011) 121801, {{\tt arXiv:1106.4885}}.
+%%CITATION = 1106.4885;%%
-\bibitem{arXiv:1603.06896}
+\bibitem{arXiv:1603.02991}
CMS, . ,
-\newblock (2016), {{\tt arXiv:1603.06896}}.
-%%CITATION = 1603.06896;%%
-
-\bibitem{arXiv:1108.3331}
-CDF, D. Benjamin et~al.,
-\newblock (2011), {{\tt arXiv:1108.3331}}.
-%%CITATION = 1108.3331;%%
-
-\bibitem{arXiv:1109.3357}
-ATLAS, . and others,
-\newblock Phys. Rev. Lett. 107 (2011) 221802, {{\tt arXiv:1109.3357}}.
-%%CITATION = 1109.3357;%%
-
-\bibitem{arxiv:1202.1408}
-ATLAS, G. Aad,
-\newblock Phys. Lett. B710 (2012) 49, {{\tt arXiv:1202.1408}}.
-%%CITATION = 1202.1408;%%
+\newblock Phys. Lett. B759 (2016) 369, {{\tt arXiv:1603.02991}}.
+%%CITATION = 1603.02991;%%
-\bibitem{arXiv:1712.06386}
-ATLAS, M. Aaboud et~al.,
-\newblock Eur. Phys. J. C78 (2018) 293, {{\tt arXiv:1712.06386}}.
-%%CITATION = ARXIV:1712.06386;%%
+\bibitem{arXiv:1107.1268}
+D0, V.M. Abazov et~al.,
+\newblock Phys. Rev. D84 (2011) 092002, {{\tt arXiv:1107.1268}}.
+%%CITATION = 1107.1268;%%
-\bibitem{arXiv:1003.3363}
-Tevatron New Phenomena and Higgs Working Group, D. Benjamin et~al.,
-\newblock (2010), {{\tt arXiv:1003.3363}}.
-%%CITATION = 1003.3363;%%
+\bibitem{arXiv:1001.4468}
+CDF, T. Aaltonen et~al.,
+\newblock Phys. Rev. Lett. 104 (2010) 061803, {{\tt arXiv:1001.4468}}.
+%%CITATION = 1001.4468;%%
-\bibitem{arXiv:1012.0874}
-D0, V.M. Abazov et~al.,
-\newblock Phys. Lett. B698 (2011) 6, {{\tt arXiv:1012.0874}}.
-%%CITATION = 1012.0874;%%
+\bibitem{arXiv:1503.04233}
+ATLAS, . ,
+\newblock (2015), {{\tt arXiv:1503.04233}}.
+%%CITATION = 1503.04233;%%
-\bibitem{arxiv:1202.3478}
-CMS, S. Chatrchyan,
-\newblock JHEP 03 (2012) 040, {{\tt arXiv:1202.3478}}.
-%%CITATION = 1202.3478;%%
+\bibitem{arXiv:1509.00389}
+ATLAS, . ,
+\newblock JHEP01 (2016) 032, {{\tt arXiv:1509.00389}}.
+%%CITATION = 1509.00389;%%
-\bibitem{arXiv:1504.00936}
+\bibitem{arXiv:1504.04710}
CMS, . ,
-\newblock (2015), {{\tt arXiv:1504.00936}}.
-%%CITATION = 1504.00936;%%
+\newblock Phys. Lett. B748 (2015) 221, {{\tt arXiv:1504.04710}}.
+%%CITATION = 1504.04710;%%
-\bibitem{arXiv:1502.04478}
-ATLAS, . ,
-\newblock Physics Letters B744 (2015) 163, {{\tt arXiv:1502.04478}}.
-%%CITATION = 1502.04478;%%
+\bibitem{hep-ex/0107031}
+LEP Higgs Working Group for Higgs boson searches,
+\newblock (2001), {{\tt hep-ex/0107031}}.
+%%CITATION = HEP-EX/0107031;%%
-\bibitem{arXiv:1509.05051}
-ATLAS, . ,
-\newblock (2015), {{\tt arXiv:1509.05051}}.
-%%CITATION = 1509.05051;%%
+\bibitem{hep-ex/0410017}
+DELPHI, J. Abdallah et~al.,
+\newblock Eur. Phys. J. C38 (2004) 1, {{\tt hep-ex/0410017}}.
+%%CITATION = HEP-EX/0410017;%%
\bibitem{arXiv:1507.05930}
ATLAS, . ,
\newblock Eur. Phys. J. C76 (2016) 45, {{\tt arXiv:1507.05930}}.
%%CITATION = 1507.05930;%%
-\bibitem{arXiv:1011.1931}
-D0, V.M. Abazov et~al.,
-\newblock Phys. Lett. B698 (2011) 97, {{\tt arXiv:1011.1931}}.
-%%CITATION = 1011.1931;%%
+\bibitem{arXiv:1407.6583}
+ATLAS, . ,
+\newblock (2014), {{\tt arXiv:1407.6583}}.
+%%CITATION = 1407.6583;%%
-\bibitem{arXiv:1506.00424}
+\bibitem{arXiv:1504.00936}
CMS, . ,
-\newblock Phys. Lett. B752 (2016) 146, {{\tt arXiv:1506.00424}}.
-%%CITATION = 1506.00424;%%
+\newblock (2015), {{\tt arXiv:1504.00936}}.
+%%CITATION = 1504.00936;%%
-\bibitem{arXiv:1503.04233}
+\bibitem{arXiv:1406.5053}
ATLAS, . ,
-\newblock (2015), {{\tt arXiv:1503.04233}}.
-%%CITATION = 1503.04233;%%
+\newblock (2014), {{\tt arXiv:1406.5053}}.
+%%CITATION = 1406.5053;%%
\bibitem{arXiv:1008.3564}
D0, V.M. Abazov et~al.,
\newblock Phys. Rev. Lett. 105 (2010) 251801, {{\tt arXiv:1008.3564}}.
%%CITATION = 1008.3564;%%
-\bibitem{hep-ex/0404012}
+\bibitem{hep-ex/0401022}
DELPHI, J. Abdallah et~al.,
-\newblock Eur. Phys. J. C34 (2004) 399, {{\tt hep-ex/0404012}}.
-%%CITATION = HEP-EX/0404012;%%
-
-\bibitem{arXiv:1108.5064}
-ATLAS, G. Aad,
-\newblock Phys. Lett. B707 (2012) 27, {{\tt arXiv:1108.5064}}.
-%%CITATION = 1108.5064;%%
-
-\bibitem{arXiv:1710.01123}
-ATLAS, M. Aaboud et~al.,
-\newblock Eur. Phys. J. C78 (2018) 24, {{\tt arXiv:1710.01123}}.
-%%CITATION = ARXIV:1710.01123;%%
-
-\bibitem{arXiv:1509.00389}
-ATLAS, . ,
-\newblock JHEP01 (2016) 032, {{\tt arXiv:1509.00389}}.
-%%CITATION = 1509.00389;%%
-
-\bibitem{arXiv:1202.1416}
-CMS, S. Chatrchyan,
-\newblock JHEP 04 (2012) 036, {{\tt arXiv:1202.1416}}.
-%%CITATION = 1202.1416;%%
-
-\bibitem{hep-ex/0501033}
-L3, P. Achard et~al.,
-\newblock Phys. Lett. B609 (2005) 35, {{\tt hep-ex/0501033}}.
-%%CITATION = HEP-EX/0501033;%%
-
-\bibitem{arXiv:1701.02032}
-CMS, V. Khachatryan et~al.,
-\newblock JHEP 10 (2017) 076, {{\tt arXiv:1701.02032}}.
-%%CITATION = ARXIV:1701.02032;%%
+\newblock Eur. Phys. J. C32 (2004) 475, {{\tt hep-ex/0401022}}.
+%%CITATION = HEP-EX/0401022;%%
-\bibitem{arXiv:1506.08329}
+\bibitem{arXiv:1506.02301}
CMS, . ,
-\newblock JHEP11 (2015) 071, {{\tt arXiv:1506.08329}}.
-%%CITATION = 1506.08329;%%
+\newblock Phys. Lett. B750 (2015) 494, {{\tt arXiv:1506.02301}}.
+%%CITATION = 1506.02301;%%
-\bibitem{arXiv:0905.3381}
-D0, V.M. Abazov et~al.,
-\newblock Phys. Rev. Lett. 103 (2009) 061801, {{\tt arXiv:0905.3381}}.
-%%CITATION = 0905.3381;%%
+\bibitem{arXiv:1202.1415}
+ATLAS, G. Aad et~al.,
+\newblock Phys. Lett. B710 (2012) 383, {{\tt arXiv:1202.1415}}.
+%%CITATION = 1202.1415;%%
\bibitem{arXiv:1001.4481}
D0, V.M. Abazov et~al.,
\newblock Phys. Rev. Lett. 104 (2010) 061804, {{\tt arXiv:1001.4481}}.
%%CITATION = 1001.4481;%%
-\bibitem{arXiv:1709.07242}
-ATLAS, M. Aaboud et~al.,
-\newblock JHEP 01 (2018) 055, {{\tt arXiv:1709.07242}}.
-%%CITATION = ARXIV:1709.07242;%%
+\bibitem{arXiv:1107.4960}
+TEVNPH Working Group, . and others,
+\newblock (2011), {{\tt arXiv:1107.4960}}.
+%%CITATION = 1107.4960;%%
\bibitem{arXiv:1402.3244}
ATLAS, . ,
\newblock (2014), {{\tt arXiv:1402.3244}}.
%%CITATION = 1402.3244;%%
-\bibitem{arXiv:1409.6064}
+\bibitem{arxiv:1112.2577}
+ATLAS, G. Aad,
+\newblock Phys. Rev. Lett. 108 (2012) 111802, {{\tt arXiv:1112.2577}}.
+%%CITATION = 1112.2577;%%
+
+\bibitem{arXiv:1301.6065}
+ALEPH, G. Abbiendi et~al.,
+\newblock (2013), {{\tt arXiv:1301.6065}}.
+%%CITATION = 1301.6065;%%
+
+\bibitem{arXiv:0906.1014}
+CDF, T. Aaltonen et~al.,
+\newblock Phys. Rev. Lett. 103 (2009) 201801, {{\tt arXiv:0906.1014}}.
+%%CITATION = 0906.1014;%%
+
+\bibitem{arXiv:1503.04114}
+CMS, . ,
+\newblock Phys. Lett. B749 (2015) 560, {{\tt arXiv:1503.04114}}.
+%%CITATION = 1503.04114;%%
+
+\bibitem{arXiv:1509.05051}
ATLAS, . ,
-\newblock (2014), {{\tt arXiv:1409.6064}}.
-%%CITATION = 1409.6064;%%
+\newblock (2015), {{\tt arXiv:1509.05051}}.
+%%CITATION = 1509.05051;%%
+
+\bibitem{arxiv:1202.1997}
+CMS, S. Chatrchyan,
+\newblock Phys. Rev. Lett. 108 (2012) 111804, {{\tt arXiv:1202.1997}}.
+%%CITATION = 1202.1997;%%
+
+\bibitem{hep-ex/0111010}
+OPAL, G. Abbiendi et~al.,
+\newblock Eur. Phys. J. C23 (2002) 397, {{\tt hep-ex/0111010}}.
+%%CITATION = HEP-EX/0111010;%%
+
+\bibitem{hep-ex/0602042}
+ALEPH, S. Schael et~al.,
+\newblock Eur. Phys. J. C47 (2006) 547, {{\tt hep-ex/0602042}}.
+%%CITATION = HEP-EX/0602042;%%
+
+\bibitem{arXiv:1011.1931}
+D0, V.M. Abazov et~al.,
+\newblock Phys. Lett. B698 (2011) 97, {{\tt arXiv:1011.1931}}.
+%%CITATION = 1011.1931;%%
\bibitem{arXiv:1509.04670}
ATLAS, . ,
\newblock (2015), {{\tt arXiv:1509.04670}}.
%%CITATION = 1509.04670;%%
-\bibitem{arXiv:0908.1811}
-D0, V.M. Abazov et~al.,
-\newblock Phys. Lett. B682 (2009) 278, {{\tt arXiv:0908.1811}}.
-%%CITATION = 0908.1811;%%
-
-\bibitem{hep-ex/0410017}
-DELPHI, J. Abdallah et~al.,
-\newblock Eur. Phys. J. C38 (2004) 1, {{\tt hep-ex/0410017}}.
-%%CITATION = HEP-EX/0410017;%%
-
\bibitem{arXiv:1202.1414}
ATLAS, G. Aad,
\newblock Phys. Rev. Lett. 108 (2012) 111803, {{\tt arXiv:1202.1414}}.
%%CITATION = 1202.1414;%%
-\bibitem{arXiv:1001.4468}
-CDF, T. Aaltonen et~al.,
-\newblock Phys. Rev. Lett. 104 (2010) 061803, {{\tt arXiv:1001.4468}}.
-%%CITATION = 1001.4468;%%
+\bibitem{arXiv:1109.3357}
+ATLAS, . and others,
+\newblock Phys. Rev. Lett. 107 (2011) 221802, {{\tt arXiv:1109.3357}}.
+%%CITATION = 1109.3357;%%
-\bibitem{arXiv:1204.2760}
-ATLAS, G. Aad,
-\newblock JHEP 06 (2012) 039, {{\tt arXiv:1204.2760}}.
-%%CITATION = 1204.2760;%%
+\bibitem{arXiv:0812.0267}
+OPAL, G. Abbiendi et~al.,
+\newblock Eur. Phys. J. C72 (2012) 2076, {{\tt arXiv:0812.0267}}.
+%%CITATION = 0812.0267;%%
+
+\bibitem{arXiv:0806.0611}
+D0, V.M. Abazov et~al.,
+\newblock Phys. Lett. B671 (2009) 349, {{\tt arXiv:0806.0611}}.
+%%CITATION = 0806.0611;%%
+
+\bibitem{arXiv:1510.01181}
+CMS, . ,
+\newblock Phys. Lett. B755 (2016) 217, {{\tt arXiv:1510.01181}}.
+%%CITATION = 1510.01181;%%
+
+\bibitem{arXiv:1307.5515}
+CMS, . ,
+\newblock Phys. Lett. B726 (2013) 587, {{\tt arXiv:1307.5515}}.
+%%CITATION = 1307.5515;%%
+
+\bibitem{hep-ex/0206022}
+OPAL, G. Abbiendi et~al.,
+\newblock Eur. Phys. J. C27 (2003) 311, {{\tt hep-ex/0206022}}.
+%%CITATION = HEP-EX/0206022;%%
+
+\bibitem{arXiv:1108.3331}
+CDF, D. Benjamin et~al.,
+\newblock (2011), {{\tt arXiv:1108.3331}}.
+%%CITATION = 1108.3331;%%
+
+\bibitem{arXiv:0707.0373}
+OPAL, G. Abbiendi et~al.,
+\newblock Phys. Lett. B682 (2010) 381, {{\tt arXiv:0707.0373}}.
+%%CITATION = 0707.0373;%%
\bibitem{arXiv:0906.5613}
CDF, T. Aaltonen et~al.,
\newblock Phys. Rev. Lett. 103 (2009) 101802, {{\tt arXiv:0906.5613}}.
%%CITATION = 0906.5613;%%
+\bibitem{arXiv:1506.00424}
+CMS, . ,
+\newblock Phys. Lett. B752 (2016) 146, {{\tt arXiv:1506.00424}}.
+%%CITATION = 1506.00424;%%
+
+\bibitem{arXiv:1409.6064}
+ATLAS, . ,
+\newblock (2014), {{\tt arXiv:1409.6064}}.
+%%CITATION = 1409.6064;%%
+
+\bibitem{arXiv:1207.0449}
+Tevatron New Physics Higgs Working Group, C. Group, D. Collaborations and . the
+ Tevatron New Physics~an,
+\newblock (2012), {{\tt arXiv:1207.0449}}.
+%%CITATION = 1207.0449;%%
+
\bibitem{arXiv:1207.7214}
ATLAS,
\newblock Phys. Lett. B716 (2012) 1, {{\tt arXiv:1207.7214}}.
%%CITATION = 1207.7214;%%
-\bibitem{arXiv:0812.0267}
-OPAL, G. Abbiendi et~al.,
-\newblock Eur. Phys. J. C72 (2012) 2076, {{\tt arXiv:0812.0267}}.
-%%CITATION = 0812.0267;%%
+\bibitem{hep-ex/0501033}
+L3, P. Achard et~al.,
+\newblock Phys. Lett. B609 (2005) 35, {{\tt hep-ex/0501033}}.
+%%CITATION = HEP-EX/0501033;%%
-\bibitem{arXiv:1207.6436}
+\bibitem{arXiv:0907.1269}
CDF, T. Aaltonen et~al.,
-\newblock Phys. Rev. Lett. 109 (2012) 071804, {{\tt arXiv:1207.6436}}.
-%%CITATION = 1207.6436;%%
+\newblock Phys. Rev. Lett. 103 (2009) 101803, {{\tt arXiv:0907.1269}}.
+%%CITATION = 0907.1269;%%
-\bibitem{arXiv:0707.0373}
-OPAL, G. Abbiendi et~al.,
-\newblock Phys. Lett. B682 (2010) 381, {{\tt arXiv:0707.0373}}.
-%%CITATION = 0707.0373;%%
+\bibitem{arxiv:1202.3478}
+CMS, S. Chatrchyan,
+\newblock JHEP 03 (2012) 040, {{\tt arXiv:1202.3478}}.
+%%CITATION = 1202.3478;%%
-\bibitem{arXiv:1603.02991}
+\bibitem{arXiv:1506.08329}
CMS, . ,
-\newblock Phys. Lett. B759 (2016) 369, {{\tt arXiv:1603.02991}}.
-%%CITATION = 1603.02991;%%
+\newblock JHEP11 (2015) 071, {{\tt arXiv:1506.08329}}.
+%%CITATION = 1506.08329;%%
+
+\bibitem{arXiv:1502.04478}
+ATLAS, . ,
+\newblock Physics Letters B744 (2015) 163, {{\tt arXiv:1502.04478}}.
+%%CITATION = 1502.04478;%%
\bibitem{arXiv:1402.3051}
ATLAS, . ,
\newblock Phys. Lett. B732 (2014) 8, {{\tt arXiv:1402.3051}}.
%%CITATION = 1402.3051;%%
-\bibitem{hep-ex/0107032}
-LEP Higgs Working for Higgs boson searches,
-\newblock (2001), {{\tt hep-ex/0107032}}.
-%%CITATION = HEP-EX/0107032;%%
-
-\bibitem{hep-ex/0602042}
-ALEPH, S. Schael et~al.,
-\newblock Eur. Phys. J. C47 (2006) 547, {{\tt hep-ex/0602042}}.
-%%CITATION = HEP-EX/0602042;%%
-
-\bibitem{hep-ex/0111010}
-OPAL, G. Abbiendi et~al.,
-\newblock Eur. Phys. J. C23 (2002) 397, {{\tt hep-ex/0111010}}.
-%%CITATION = HEP-EX/0111010;%%
+\bibitem{arXiv:1603.06896}
+CMS, . ,
+\newblock (2016), {{\tt arXiv:1603.06896}}.
+%%CITATION = 1603.06896;%%
\bibitem{arXiv:1106.4555}
D0, V.M. Abazov et~al.,
\newblock Phys. Lett. B707 (2012) 323, {{\tt arXiv:1106.4555}}.
%%CITATION = 1106.4555;%%
-\bibitem{arXiv:1503.04114}
-CMS, . ,
-\newblock Phys. Lett. B749 (2015) 560, {{\tt arXiv:1503.04114}}.
-%%CITATION = 1503.04114;%%
+\bibitem{arXiv:1204.2760}
+ATLAS, G. Aad,
+\newblock JHEP 06 (2012) 039, {{\tt arXiv:1204.2760}}.
+%%CITATION = 1204.2760;%%
-\bibitem{hep-ex/0107031}
+\bibitem{hep-ex/0107034}
LEP Higgs Working Group for Higgs boson searches,
-\newblock (2001), {{\tt hep-ex/0107031}}.
-%%CITATION = HEP-EX/0107031;%%
+\newblock (2001), {{\tt hep-ex/0107034}}.
+%%CITATION = HEP-EX/0107034;%%
-\bibitem{arXiv:1407.6583}
-ATLAS, . ,
-\newblock (2014), {{\tt arXiv:1407.6583}}.
-%%CITATION = 1407.6583;%%
+\bibitem{arxiv:1202.1488}
+CMS, S. Chatrchyan,
+\newblock Phys. Lett. B710 (2012) 26, {{\tt arXiv:1202.1488}}.
+%%CITATION = 1202.1488;%%
-\bibitem{arXiv:1404.1344}
-CMS, . ,
-\newblock Eur. Phys. J. C74 (2014) 2980, {{\tt arXiv:1404.1344}}.
-%%CITATION = 1404.1344;%%
+\bibitem{arXiv:0809.3930}
+CDF, T. Aaltonen et~al.,
+\newblock Phys. Rev. Lett. 102 (2009) 021802, {{\tt arXiv:0809.3930}}.
+%%CITATION = 0809.3930;%%
-\bibitem{hep-ex/0401022}
-DELPHI, J. Abdallah et~al.,
-\newblock Eur. Phys. J. C32 (2004) 475, {{\tt hep-ex/0401022}}.
-%%CITATION = HEP-EX/0401022;%%
+\bibitem{arXiv:0901.1887}
+D0, V.M. Abazov et~al.,
+\newblock Phys. Rev. Lett. 102 (2009) 231801, {{\tt arXiv:0901.1887}}.
+%%CITATION = 0901.1887;%%
-\bibitem{arXiv:1510.06534}
-CMS, . ,
-\newblock JHEP01 (2016) 079, {{\tt arXiv:1510.06534}}.
-%%CITATION = 1510.06534;%%
+\bibitem{hep-ex/0404012}
+DELPHI, J. Abdallah et~al.,
+\newblock Eur. Phys. J. C34 (2004) 399, {{\tt hep-ex/0404012}}.
+%%CITATION = HEP-EX/0404012;%%
-\bibitem{arXiv:1301.6065}
-ALEPH, G. Abbiendi et~al.,
-\newblock (2013), {{\tt arXiv:1301.6065}}.
-%%CITATION = 1301.6065;%%
+\bibitem{hep-ex/0107032}
+LEP Higgs Working for Higgs boson searches,
+\newblock (2001), {{\tt hep-ex/0107032}}.
+%%CITATION = HEP-EX/0107032;%%
-\bibitem{arXiv:1406.7663}
-ATLAS, . ,
-\newblock Physics Letters B738 (2014) 68, {{\tt arXiv:1406.7663}}.
-%%CITATION = 1406.7663;%%
+\bibitem{arXiv:0905.3381}
+D0, V.M. Abazov et~al.,
+\newblock Phys. Rev. Lett. 103 (2009) 061801, {{\tt arXiv:0905.3381}}.
+%%CITATION = 0905.3381;%%
-\bibitem{arXiv:1807.07915}
-ATLAS, M. Aaboud et~al.,
-\newblock Submitted to: JHEP (2018), {{\tt arXiv:1807.07915}}.
-%%CITATION = ARXIV:1807.07915;%%
+\bibitem{arXiv:1108.5064}
+ATLAS, G. Aad,
+\newblock Phys. Lett. B707 (2012) 27, {{\tt arXiv:1108.5064}}.
+%%CITATION = 1108.5064;%%
-\bibitem{arXiv:1106.4885}
-D0, V.M. Abazov et~al.,
-\newblock Phys. Rev. Lett. 107 (2011) 121801, {{\tt arXiv:1106.4885}}.
-%%CITATION = 1106.4885;%%
+\bibitem{arXiv:1207.6436}
+CDF, T. Aaltonen et~al.,
+\newblock Phys. Rev. Lett. 109 (2012) 071804, {{\tt arXiv:1207.6436}}.
+%%CITATION = 1207.6436;%%
-\bibitem{arXiv:1504.04710}
+\bibitem{arXiv:1404.1344}
CMS, . ,
-\newblock Phys. Lett. B748 (2015) 221, {{\tt arXiv:1504.04710}}.
-%%CITATION = 1504.04710;%%
+\newblock Eur. Phys. J. C74 (2014) 2980, {{\tt arXiv:1404.1344}}.
+%%CITATION = 1404.1344;%%
-\bibitem{arXiv:1202.1415}
-ATLAS, G. Aad et~al.,
-\newblock Phys. Lett. B710 (2012) 383, {{\tt arXiv:1202.1415}}.
-%%CITATION = 1202.1415;%%
+\bibitem{arXiv:1012.0874}
+D0, V.M. Abazov et~al.,
+\newblock Phys. Lett. B698 (2011) 6, {{\tt arXiv:1012.0874}}.
+%%CITATION = 1012.0874;%%
-\bibitem{hep-ex/0107034}
-LEP Higgs Working Group for Higgs boson searches,
-\newblock (2001), {{\tt hep-ex/0107034}}.
-%%CITATION = HEP-EX/0107034;%%
+\bibitem{arxiv:1202.1408}
+ATLAS, G. Aad,
+\newblock Phys. Lett. B710 (2012) 49, {{\tt arXiv:1202.1408}}.
+%%CITATION = 1202.1408;%%
-\bibitem{arXiv:1406.5053}
-ATLAS, . ,
-\newblock (2014), {{\tt arXiv:1406.5053}}.
-%%CITATION = 1406.5053;%%
+\bibitem{arXiv:1003.3363}
+Tevatron New Phenomena and Higgs Working Group, D. Benjamin et~al.,
+\newblock (2010), {{\tt arXiv:1003.3363}}.
+%%CITATION = 1003.3363;%%
\bibitem{arXiv:1106.4782}
CDF, T. Aaltonen et~al.,
\newblock Phys. Rev. D85 (2012) 032005, {{\tt arXiv:1106.4782}}.
%%CITATION = 1106.4782;%%
-\bibitem{arXiv:1510.01181}
+\bibitem{arXiv:1510.06534}
CMS, . ,
-\newblock Phys. Lett. B755 (2016) 217, {{\tt arXiv:1510.01181}}.
-%%CITATION = 1510.01181;%%
+\newblock JHEP01 (2016) 079, {{\tt arXiv:1510.06534}}.
+%%CITATION = 1510.06534;%%
-\bibitem{arXiv:1107.1268}
+\bibitem{arXiv:0908.1811}
D0, V.M. Abazov et~al.,
-\newblock Phys. Rev. D84 (2011) 092002, {{\tt arXiv:1107.1268}}.
-%%CITATION = 1107.1268;%%
-
-\bibitem{arxiv:1202.1997}
-CMS, S. Chatrchyan,
-\newblock Phys. Rev. Lett. 108 (2012) 111804, {{\tt arXiv:1202.1997}}.
-%%CITATION = 1202.1997;%%
-
-\bibitem{arXiv:1107.4960}
-TEVNPH Working Group, . and others,
-\newblock (2011), {{\tt arXiv:1107.4960}}.
-%%CITATION = 1107.4960;%%
-
-\bibitem{arXiv:1307.5515}
-CMS, . ,
-\newblock Phys. Lett. B726 (2013) 587, {{\tt arXiv:1307.5515}}.
-%%CITATION = 1307.5515;%%
-
-\bibitem{hep-ex/0206022}
-OPAL, G. Abbiendi et~al.,
-\newblock Eur. Phys. J. C27 (2003) 311, {{\tt hep-ex/0206022}}.
-%%CITATION = HEP-EX/0206022;%%
-
-\bibitem{arXiv:0906.1014}
-CDF, T. Aaltonen et~al.,
-\newblock Phys. Rev. Lett. 103 (2009) 201801, {{\tt arXiv:0906.1014}}.
-%%CITATION = 0906.1014;%%
-
-\bibitem{arXiv:0907.1269}
-CDF, T. Aaltonen et~al.,
-\newblock Phys. Rev. Lett. 103 (2009) 101803, {{\tt arXiv:0907.1269}}.
-%%CITATION = 0907.1269;%%
+\newblock Phys. Lett. B682 (2009) 278, {{\tt arXiv:0908.1811}}.
+%%CITATION = 0908.1811;%%
-\bibitem{arxiv:1202.1488}
+\bibitem{arXiv:1202.1416}
CMS, S. Chatrchyan,
-\newblock Phys. Lett. B710 (2012) 26, {{\tt arXiv:1202.1488}}.
-%%CITATION = 1202.1488;%%
-
-\bibitem{arXiv:1506.02301}
-CMS, . ,
-\newblock Phys. Lett. B750 (2015) 494, {{\tt arXiv:1506.02301}}.
-%%CITATION = 1506.02301;%%
+\newblock JHEP 04 (2012) 036, {{\tt arXiv:1202.1416}}.
+%%CITATION = 1202.1416;%%
\bibitem{CDFnotes}
CDF,
-\newblock CDF Notes 10500 10799 10573 8353 9999 10796 7307 10574 10485 7712
- 10010 10439 10599 10798.
+\newblock CDF Notes 9999 10574 7307 7712 10485 10010 10798 10799 10573 10439
+ 10500 8353 10599 10796.
\bibitem{D0notes}
D0,
-\newblock D0 Notes 6304 6305 6296 5873 6302 5739 6299 6227 6083 6295 6276 5845
- 6301 6183 6171 6286 6309 5757.
+\newblock D0 Notes 5845 6304 6276 6286 6305 6083 5873 5739 6227 6296 6299 6183
+ 6301 6295 6309 6171 5757 6302.
\bibitem{CMSnotes}
CMS,
\newblock CMS Physics Analysis Summaries.
\bibitem{ATLASnotes}
ATLAS,
-\newblock ATLAS CONF Notes 2012-160 2016-062 2016-089 2016-049 2012-135
- 2013-013 2012-161 2016-004 2016-059 2014-049 2016-074 2014-050 2012-092
- 2012-078 2016-088 2012-016 2012-019 2016-044 2016-071 2012-168 2011-094
- 2013-010 2016-055 2011-157 2016-056 2012-012 2013-030 2016-015 2016-079
- 2012-017 2016-082.
+\newblock ATLAS CONF Notes 2016-079 2012-135 2012-017 2013-030 2016-044
+ 2011-094 2016-049 2016-056 2013-010 2016-074 2012-078 2014-049 2014-050
+ 2012-012 2013-013 2016-004 2016-055 2016-015 2012-161 2016-071 2016-088
+ 2011-157 2012-160 2012-019 2012-016 2018-025 2016-082 2012-092 2012-168
+ 2016-062.
\bibitem{LHWGnotes}
LHWG,
\newblock LHWG Notes 2002-02.
\bibitem{hep-ph/9704448}
A. Djouadi, J. Kalinowski and M. Spira,
\newblock Comput. Phys. Commun. 108 (1998) 56, {{\tt hep-ph/9704448}}.
%%CITATION = HEP-PH/9704448;%%
\bibitem{hep-ph/0102227}
S. Catani, D. de~Florian and M. Grazzini,
\newblock JHEP 05 (2001) 025, {{\tt hep-ph/0102227}}.
%%CITATION = HEP-PH/0102227;%%
\bibitem{hep-ph/0102241}
R.V. Harlander and W.B. Kilgore,
\newblock Phys. Rev. D64 (2001) 013015, {{\tt hep-ph/0102241}}.
%%CITATION = HEP-PH/0102241;%%
\bibitem{hep-ph/0201206}
R.V. Harlander and W.B. Kilgore,
\newblock Phys. Rev. Lett. 88 (2002) 201801, {{\tt hep-ph/0201206}}.
%%CITATION = HEP-PH/0201206;%%
\bibitem{hep-ph/0207004}
C. Anastasiou and K. Melnikov,
\newblock Nucl. Phys. B646 (2002) 220, {{\tt hep-ph/0207004}}.
%%CITATION = HEP-PH/0207004;%%
\bibitem{hep-ph/0302135}
V. Ravindran, J. Smith and W.L. van Neerven,
\newblock Nucl. Phys. B665 (2003) 325, {{\tt hep-ph/0302135}}.
%%CITATION = HEP-PH/0302135;%%
\bibitem{arXiv:0811.3458}
C. Anastasiou, R. Boughezal and F. Petriello,
\newblock JHEP 04 (2009) 003, {{\tt arXiv:0811.3458}}.
%%CITATION = 0811.3458;%%
\bibitem{Dawson:1990zj}
S. Dawson,
\newblock Nucl. Phys. B359 (1991) 283.
%%CITATION = NUPHA,B359,283;%%
\bibitem{Djouadi:1991tka}
A. Djouadi, M. Spira and P.M. Zerwas,
\newblock Phys. Lett. B264 (1991) 440.
%%CITATION = PHLTA,B264,440;%%
\bibitem{hep-ph/9504378}
M. Spira et~al.,
\newblock Nucl. Phys. B453 (1995) 17, {{\tt hep-ph/9504378}}.
%%CITATION = HEP-PH/9504378;%%
\bibitem{hep-ph/0404071}
U. Aglietti et~al.,
\newblock Phys. Lett. B595 (2004) 432, {{\tt hep-ph/0404071}}.
%%CITATION = HEP-PH/0404071;%%
\bibitem{hep-ph/0407249}
G. Degrassi and F. Maltoni,
\newblock Phys. Lett. B600 (2004) 255, {{\tt hep-ph/0407249}}.
%%CITATION = HEP-PH/0407249;%%
\bibitem{arXiv:0809.1301}
S. Actis et~al.,
\newblock Phys. Lett. B670 (2008) 12, {{\tt arXiv:0809.1301}}.
%%CITATION = 0809.1301;%%
\bibitem{arXiv:0809.3667}
S. Actis et~al.,
\newblock Nucl. Phys. B811 (2009) 182, {{\tt arXiv:0809.3667}}.
%%CITATION = 0809.3667;%%
\bibitem{hep-ph/0306211}
S. Catani et~al.,
\newblock JHEP 07 (2003) 028, {{\tt hep-ph/0306211}}.
%%CITATION = HEP-PH/0306211;%%
\bibitem{arXiv:0901.2427}
D. de~Florian and M. Grazzini,
\newblock Phys. Lett. B674 (2009) 291, {{\tt arXiv:0901.2427}}.
%%CITATION = 0901.2427;%%
\bibitem{hep-ph/0307206}
O. Brein, A. Djouadi and R. Harlander,
\newblock Phys. Lett. B579 (2004) 149, {{\tt hep-ph/0307206}}.
%%CITATION = HEP-PH/0307206;%%
\bibitem{hep-ph/0306234}
M.L. Ciccolini, S. Dittmaier and M. Kramer,
\newblock Phys. Rev. D68 (2003) 073003, {{\tt hep-ph/0306234}}.
%%CITATION = HEP-PH/0306234;%%
\bibitem{hep-ph/0406152}
Higgs Working Group, K.A. Assamagan et~al.,
\newblock (2004), {{\tt hep-ph/0406152}}.
%%CITATION = HEP-PH/0406152;%%
\bibitem{hep-ph/0304035}
R.V. Harlander and W.B. Kilgore,
\newblock Phys. Rev. D68 (2003) 013001, {{\tt hep-ph/0304035}}.
%%CITATION = HEP-PH/0304035;%%
\bibitem{hep-ph/9206246}
T. Han, G. Valencia and S. Willenbrock,
\newblock Phys. Rev. Lett. 69 (1992) 3274, {{\tt hep-ph/9206246}}.
%%CITATION = HEP-PH/9206246;%%
\bibitem{hep-ph/9905386}
J.M. Campbell and R.K. Ellis,
\newblock Phys. Rev. D60 (1999) 113006, {{\tt hep-ph/9905386}}.
%%CITATION = HEP-PH/9905386;%%
\bibitem{hep-ph/0306109}
T. Figy, C. Oleari and D. Zeppenfeld,
\newblock Phys. Rev. D68 (2003) 073005, {{\tt hep-ph/0306109}}.
%%CITATION = HEP-PH/0306109;%%
\bibitem{hep-ph/0403194}
E.L. Berger and J.M. Campbell,
\newblock Phys. Rev. D70 (2004) 073011, {{\tt hep-ph/0403194}}.
%%CITATION = HEP-PH/0403194;%%
\bibitem{hep-ph/0612172}
U. Aglietti et~al.,
\newblock (2006), {{\tt hep-ph/0612172}}.
%%CITATION = HEP-PH/0612172;%%
\bibitem{hep-ph/0107081}
W. Beenakker et~al.,
\newblock Phys. Rev. Lett. 87 (2001) 201805, {{\tt hep-ph/0107081}}.
%%CITATION = HEP-PH/0107081;%%
\bibitem{hep-ph/0107101}
L. Reina and S. Dawson,
\newblock Phys. Rev. Lett. 87 (2001) 201804, {{\tt hep-ph/0107101}}.
%%CITATION = HEP-PH/0107101;%%
\bibitem{hep-ph/0211438}
S. Dawson et~al.,
\newblock Phys. Rev. D67 (2003) 071503, {{\tt hep-ph/0211438}}.
%%CITATION = HEP-PH/0211438;%%
\bibitem{hep-ph/0305321}
O. Brein and W. Hollik,
\newblock Phys. Rev. D68 (2003) 095006, {{\tt hep-ph/0305321}}.
%%CITATION = HEP-PH/0305321;%%
\bibitem{arXiv:0705.2744}
O. Brein and W. Hollik,
\newblock Phys. Rev. D76 (2007) 035002, {{\tt arXiv:0705.2744}}.
%%CITATION = 0705.2744;%%
\bibitem{arXiv:0707.0381}
M. Ciccolini, A. Denner and S. Dittmaier,
\newblock Phys. Rev. Lett. 99 (2007) 161803, {{\tt arXiv:0707.0381}}.
%%CITATION = 0707.0381;%%
\bibitem{arXiv:0710.4749}
M. Ciccolini, A. Denner and S. Dittmaier,
\newblock Phys. Rev. D77 (2008) 013002, {{\tt arXiv:0710.4749}}.
%%CITATION = 0710.4749;%%
\bibitem{arXiv:1101.0593}
LHC Higgs Cross Section Working Group, S. Dittmaier et~al.,
\newblock (2011), {{\tt arXiv:1101.0593}}.
%%CITATION = 1101.0593;%%
\bibitem{arXiv:1201.3084}
S. Dittmaier et~al.,
\newblock (2012), {{\tt arXiv:1201.3084}}.
%%CITATION = 1201.3084;%%
\bibitem{arXiv:1307.1347}
T.L.H.C.S.W. Group et~al.,
\newblock (2013), {{\tt arXiv:1307.1347}}.
%%CITATION = 1307.1347;%%
-\bibitem{arXiv:1610.07922}
-LHC Higgs Cross Section Working Group, D. de~Florian et~al.,
-\newblock (2016), {{\tt arXiv:1610.07922}}.
-%%CITATION = ARXIV:1610.07922;%%
-
\end{thebibliography}
Index: trunk/HiggsBounds-5/minipaper.tex
===================================================================
--- trunk/HiggsBounds-5/minipaper.tex (revision 593)
+++ trunk/HiggsBounds-5/minipaper.tex (revision 594)
@@ -1,17 +1,17 @@
\documentclass{article}
\usepackage{cite}
\begin{document}
-HiggsBounds\cite{arXiv:0811.4169,arXiv:1102.1898,arXiv:1301.2345,arXiv:1311.0055,arXiv:1507.06706} version 5.2.0beta uses the following experimental analyses: \cite{arxiv:1112.2577,arXiv:0806.0611,arXiv:1207.0449,arXiv:0809.3930,arXiv:0901.1887,arXiv:1603.06896,arXiv:1108.3331,arXiv:1109.3357,arxiv:1202.1408,arXiv:1712.06386,arXiv:1003.3363,arXiv:1012.0874,arxiv:1202.3478,arXiv:1504.00936,arXiv:1502.04478,arXiv:1509.05051,arXiv:1507.05930,arXiv:1011.1931,arXiv:1506.00424,arXiv:1503.04233,arXiv:1008.3564,hep-ex/0404012,arXiv:1108.5064,arXiv:1710.01123,arXiv:1509.00389,arXiv:1202.1416,hep-ex/0501033,arXiv:1701.02032,arXiv:1506.08329,arXiv:0905.3381,arXiv:1001.4481,arXiv:1709.07242,arXiv:1402.3244,arXiv:1409.6064,arXiv:1509.04670,arXiv:0908.1811,hep-ex/0410017,arXiv:1202.1414,arXiv:1001.4468,arXiv:1204.2760,arXiv:0906.5613,arXiv:1207.7214,arXiv:0812.0267,arXiv:1207.6436,arXiv:0707.0373,arXiv:1603.02991,arXiv:1402.3051,hep-ex/0107032,hep-ex/0602042,hep-ex/0111010,arXiv:1106.4555,arXiv:1503.04114,hep-ex/0107031,arXiv:1407.6583,arXiv:1404.1344,hep-ex/0401022,arXiv:1510.06534,arXiv:1301.6065,arXiv:1406.7663,arXiv:1807.07915,arXiv:1106.4885,arXiv:1504.04710,arXiv:1202.1415,hep-ex/0107034,arXiv:1406.5053,arXiv:1106.4782,arXiv:1510.01181,arXiv:1107.1268,arxiv:1202.1997,arXiv:1107.4960,arXiv:1307.5515,hep-ex/0206022,arXiv:0906.1014,arXiv:0907.1269,arxiv:1202.1488,arXiv:1506.02301,CDFnotes,D0notes,CMSnotes,ATLASnotes,LHWGnotes}
+HiggsBounds\cite{arXiv:0811.4169,arXiv:1102.1898,arXiv:1301.2345,arXiv:1311.0055,arXiv:1507.06706} version 5.3.0beta uses the following experimental analyses: \cite{arXiv:1406.7663,arXiv:1106.4885,arXiv:1603.02991,arXiv:1107.1268,arXiv:1809.06682,arXiv:1001.4468,arXiv:1807.00539,arXiv:1807.07915,arXiv:1503.04233,arXiv:1509.00389,arXiv:1701.02032,arXiv:1504.04710,arXiv:1807.04873,hep-ex/0107031,hep-ex/0410017,arXiv:1507.05930,arXiv:1407.6583,arXiv:1504.00936,arXiv:1406.5053,arXiv:1008.3564,hep-ex/0401022,arXiv:1506.02301,arXiv:1710.01123,arXiv:1202.1415,arXiv:1001.4481,arXiv:1107.4960,arXiv:1402.3244,arxiv:1112.2577,arXiv:1301.6065,arXiv:1807.08567,arXiv:0906.1014,arXiv:1503.04114,arXiv:1509.05051,arxiv:1202.1997,hep-ex/0111010,hep-ex/0602042,arXiv:1011.1931,arXiv:1707.04147,arXiv:1509.04670,arXiv:1202.1414,arXiv:1709.07242,arXiv:1109.3357,arXiv:1808.03599,arXiv:0812.0267,arXiv:0806.0611,arXiv:1510.01181,arXiv:1307.5515,hep-ex/0206022,arXiv:1108.3331,arXiv:0707.0373,arXiv:0906.5613,arXiv:1506.00424,arXiv:1409.6064,arXiv:1207.0449,arXiv:1207.7214,hep-ex/0501033,arXiv:0907.1269,arxiv:1202.3478,arXiv:1506.08329,arXiv:1502.04478,arXiv:1402.3051,arXiv:1603.06896,arXiv:1106.4555,arXiv:1204.2760,hep-ex/0107034,arxiv:1202.1488,arXiv:0809.3930,arXiv:0901.1887,hep-ex/0404012,hep-ex/0107032,arXiv:1712.06386,arXiv:0905.3381,arXiv:1108.5064,arXiv:1207.6436,arXiv:1404.1344,arXiv:1012.0874,arXiv:1806.07355,arxiv:1202.1408,arXiv:1003.3363,arXiv:1106.4782,arXiv:1510.06534,arXiv:0908.1811,arXiv:1808.00336,arXiv:1202.1416,CDFnotes,D0notes,CMSnotes,ATLASnotes,LHWGnotes}
.
-Internally, {\tt HiggsBounds} uses a number of Standard Model results for the Higgs sector\cite{hep-ph/9704448,hep-ph/0102227,hep-ph/0102241,hep-ph/0201206,hep-ph/0207004,hep-ph/0302135,arXiv:0811.3458,Dawson:1990zj,Djouadi:1991tka,hep-ph/9504378,hep-ph/0404071,hep-ph/0407249,arXiv:0809.1301,arXiv:0809.3667,hep-ph/0306211,arXiv:0901.2427,hep-ph/0307206,hep-ph/0306234,hep-ph/0406152,hep-ph/0304035,hep-ph/9206246,hep-ph/9905386,hep-ph/0306109,hep-ph/0403194,hep-ph/0612172,hep-ph/0107081,hep-ph/0107101,hep-ph/0211438,hep-ph/0305321,arXiv:0705.2744,arXiv:0707.0381,arXiv:0710.4749,arXiv:1101.0593,arXiv:1201.3084,arXiv:1307.1347,arXiv:1610.07922}
+Internally, {\tt HiggsBounds} uses a number of Standard Model results for the Higgs sector\cite{hep-ph/9704448,hep-ph/0102227,hep-ph/0102241,hep-ph/0201206,hep-ph/0207004,hep-ph/0302135,arXiv:0811.3458,Dawson:1990zj,Djouadi:1991tka,hep-ph/9504378,hep-ph/0404071,hep-ph/0407249,arXiv:0809.1301,arXiv:0809.3667,hep-ph/0306211,arXiv:0901.2427,hep-ph/0307206,hep-ph/0306234,hep-ph/0406152,hep-ph/0304035,hep-ph/9206246,hep-ph/9905386,hep-ph/0306109,hep-ph/0403194,hep-ph/0612172,hep-ph/0107081,hep-ph/0107101,hep-ph/0211438,hep-ph/0305321,arXiv:0705.2744,arXiv:0707.0381,arXiv:0710.4749,arXiv:1101.0593,arXiv:1201.3084,hep-ph/0304035,arXiv:1307.1347,arXiv:1610.07922}
to convert between experimental limits with different normalisations.
\bibliographystyle{h-elsevier3-newarxivid-leftjust}
\bibliography{minipaper}
\end{document}
Index: trunk/HiggsBounds-5/minipaper.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: trunk/HiggsBounds-5/convert2bibtex.pl
===================================================================
--- trunk/HiggsBounds-5/convert2bibtex.pl (revision 593)
+++ trunk/HiggsBounds-5/convert2bibtex.pl (revision 594)
@@ -1,140 +1,140 @@
#!/usr/bin/perl -T -w
# This script creates minipaper.tex and preliminary minipaper.bib from example_data/HB_randomtest50points_Key.dat
# After running it:
# * copy and paste minipaper.tex to an email, subject 'generate bibtex', send to slaclib2@slac.stanford.edu
# * copy the response to minipaper.bib but make sure you don't copy over CDFnotes,D0notes,LHWGnotes
# * you may have to edit some of the bibtex e.g. in 1003.3363 need to change:
# Tevatron New Phenomena & Higgs Working Group -> Tevatron New Phenomena and Higgs Working Group
# and 'collaboration = "The '->'collaboration = "'
# * do
# latex minipaper.tex ; bibtex minipaper ; latex minipaper.tex ; bibtex minipaper ; latex minipaper.tex
# dvipdf minipaper
use strict;
my $ref='';
my $x=0;
my %arxiv=();
my %cdf=();
my %d0=();
my %cms=();
my %atl=();
my %lhwg=();
my $correctsettings='no';
my $vers='';
-# open FILE1,"<", "example_data/HB_randomtest50points_Key.dat" or die $!; #Key generated by HB
-open FILE1,"<", "Key.dat" or die $!; #Key generated by HB
+open FILE1,"<", "example_data/mhmodplus/mhmod+_Key.dat" or die $!; #Key generated by HB
+# open FILE1,"<", "Key.dat" or die $!; #Key generated by HB
open FILE2,">", "minipaper.tex" or die $!; #
open FILE3,">", "minipaper.bib" or die $!; #
while (my $line = ) { #goes through each line in the file
if($line =~ /(arxiv\:\d\d\d\d\.\d\d\d\d\d|arxiv\:\d\d\d\d\.\d\d\d\d|hep\-ex\/\d\d\d\d\d\d\d)/i){$arxiv{$1}=1;}
# if($line =~ /(arxiv\:\d\d\d\d\.\d\d\d\d|hep\-ex\/\d\d\d\d\d\d\d)/i){$arxiv{$1}=1;}
# if($line =~ /(arxiv\:\d\d\d\d\.\d\d\d\d\d)/i){$arxiv{$1}=1;}
if($line =~ /(CDF\sNote\s\d\d\d\d\d|CDF\sNote\s\d\d\d\d)/i){$cdf{$1}=1;}#can be 4 or 5 digit numbers
if($line =~ /(D0\sNote\s\d\d\d\d)/i){$d0{$1}=1;}
if($line =~ /(CMS\sPAS\sHIG\-\d\d\-\d\d\d)/i){$cms{$1}=1;}
if($line =~ /(ATLAS\-CONF\-\d\d\d\d\-\d\d\d)/i){$atl{$1}=1;}
if($line =~ /(LHWG\sNote\s\d\d\d\d\-\d\d)/i){$lhwg{$1}=1;}
if($line =~ m/\swith\sthe\ssetting\swhichanalyses\=LandH/){$correctsettings='yes';}
if($line =~ m/This\skey\shas\sbeen\sgenerated\swith\sHiggsBounds\sversion\s([\.\w]+)\s/){$vers=$1;}
}
if($correctsettings ne 'yes'){
print "Something wrong with Key file\n";
die;
}
print "vers= ~".$vers."~\n";
print FILE2 '\documentclass{article}'."\n\n";
print FILE2 '\usepackage{cite}'."\n\n";
print FILE2 '\begin{document}'."\n\n";
print FILE2 'HiggsBounds\cite{arXiv:0811.4169,arXiv:1102.1898,arXiv:1301.2345,arXiv:1311.0055,arXiv:1507.06706} version '.$vers.' uses the following experimental analyses: \cite{';
foreach my $t (keys %arxiv){
print FILE2 $t.",";
}
print FILE2 'CDFnotes,D0notes,CMSnotes,ATLASnotes,LHWGnotes} '."\n";
print FILE2 '.'."\n";
print FILE2 ' '."\n";
print FILE2 'Internally, {\tt HiggsBounds} uses a number of Standard Model results for the Higgs sector\cite{hep-ph/9704448,hep-ph/0102227,hep-ph/0102241,hep-ph/0201206,hep-ph/0207004,hep-ph/0302135,arXiv:0811.3458,Dawson:1990zj,Djouadi:1991tka,hep-ph/9504378,hep-ph/0404071,hep-ph/0407249,arXiv:0809.1301,arXiv:0809.3667,hep-ph/0306211,arXiv:0901.2427,hep-ph/0307206,hep-ph/0306234,hep-ph/0406152,hep-ph/0304035,hep-ph/9206246,hep-ph/9905386,hep-ph/0306109,hep-ph/0403194,hep-ph/0612172,hep-ph/0107081,hep-ph/0107101,hep-ph/0211438,hep-ph/0305321,arXiv:0705.2744,arXiv:0707.0381,arXiv:0710.4749,arXiv:1101.0593,arXiv:1201.3084,hep-ph/0304035,arXiv:1307.1347,arXiv:1610.07922}'."\n";
print FILE2 'to convert between experimental limits with different normalisations.'."\n\n";
print FILE2 '\bibliographystyle{h-elsevier3-newarxivid-leftjust}'."\n\n";
print FILE2 '\bibliography{minipaper}'."\n\n";
print FILE2 '\end{document}'."\n";
print FILE3 "\n\n";
print FILE3 '@misc{CDFnotes,'."\n";
#print FILE3 ' author = "CDF, Collaboration",'."\n";
print FILE3 ' collaboration = "CDF",'."\n";
#print FILE3 ' howpublished = "CDF Notes';
print FILE3 ' note = "CDF Notes';
foreach (keys %cdf){
/CDF\sNote\s(\d\d\d\d\d|\d\d\d\d)/;#can be 4 or 5 digit numbers
print FILE3 " ".$1;
}
print FILE3 '",'."\n";
print FILE3 ' year = ""'."\n";
print FILE3 '}'."\n\n";
print FILE3 '@misc{D0notes,'."\n";
#print FILE3 ' author = "D0, Collaboration",'."\n";
print FILE3 ' collaboration = "D0",'."\n";
print FILE3 ' title = "",'."\n";
print FILE3 ' note = "D0 Notes';
foreach (keys %d0){
/D0\sNote\s(\d\d\d\d)/;
print FILE3 " ".$1;
}
print FILE3 '",'."\n";
print FILE3 ' year = ""'."\n";
print FILE3 '}'."\n\n";
print FILE3 '@misc{CMSnotes,'."\n";
#print FILE3 ' author = "CMS, Collaboration",'."\n";
print FILE3 ' collaboration = "CMS",'."\n";
print FILE3 ' title = "",'."\n";
print FILE3 ' note = "CMS Physics Analysis Summaries';
foreach (keys %cms){
/CMS\sPAS\s(HIG\-\d\d\-\d\d\d)/;
print FILE3 " ".$1;
}
print FILE3 '",'."\n";
print FILE3 ' year = ""'."\n";
print FILE3 '}'."\n\n";
print FILE3 '@misc{ATLASnotes,'."\n";
#print FILE3 ' author = "ATLAS, Collaboration",'."\n";
print FILE3 ' collaboration = "ATLAS",'."\n";
print FILE3 ' title = "",'."\n";
print FILE3 ' note = "ATLAS CONF Notes';
foreach (keys %atl){
/ATLAS\-CONF\-(\d\d\d\d\-\d\d\d)/;
print FILE3 " ".$1;
}
print FILE3 '",'."\n";
print FILE3 ' year = ""'."\n";
print FILE3 '}'."\n\n";
print FILE3 '@misc{LHWGnotes,'."\n";
#print FILE3 ' author = "LEP Higgs Working Group",'."\n";
print FILE3 ' collaboration = "LHWG",'."\n";
print FILE3 ' title = "",'."\n";
print FILE3 ' note = "LHWG Notes';
foreach (keys %lhwg){
/LHWG\sNote\s(\d\d\d\d\-\d\d)/;
print FILE3 " ".$1;
}
print FILE3 '",'."\n";
print FILE3 ' year = ""'."\n";
print FILE3 '}'."\n\n";
#\d means match any digit character
#/i means case independent
#| means 'or'
close FILE1;
close FILE2;
close FILE3;
Index: trunk/HiggsSignals-2/io.f90
===================================================================
--- trunk/HiggsSignals-2/io.f90 (revision 593)
+++ trunk/HiggsSignals-2/io.f90 (revision 594)
@@ -1,1116 +1,1116 @@
!--------------------------------------------------------------------
! This file is part of HiggsSignals (TS 03/03/2013)
!--------------------------------------------------------------------
module io
!--------------------------------------------------------------------
use usefulbits, only : Hneut,Hplus,Chineut,Chiplus
use input, only : count_columns, getfilelength, stem_array, required, f_orig
implicit none
contains
!--------------------------------------------------------------------
subroutine setup_input_for_hs
!--------------------------------------------------------------------
! * if inputmethod='datfile' finds np,Exptdata
! * if inputmethod='datfile', finds infile1 (prefix for input/output filenames)
! * sets ndat (number of parameter points considered)
! * sets n_additional (number of additional data values for each parameter point)
! * allocates theo, g2, partR
!--------------------------------------------------------------------
use usefulbits, only : np,ndat,n_additional,theo,effC,g2,partR, &
& inputmethod,whichinput, &
& debug,infile1,infile2, &
& allocate_hadroncolliderextras_parts,allocate_dataset_parts, &
& allocate_couplratio_parts,allocate_sqcouplratio_parts,fill_pdesc
use input, only : getshortcommandline,check_number_of_particles, fill_stem_array, &
& file_name_msg
use theory_BRfunctions
implicit none
!-----------------------------------internal
integer :: f,ios,cc,g
character(LEN=50) :: stem
!-------------------------------------------
call fill_pdesc
select case(inputmethod)
case('datfile')
call getbasiccommandline_for_hs!get whichanalyses,whichinput,numbers of particles
call getshortcommandline(infile1,infile2)! get infile1
case('subrout')
!np(Hneut),np(Hplus) are already set
call check_number_of_particles
! call check_whichanalyses
!haven't yet set whichanalyses,whichinput
infile1=''
case default
- stop'incorrect value for inputmethod'
+ stop 'incorrect value for inputmethod'
end select
!getting ndat and n_additional...
select case(inputmethod)
case('datfile')
f=f_orig
n_additional=0
select case(whichinput)
case('part','effC','hadr')
call fill_stem_array
g=1
stem=stem_array(g)
f=f_orig+g
open(f,file=trim(infile1)//trim(stem)//'.dat',status='old',action='read',iostat=ios)
if(ios.ne.0)then
call file_name_msg(f)
write(*,*)'Check that was specified correctly'
write(*,*)'and that file exists.'
call flush(6)
- stop'Problem opening file: see standard output for more info'
+ stop 'Problem opening file: see standard output for more info'
endif
ndat=getfilelength(f) ! number of data sets (i.e. lines) in input
if((ndat.le.0))stop 'error getting ndat'
close(f)
g=ubound(stem_array,dim=1)
stem=stem_array(g)
f=f_orig+g
!the last element in stem_array should be 'additional'
- if(trim(stem_array(g)).ne.'additional')stop'Error in subroutine setup_input (a)'
+ if(trim(stem_array(g)).ne.'additional')stop 'Error in subroutine setup_input (a)'
required(g)=.False.
open(f,file=trim(infile1)//trim(stem)//'.dat',status='old',action='read',iostat=ios)
if(ios.eq.0)then
cc=count_columns(f)
if(cc.gt.1)then
if(getfilelength(f).eq.ndat)then
n_additional=cc-1
required(g)=.True.
endif
endif
endif
close(f)
case('SLHA')
ndat=1 ; n_additional=0
case default
- stop'error in subroutine setup_input_for_hs (1a)'
+ stop 'error in subroutine setup_input_for_hs (1a)'
end select
case('website','subrout')
ndat=1 ; n_additional=0
case default
- stop'error in subroutine setup_input_for_hs (1b)'
+ stop 'error in subroutine setup_input_for_hs (1b)'
end select
!...finished getting ndat and n_additional
if(debug)then
write(*,*)'np(Hneut)=',np(Hneut)
write(*,*)'ndat=',ndat
write(*,*)'n_additional=',n_additional
endif
allocate(theo(ndat))
call allocate_dataset_parts(theo,n_additional)
! - Outdated:
allocate(g2(ndat))
call allocate_sqcouplratio_parts(g2)
! -
allocate(effC(ndat))
call allocate_couplratio_parts(effC)
allocate(partR(ndat))
call allocate_hadroncolliderextras_parts(partR)
end subroutine setup_input_for_hs
!--------------------------------------------------------------------
subroutine getbasiccommandline_for_hs
!--------------------------------------------------------------------
! finds whichanalyses,whichinput,np from command line
!--------------------------------------------------------------------
!nb iargc and getarg are non-standard
use usefulbits, only : np,pdesc,whichinput,inputmethod
use usefulbits_hs, only : Exptdir, runmode, pdf
use input, only : check_number_of_particles, check_whichinput, nargs_datfile
implicit none
!-----------------------------------internal
character(LEN=100) :: temp
character(LEN=5) :: nHtemp, pdftemp
integer :: i,x
integer :: number_args
logical :: wrong_args
!-------------------------------------------
number_args = IARGC()
!Exptdir, runmode, pdf, whichinput, np(Hneut), np(Hplus) , prefix
nargs_datfile = 4+ 2 +1
np(Chineut)=0
np(Chiplus)=0
wrong_args= (number_args .ne. nargs_datfile)
if( wrong_args )then
write(*,*) "Incorrect number of parameters given on command line"
call command_line_how2_for_hs
stop "Error: command line entered incorrectly (see standard output for more info)"
endif
! Read arguments into text strings.
i=1
temp=""
call GETARG(i,temp)
Exptdir = ""
Exptdir = trim(temp)
i=i+1
temp=""
call GETARG(i,temp)
runmode = ""
runmode = trim(temp)
i=i+1
temp=""
call GETARG(i,temp)
pdftemp = ""
pdftemp = trim(temp)
i=i+1
if(verify(pdftemp," 1234567890").gt.0)then
! checks that the string nHtemp just contains the characters " 1234567890"
! the function verify is standard in fortran 95
write(*,*)'Incorrect pdf: not a number.'
write(*,*)'(you entered pdf="'//trim(adjustl(pdftemp))//'")'
call command_line_how2_for_hs
stop "Error: command line entered incorrectly (see standard output for more info)"
endif
read(pdftemp,*) pdf
temp=""
call GETARG(i,temp)
whichinput = ""
whichinput = trim(temp)
i=i+1
do x=1,2
temp=""
call GETARG(i,temp)
nHtemp = ""
nHtemp = trim(temp)
i=i+1
if(verify(nHtemp," 1234567890").gt.0)then
! checks that the string nHtemp just contains the characters " 1234567890"
! the function verify is standard in fortran 95
write(*,*)'Incorrect n'//trim(adjustl(pdesc(x)%short))//': not a number.'
write(*,*)'(you entered n'//trim(adjustl(pdesc(x)%short))//&
& '="'//trim(adjustl(nHtemp))//'")'
write(*,*)'n'//trim(adjustl(pdesc(x)%short))//' is the number of '//&
& trim(adjustl(pdesc(x)%long))//'s'
call command_line_how2_for_hs
stop "Error: command line entered incorrectly (see standard output for more info)"
endif
read(nHtemp,*) np(x)
enddo
call check_number_of_particles
call check_whichinput
end subroutine getbasiccommandline_for_hs
!--------------------------------------------------------------------
subroutine command_line_how2_for_hs
!--------------------------------------------------------------------
use usefulbits, only : np,inputmethod
write(*,*)'The correct syntax for the command line is:'
write(*,*)' ./HiggsSignals ',&
& ''
write(*,*)'e.g.'
write(*,*)' ./HiggsSignals latestresults peak 2 part 3 1 example_data/mhmodplus/mhmod+_'
write(*,*)'See HiggsSignals manual for more details.'
call flush(6)
end subroutine command_line_how2_for_hs
!--------------------------------------------------------------------
subroutine do_output_for_hs
! Writes output to file or screen, depending on whether
! inputmethod='datfile' or inputmethod='website'
!--------------------------------------------------------------------
use usefulbits, only : theo,ndat,inputmethod,np,fullHBres, &
& n_additional, file_id_common, file_id_common2, & !input
& whichanalyses,whichinput,pr,listprocesses,infile1
use usefulbits_hs, only : analyses, StrCompress, pdf, runmode, HSres, HSvers, Exptdir,&
& Nparam
! use extra_bits_for_web
! use S95tables
! use extra_bits_for_SLHA
implicit none
!-----------------------------------internal
integer :: i,j,ii,jj,x,n,n_sum,kk
character(LEN=2) :: nHchar
character(LEN=3) :: addchar,tempchar
character(LEN=8) :: createdate
character(LEN=10) :: createtime
character(LEN=19) :: createdateandtime
character(LEN=100) :: format43
character(LEN=500) :: columndescription
type(listprocesses) :: proc
character(LEN=200):: descrip
double precision, allocatable :: Mhall(:,:)
character(LEN=100) :: formatspec
character(LEN=13) :: pdf_desc(3) = (/'box ','gaussian ','box+gaussian'/)
!-------------------------------------------
select case(inputmethod)
case('datfile')
select case(whichinput)
case('SLHA')
call HiggsSignals_outputSLHAdata(infile1)
case('effC','part','hadr')
if((np(Hneut)>0).or.(np(Hplus)>0))then
allocate(Mhall(ndat,np(Hneut)+np(Hplus)))
do jj=1,ndat
ii=0
if(np(Hneut)>0)then
do i=1,np(Hneut)
Mhall(jj,i)=theo(jj)%particle(Hneut)%M(i)
enddo
ii=np(Hneut)
endif
if(np(Hplus)>0)then
do i=1,np(Hplus)
Mhall(jj,ii+i)=theo(jj)%particle(Hplus)%M(i)
enddo
endif
enddo
else
- stop'error in subroutine do_output(1)'
+ stop 'error in subroutine do_output(1)'
endif
format43='(1I14,'
write(nHchar,'(I2)')np(Hneut)
if(np(Hneut)>0)format43=trim(adjustl(format43))//nHchar//'G16.6,'
write(nHchar,'(I2)')np(Hplus)
if(np(Hplus)>0)format43=trim(adjustl(format43))//nHchar//'G16.6,'
format43=trim(adjustl(format43))//'3G16.6,3I6,1G16.6'
write(addchar,'(I3)')n_additional
if(n_additional>0)format43=trim(adjustl(format43))//','//trim(adjustl(addchar))//'G16.6'
format43=trim(adjustl(format43))//')'
open(file_id_common,file=trim(infile1)//"HiggsSignals_results.dat")
if(runmode.eq.'peak'.or.runmode.eq.'both') then
open(file_id_common2,file=trim(infile1)//"peakobservables.dat")
endif
call date_and_time(createdate,createtime)
createdateandtime=createdate(7:8)//'.' &
& //createdate(5:6)//'.' &
& //createdate(1:4)//' at '&
& //createtime(1:2)//':' &
& //createtime(3:4)
write(file_id_common,*)'# generated with HiggsSignals version '//&
& trim(adjustl(HSvers))//' on '//createdateandtime
write(file_id_common,*)'# settings: '//adjustl(trim(Exptdir))//', '//whichinput//', '&
& //runmode//', '//adjustl(trim(pdf_desc(pdf)))
write(file_id_common,*)'#'
write(file_id_common,*)'# column abbreviations'
write(file_id_common,*)'# n : line id of input'
if(np(Hneut)>0)write(file_id_common,*)'# Mh(i) : ',&
& 'Neutral Higgs boson masses in GeV'
if(np(Hplus)>0)write(file_id_common,*)'# Mhplus(i) : ',&
& 'Charged Higgs boson masses in GeV'
write(file_id_common,*)'# csq(mu) : Chi^2 from the signal strengths observables'
write(file_id_common,*)'# csq(mh) : Chi^2 from the Higgs mass observables'
write(file_id_common,*)'# csq(tot) : total Chi^2'
write(file_id_common,*)'# nobs(mu) : number of signal strength observables'
write(file_id_common,*)'# nobs(mh) : number of Higgs mass observables'
write(file_id_common,*)'# nobs(tot) : total number of observables'
write(file_id_common,"(A,I3)")'# Pvalue : Probability, given csq(tot) and ndf=nobs(tot)-',Nparam
if(n_additional>0)then
write(file_id_common,*)'# additional : ',&
& 'optional additional data stored in additional.dat (e.g. tan beta)'
endif
write(file_id_common,*)'#'
if(runmode.eq.'peak'.or.runmode.eq.'both') then
formatspec='(I3,8X,I10,3X,F6.2,1X,4F9.4,7X,A3,6X,F6.2,5X,F6.2,3X,I3,3X,A40,5X,A)'
write(file_id_common2,*) "# List of peak observables used from " &
& //trim(adjustl(Exptdir))//":"
write(file_id_common2,*)'#'
write(file_id_common2,*)'# Number : HS internal numbering of analysis'
write(file_id_common2,*)'# Analysis-ID : identity number of analysis'
write(file_id_common2,*)'# mh_obs : Mass position of peak observable',&
& ' (hypothetical Higgs mass where signal strength was measured)'
write(file_id_common2,*)'# mu_obs : Observed (best-fit) signal strength value'
write(file_id_common2,*)'# dmu_low : Lower 1s (cyan band) signal strength value'
write(file_id_common2,*)'# dmu_high : Upper 1s (cyan band) signal strength value'
write(file_id_common2,*)'# dmh_exp : Experimental mass uncertainty of analysis'
write(file_id_common2,*)'# collaboration : ',&
& 'Exp. collaboration which published the data'
write(file_id_common2,*)'# energy : ',&
& 'center-of-mass energy of the experiment (TeV)'
write(file_id_common2,*)'# luminosity : ',&
& 'integrated luminosity used for the measurement (fb-1)'
write(file_id_common2,*)'# mass-chi2 : ',&
& 'Mass measurement entering the Chi^2 (1/0=yes/no)'
write(file_id_common2,*)'# description : Higgs process of analysis'
write(file_id_common2,*)'# reference : ',&
& 'Experimental publication of the data/analysis'
write(file_id_common2,*)'#'
write(file_id_common2,*)'# Number Analysis-ID mh_obs mu_obs dmu_low dmu_high ',&
& " dmh_exp collaboration energy luminosity mass-chi2 ", &
& " description reference"
write(file_id_common2,*) "#"
kk=0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do j=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
kk=kk+1
write(file_id_common2,formatspec)kk,analyses(i)%id,analyses(i)%peaks(j)%mpeak,&
& analyses(i)%peaks(j)%mu, analyses(i)%peaks(j)%dmulow,analyses(i)%peaks(j)%dmuup, &
& analyses(i)%table%deltam,analyses(i)%table%collaboration, analyses(i)%table%energy,&
& analyses(i)%table%lumi, analyses(i)%table%mhchisq, &
& trim(strcompress(analyses(i)%table%desc)), analyses(i)%table%label
enddo
enddo
close(file_id_common2)
endif
columndescription='#cols: n'
if(np(Hneut)>0)then
do i=1,np(Hneut)
write(tempchar,'(I3)')i
columndescription=trim(columndescription)//' Mh('//&
& trim(adjustl(tempchar))//') '
enddo
endif
if(np(Hplus)>0)then
do i=1,np(Hplus)
write(tempchar,'(I3)')i
columndescription=trim(columndescription)//' Mhplus('// &
& trim(adjustl(tempchar))//') '
enddo
endif
columndescription=trim(columndescription)//' csq(mu) csq(mh) '//&
& ' csq(tot) nobs(mu) nobs(mh) nobs(tot) Pvalue'
if(n_additional>0)then
do i=1,n_additional
write(tempchar,'(I3)')i
columndescription=trim(columndescription)//' additional('// &
& trim(adjustl(tempchar))//') '
enddo
endif
write(file_id_common,*)trim(columndescription)
write(file_id_common,*)'#'
if(n_additional>0)then
do jj=1,ndat
write(file_id_common,fmt=trim(format43))jj,(Mhall(jj,i),i=1,np(Hneut)+np(Hplus)), &
& HSres(jj)%Chisq_mu,HSres(jj)%Chisq_mh,HSres(jj)%Chisq, &
& HSres(jj)%nobs_mpred+HSres(jj)%nobs_peak_mu,HSres(jj)%nobs_peak_mh, &
& HSres(jj)%nobs,HSres(jj)%Pvalue,(theo(jj)%additional(i),i=1,n_additional)
enddo
else
do jj=1,ndat
write(file_id_common,fmt=trim(format43))jj,(Mhall(jj,i),i=1,np(Hneut)+np(Hplus)), &
& HSres(jj)%Chisq_mu,HSres(jj)%Chisq_mh,HSres(jj)%Chisq, &
& HSres(jj)%nobs_mpred+HSres(jj)%nobs_peak_mu,HSres(jj)%nobs_peak_mh, &
& HSres(jj)%nobs,HSres(jj)%Pvalue
enddo
endif
close(file_id_common)
deallocate(Mhall)
case default
- stop'error in subroutine do_output (*2)'
+ stop 'error in subroutine do_output (*2)'
end select
! case('website')
! do jj=1,ndat
!-----NOTE: Need to change weboutput in extra_bits_for_web for the new all-Higgses mode!!!
! call weboutput(res(jj))
! enddo
case('subrout')
select case(whichinput)
case('SLHA')
call HiggsSignals_outputSLHAdata(infile1)
case default
- stop'error in subroutine do_output(c)'
+ stop 'error in subroutine do_output(c)'
end select
case default
- stop'error in subroutine do_output (*1)'
+ stop 'error in subroutine do_output (*1)'
end select
end subroutine do_output_for_hs
!--------------------------------------------------------------------
subroutine setup_output_for_hs
!-Allocates the HBresults array.
!--------------------------------------------------------------------
use usefulbits, only : ndat !input
use usefulbits_hs, only : HSres !input
implicit none
allocate(HSres(ndat))
end subroutine setup_output_for_hs
!--------------------------------------------------------------------
subroutine get_ID_of_peakobservable(ii, ID)
use usefulbits_hs, only : HSres
implicit none
integer, intent(in) :: ii
integer, intent(out) :: ID
if(ii.gt.size(HSres(1)%obsID,dim=1).or.ii.le.0) then
write(*,*) 'WARNING in get_peakinfo_from_HSresults: Peak observable ', &
& ii,' unkwown! Returning zero.'
ID = 0
else
ID = HSres(1)%obsID(ii)
endif
end subroutine get_ID_of_peakobservable
!--------------------------------------------------------------------
subroutine get_peakinfo(obsID, muobs, dmuup, dmulow, mpeak, dm)
!--------------------------------------------------------------------
use usefulbits_hs, only : obs
implicit none
integer, intent(in) :: obsID
double precision, intent(out) :: muobs, dmuup, dmulow, mpeak, dm
integer :: pos, ii
pos = -1
do ii=lbound(obs,dim=1),ubound(obs,dim=1)
if(obs(ii)%id.eq.obsID) then
pos = ii
exit
endif
enddo
if(pos.ne.-1) then
mpeak = obs(pos)%peak%mpeak
dm = obs(pos)%peak%dm
muobs = obs(pos)%peak%mu
dmuup = obs(pos)%peak%dmuup
dmulow = obs(pos)%peak%dmulow
else
write(*,*) "WARNING in get_peakinfo: ID unknown."
endif
end subroutine get_peakinfo
!--------------------------------------------------------------------
subroutine get_more_peakinfo(obsID, mhchisq)
!--------------------------------------------------------------------
use usefulbits_hs, only : obs
implicit none
integer, intent(in) :: obsID
integer, intent(out) :: mhchisq
integer :: pos, ii
pos = -1
do ii=lbound(obs,dim=1),ubound(obs,dim=1)
if(obs(ii)%id.eq.obsID) then
pos = ii
exit
endif
enddo
if(pos.ne.-1) then
mhchisq = obs(pos)%table%mhchisq
else
write(*,*) "WARNING in get_peakinfo: ID unknown."
endif
end subroutine get_more_peakinfo
!--------------------------------------------------------------------
subroutine get_peak_channels(obsID, Nc, pIDs, dIDs, efficiencies)
!--------------------------------------------------------------------
use usefulbits_hs, only : obs
implicit none
integer, intent(in) :: obsID
integer, intent(out) :: Nc
integer, allocatable, intent(out) :: pIDs(:), dIDs(:)
double precision, allocatable, intent(out) :: efficiencies(:)
integer :: pos, ii
pos = -1
do ii=lbound(obs,dim=1),ubound(obs,dim=1)
if(obs(ii)%id.eq.obsID) then
pos = ii
exit
endif
enddo
if(pos.ne.-1) then
Nc = obs(pos)%table%Nc
allocate(pIDs(Nc),dIDs(Nc),efficiencies(Nc))
pIDs = obs(pos)%table%channel_p_id
dIDs = obs(pos)%table%channel_d_id
efficiencies = obs(pos)%table%channel_eff
else
write(*,*) "WARNING in get_peakinfo: ID unknown."
endif
end subroutine get_peak_channels
!--------------------------------------------------------------------
subroutine get_peakinfo_from_HSresults(obsID, mupred, domH, nHcomb)
!--------------------------------------------------------------------
use usefulbits_hs, only : HSres
implicit none
integer, intent(in) :: obsID
double precision, intent(out) :: mupred
integer, intent(out) :: domH, nHcomb
integer :: pos, ii
pos = -1
do ii=lbound(HSres(1)%nH,dim=1),ubound(HSres(1)%nH,dim=1)
if(obsID.eq.HSres(1)%obsID(ii)) then
pos = ii
exit
endif
enddo
if(pos.ne.-1) then
mupred = HSres(1)%mupred(ii)
domH = HSres(1)%domH(ii)
nHcomb = HSres(1)%nH(ii)
else
write(*,*) 'WARNING in get_peakinfo_from_HSresults: Peak observable ', &
& obsID,' unkwown! Returning zeros.'
mupred = 0.0D0
domH = 0
nHcomb = 0
endif
end subroutine get_peakinfo_from_HSresults
!--------------------------------------------------------------------
subroutine get_number_of_observables(ntotal, npeakmu, npeakmh, nmpred, nanalyses)
!--------------------------------------------------------------------
use usefulbits_hs, only : HSres
implicit none
integer, intent(out) :: ntotal, npeakmu, npeakmh, nmpred, nanalyses
ntotal = HSres(1)%nobs
npeakmu = HSres(1)%nobs_peak_mu
npeakmh = HSres(1)%nobs_peak_mh
nmpred = HSres(1)%nobs_mpred
nanalyses = HSres(1)%nanalysis
end subroutine get_number_of_observables
!--------------------------------------------------------------------
subroutine HiggsSignals_SLHA_output(detailed)
!--------------------------------------------------------------------
use usefulbits, only : whichinput,just_after_run
use usefulbits_hs, only : SLHAdetailed
integer, intent(in) :: detailed
if(detailed.eq.0) SLHAdetailed = .False.
!use output, only : do_output
!!!integer, intent(in) :: i
if(.not.just_after_run)then
- stop'subroutine run_HiggsSignals should be called'//&
+ stop 'subroutine run_HiggsSignals should be called'//&
' before subroutine HiggsSignals_SLHA_output'
endif
select case(whichinput)
case('SLHA')
call do_HiggsSignals_output
case default
- stop'The subroutine HiggsSignals_SLHA_output should'//&
+ stop 'The subroutine HiggsSignals_SLHA_output should'//&
' only be used if an input SLHA file is given.'
end select
end subroutine HiggsSignals_SLHA_output
!--------------------------------------------------------------------
subroutine do_HiggsSignals_output
!--------------------------------------------------------------------
use usefulbits, only : inputmethod,whichanalyses,whichinput,infile1
implicit none
select case(inputmethod)
case('datfile')
select case(whichinput)
case('SLHA')
call HiggsSignals_outputSLHAdata(infile1)
case default
- stop'error in subroutine do_output (*2)'
+ stop 'error in subroutine do_output (*2)'
end select
case('subrout')
select case(whichinput)
case('SLHA')
call HiggsSignals_outputSLHAdata(infile1)
case default
- stop'error in subroutine do_output(c)'
+ stop 'error in subroutine do_output(c)'
end select
case default
- stop'error in subroutine do_output (*1)'
+ stop 'error in subroutine do_output (*1)'
end select
end subroutine do_HiggsSignals_output
!--------------------------------------------------------------------
subroutine HiggsSignals_create_SLHA_output_default(detailed)
! Wrapper subroutine of HiggsSignals_create_SLHA_output with a fixed
! name of output file ("HS-output.slha").
!--------------------------------------------------------------------
implicit none
integer, intent(in) :: detailed
call HiggsSignals_create_SLHA_output("HS-output.slha", detailed)
end subroutine HiggsSignals_create_SLHA_output_default
!--------------------------------------------------------------------
subroutine HiggsSignals_create_SLHA_output(infile, detailed)
!--------------------------------------------------------------------
use usefulbits, only : just_after_run, file_id_common
use usefulbits_hs, only : SLHAdetailed, newSLHAfile
implicit none
character(len=*),intent(in) :: infile
integer, intent(in) :: detailed
integer :: ios
character(len=80) :: infile_80
if(detailed.eq.0) SLHAdetailed = .False.
write(infile_80,*) infile
if(trim(adjustl(infile_80)).ne.trim(adjustl(infile))) then
write(*,*) "WARNING: SLHA output file name is too long (> 80 elements)!"
endif
if(.not.just_after_run)then
- stop'subroutine run_HiggsSignals should be called'//&
+ stop 'subroutine run_HiggsSignals should be called'//&
' before subroutine HiggsSignals_SLHA_output'
endif
open(unit=file_id_common,file=trim(adjustl(infile_80)),status='new',iostat=ios)
if(ios.ne.0) then
write(*,*) 'Problem creating the SLHA file: $'//trim(adjustl(infile))//'$'
write(*,*) 'This file may already exist. SLHA output writing is skipped.'
else
close(file_id_common)
newSLHAfile=.True.
call HiggsSignals_outputSLHAdata(infile_80)
newSLHAfile=.False.
endif
end subroutine HiggsSignals_create_SLHA_output
!************************************************************
subroutine HiggsSignals_outputSLHAdata(infile)
!************************************************************
use usefulbits, only : whichanalyses,file_id_common
use extra_bits_for_SLHA, only : h
use usefulbits_hs, only : HSvers, HSres, runmode, pdf, analyses, Exptdir, SLHAdetailed,&
& newSLHAfile
use SLHA_manip ! n.b.: needed for readSLHAfile, writeSLHAfile_except, finishwithSLHA
implicit none
!--------------------------------------input
character(len=80),intent(in) :: infile
!-----------------------------------internal
integer :: i,j,ios,a
integer :: k_out, Nh
character(LEN=200):: descrip, formatstring
!-------------------------------------------
open(file_id_common,file=trim(adjustl(infile)),status='old',iostat=ios)
if(ios.ne.0)then
write(*,*)'problem opening the SLHA file: $'//trim(adjustl(infile))//'$'
else
k_out=file_id_common
if(.not.newSLHAfile) then
call readSLHAfile(file_id_common,.True.)
rewind(file_id_common)
call writeSLHAfile_except(k_out,'HiggsSignalsResults','HiggsSignalsPeakObservables',&
& 'HiggsSignalsMassCenteredObservables')
endif
write(k_out,'(a)')'BLOCK HiggsSignalsResults'
write(k_out,'(3X,I2,17X,A2,A,A2,15X,A)') 0,'||',trim(adjustl(HSvers)),'||', &
& '# HiggsSignals version'
write(k_out,'(3X,I2,9X,A2,A,A2,15X,A)')1,'||',trim(adjustl(Exptdir)),'||', &
& '# experimental data set'
select case(runmode)
case('peak')
write(k_out,'(3X,I2,25X,I1,15X,A)') 2,1, &
& '# Chi-squared method ("peak"(1) or "mass"(2)-centered or "both"(3))'
case('mass')
write(k_out,'(3X,I2,25X,I1,15X,A)') 2,2, &
& '# Chi-squared method ("peak"(1) or "mass"(2)-centered or "both"(3))'
case('both')
write(k_out,'(3X,I2,25X,I1,15X,A)') 2,3, &
& '# Chi-squared method ("peak"(1) or "mass"(2)-centered or "both"(3))'
end select
write(k_out,'(3X,I2,11X,I15,15X,A)') 3,pdf, &
& '# Parametrization of Higgs mass uncertainty (1:box, 2:gaussian, 3:box+gaussian)'
write(k_out,'(3X,I2,11X,I15,15X,A)') 4,HSres(1)%nobs_peak_mu, &
& '# Number of signal strength peak observables'
write(k_out,'(3X,I2,11X,I15,15X,A)') 5,HSres(1)%nobs_STXS_rates, &
& '# Number of simplified template cross section (STXS) signal rate observables'
write(k_out,'(3X,I2,11X,I15,15X,A)') 6,HSres(1)%nobs_LHCRun1_mu, &
& '# Number of LHC Run-1 signal rate observables'
write(k_out,'(3X,I2,11X,I15,15X,A)') 7,HSres(1)%nobs_peak_mh + &
& HSres(1)%nobs_LHCRun1_mh + HSres(1)%nobs_STXS_mh, &
& '# Number of Higgs mass observables'
! write(k_out,'(3X,I2,11X,I15,15X,A)') 7,HSres(1)%nobs_mpred, &
! & '# Number of mass-centered observables'
write(k_out,'(3X,I2,11X,I15,15X,A)') 8,HSres(1)%nobs, &
& '# Number of observables (total)'
write(k_out,'(3X,I2,11X,F15.8,15X,A)') 9,HSres(1)%Chisq_peak_mu, &
& '# chi^2 (signal strength) from peak observables'
write(k_out,'(3X,I2,11X,F15.8,15X,A)') 10,HSres(1)%Chisq_STXS_rates, &
& '# chi^2 (signal strength) from STXS observables'
write(k_out,'(3X,I2,11X,F15.8,15X,A)') 11,HSres(1)%Chisq_LHCRun1_mu, &
& '# chi^2 (signal strength) from LHC Run-1 observables'
write(k_out,'(3X,I2,11X,F15.8,15X,A)') 12,HSres(1)%Chisq_peak_mh, &
& '# chi^2 (Higgs mass) from peak observables'
write(k_out,'(3X,I2,11X,F15.8,15X,A)') 13,HSres(1)%Chisq_STXS_mh, &
& '# chi^2 (Higgs mass) from STXS observables'
write(k_out,'(3X,I2,11X,F15.8,15X,A)') 14,HSres(1)%Chisq_LHCRun1_mh, &
& '# chi^2 (Higgs mass) from LHC Run-1 observables'
! write(k_out,'(3X,I2,11X,F15.8,15X,A)') 10,HSres(1)%Chisq_mpred, &
! & '# chi^2 from mass-centered observables'
write(k_out,'(3X,I2,11X,F15.8,15X,A)') 15,HSres(1)%Chisq_mu, &
& '# chi^2 (signal strength) (total)'
write(k_out,'(3X,I2,11X,F15.8,15X,A)') 16,HSres(1)%Chisq_mh, &
& '# chi^2 (Higgs mass) (total)'
write(k_out,'(3X,I2,11X,F15.8,15X,A)') 17,HSres(1)%Chisq, '# chi^2 (total)'
write(k_out,'(3X,I2,11X,F15.8,15X,A)') 18,HSres(1)%Pvalue_peak, &
& '# Probability for peak observables'
write(k_out,'(3X,I2,11X,F15.8,15X,A)') 19,HSres(1)%Pvalue_LHCRun1, &
& '# Probability for LHC-Run1 observables'
write(k_out,'(3X,I2,11X,F15.8,15X,A)') 20,HSres(1)%Pvalue_STXS, &
& '# Probability for STXS observables'
write(k_out,'(3X,I2,11X,F15.8,15X,A)') 21,HSres(1)%Pvalue, &
& '# Probability (total chi^2, total number observables)'
if(SLHAdetailed) then
select case(runmode)
case('peak')
call writeSLHAblock_HiggsSignalsPeakObservables(k_out)
case('mass')
call writeSLHAblock_HiggsSignalsMassCenteredObservables(k_out)
case('both')
call writeSLHAblock_HiggsSignalsPeakObservables(k_out)
call writeSLHAblock_HiggsSignalsMassCenteredObservables(k_out)
case default
end select
endif
SLHAdetailed=.True.
close(file_id_common)
if(k_out.ne.file_id_common)close(k_out)
if(.not.newSLHAfile) then
call finishwithSLHA
endif
endif
end subroutine HiggsSignals_outputSLHAdata
!--------------------------------------------------------------------
subroutine writeSLHAblock_HiggsSignalsPeakObservables(k_out)
use usefulbits_hs, only : analyses, StrCompress
use extra_bits_for_SLHA, only : h
implicit none
integer, intent(in) :: k_out
integer :: i,j,a, Nh
character(LEN=200):: formatstring
write(k_out,'(a)')'BLOCK HiggsSignalsPeakObservables'
write(k_out,'(A6,3X,A4,25X,A5,3X,A)')'# OBS','FLAG','VALUE','# DESCRIPTION'
a=0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do j=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
a=a+1
Nh = size(analyses(i)%peaks(j)%Higgs_comb)
write(k_out,'(3X,I3,4X,I2,1X,I30,3X,A)')a,1,analyses(i)%table%id,'# Analysis ID'
write(k_out,'(3X,I3,4X,I2,5X,A2,A,A2,8X,A)')a,2,'||',trim(analyses(i)%table%label), &
& '||','# Reference to publication'
write(k_out,'(3X,I3,4X,I2,5X,A2,A,A2,6X,A)')a,3,'||', &
& trim(strcompress(analyses(i)%table%desc)),'||','# Description (Search channel)'
write(k_out,'(3X,I3,4X,I2,23X,F8.2,3X,A)')a,4,analyses(i)%table%energy, &
& '# Center-of-mass energy'
write(k_out,'(3X,I3,4X,I2,23X,F8.2,3X,A)')a,5,analyses(i)%table%lumi, &
& '# Luminosity'
write(k_out,'(3X,I3,4X,I2,23X,F8.2,3X,A)')a,6,analyses(i)%table%dlumi*100.0D0, &
& '# Luminosity uncertainty (in %)'
write(k_out,'(3X,I3,4X,I2,23X,F8.2,3X,A)')a,7,analyses(i)%table%deltam, &
& '# Mass resolution (GeV)'
write(k_out,'(3X,I3,4X,I2,23X,F8.2,3X,A)')a,8,analyses(i)%peaks(j)%mpeak, &
& '# Mass value at peak position (in GeV)'
write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,9,analyses(i)%peaks(j)%mu, &
& '# Observed signal strength modifier (mu)'
write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,10,analyses(i)%peaks(j)%dmulow, &
& '# Lower 68%C.L. uncertainty on observed mu'
write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,11,analyses(i)%peaks(j)%dmuup, &
& '# Upper 68%C.L. uncertainty on observed mu'
! write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,12,analyses(i)%peaks(j)%dmulow0sq, &
!& '# Intrinsic squared lower 68%C.L. cyan band value on observed mu (corrected by HS)'
! write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,13,analyses(i)%peaks(j)%dmuup0sq, &
!& '# Intrinsic squared upper 68%C.L. cyan band value on observed mu (corrected by HS)'
! write(formatstring,'(A13,I2,A2,I2,A8)') '(3X,I3,4X,I2,',31-1*Nh,'X,',Nh,'I1,3X,A)'
! write(k_out,formatstring) a,12,analyses(i)%peaks(j)%Higgs_comb, &
!& '# Higgs combination (= indices of Higgs bosons which have been used)'
write(formatstring,'(A13,I2,A3,I1,A1,I1,A6)') &
& '(3X,I3,4X,I2,',31-1*Nh,'X,I',Nh,'.',Nh,',3X,A)'
write(k_out,formatstring) a,12, &
& convert_Higgscomb_to_bin(analyses(i)%peaks(j)%Higgs_comb), &
& '# Assigned Higgs combination'
!-------TODO: List the pdg numbers here of these combinations!
write(k_out,'(3X,I3,4X,I2,23X,I8,3X,A)')a,13,analyses(i)%peaks(j)%domH,&
& '# Index of dominant Higgs boson'
if(analyses(i)%peaks(j)%domH.eq.0) then
write(k_out,'(3X,I3,4X,I2,23X,A8,3X,A)')a,14,'NaN', &
& '# pdg number of dominant Higgs boson'
write(k_out,'(3X,I3,4X,I2,23X,A8,3X,A)')a,15,'NaN', &
& '# Mass of the dominant Higgs boson'
write(k_out,'(3X,I3,4X,I2,23X,A8,3X,A)')a,16,'NaN', &
& '# Signal strength modifier of the dominant Higgs boson'
else
write(k_out,'(3X,I3,4X,I2,23X,I8,3X,A)')a,14,h(analyses(i)%peaks(j)%domH), &
& '# pdg number of dominant Higgs boson'
write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,15, &
& analyses(i)%peaks(j)%Higgses(analyses(i)%peaks(j)%domH)%m, &
& '# Mass of dominant Higgs boson'
write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,16, &
& analyses(i)%peaks(j)%Higgses(analyses(i)%peaks(j)%domH)%mu, &
& '# Signal strength modifier of dominant Higgs boson'
endif
write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,17,analyses(i)%peaks(j)%total_mu,&
& '# Total predicted signal strength modifier mu'
write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,18,analyses(i)%peaks(j)%chisq_mu,&
& '# Chi-squared value (mu-part)'
write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,19,analyses(i)%peaks(j)%chisq_mh,&
& '# Chi-squared value (mh-part)'
write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,20,analyses(i)%peaks(j)%chisq_tot,&
& '# Chi-squared value (total)'
write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,21,analyses(i)%peaks(j)%chisq_max,&
& '# Chi-squared value for no predicted signal (mu=0)'
enddo
enddo
end subroutine writeSLHAblock_HiggsSignalsPeakObservables
!--------------------------------------------------------------------
subroutine writeSLHAblock_HiggsSignalsMassCenteredObservables(k_out)
!--------------------------------------------------------------------
use usefulbits_hs, only : analyses, StrCompress
use usefulbits, only : np, Hneut
! use extra_bits_for_SLHA, only : h
implicit none
integer, intent(in) :: k_out
integer :: i,j,a, Nh
character(LEN=200):: formatstring
Nh = np(Hneut)
write(k_out,'(a)')'BLOCK HiggsSignalsMassCenteredObservables'
write(k_out,'(A6,3X,A4,25X,A5,3X,A)')'# OBS','FLAG','VALUE','# DESCRIPTION'
a=0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do j=lbound(analyses(i)%mpred%mp_Higgses,dim=1), &
& ubound(analyses(i)%mpred%mp_Higgses,dim=1)
a=a+1
write(k_out,'(3X,I3,4X,I2,1X,I30,3X,A)')a,1,analyses(i)%table%id,'# Analysis ID'
write(k_out,'(3X,I3,4X,I2,5X,A2,A,A2,8X,A)')a,2,'||',trim(analyses(i)%table%label), &
& '||','# Reference to publication'
write(k_out,'(3X,I3,4X,I2,5X,A2,A,A2,6X,A)')a,3,'||', &
& trim(strcompress(analyses(i)%table%desc)),'||','# Description (Search channel)'
write(k_out,'(3X,I3,4X,I2,23X,F8.2,3X,A)')a,4,analyses(i)%table%energy, &
& '# Center-of-mass energy'
write(k_out,'(3X,I3,4X,I2,23X,F8.2,3X,A)')a,5,analyses(i)%table%lumi, &
& '# Luminosity'
write(k_out,'(3X,I3,4X,I2,23X,F8.2,3X,A)')a,6,analyses(i)%table%dlumi*100.0D0, &
& '# Luminosity uncertainty (in %)'
write(k_out,'(3X,I3,4X,I2,23X,F8.2,3X,A)')a,7,analyses(i)%table%deltam, &
& '# Mass resolution (GeV)'
write(k_out,'(3X,I3,4X,I2,23X,F8.2,3X,A)')a,8,analyses(i)%mpred%mp_Higgses(j)%m, &
'# Mass of tested Higgs boson (GeV)'
write(k_out,'(3X,I3,4X,I2,23X,F8.2,3X,A)')a,9,analyses(i)%mpred%mp_Higgses(j)%dm, &
& '# Mass uncertainty of tested Higgs boson (GeV)'
write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,10,analyses(i)%mpred%mp_Higgses(j)%mu, &
& '# Signal strength of tested Higgs boson'
write(k_out,'(3X,I3,4X,I2,23X,I8,3X,A)')a,11, &
& size(analyses(i)%mpred%mp_Higgses(j)%Higgses,dim=1), &
& '# Number of combined Higgs bosons'
write(formatstring,'(A13,I2,A3,I1,A1,I1,A6)') &
& '(3X,I3,4X,I2,',31-1*Nh,'X,I',Nh,'.',Nh,',3X,A)'
write(k_out,formatstring) a,12, &
& convert_Higgscombint_to_bin(analyses(i)%mpred%mp_Higgses(j)%Higgscomb), &
& '# Combined Higgs boson code'
write(k_out,'(3X,I3,4X,I2,23X,F8.2,3X,A)')a,13, &
& analyses(i)%mpred%mp_Higgses(j)%m_obs,'# Observed mass value (GeV)'
write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,14, &
& analyses(i)%mpred%mp_Higgses(j)%mu_obs, &
& '# Observed signal strength (from experiment)'
write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,15, &
& analyses(i)%mpred%mp_Higgses(j)%dmu_low_obs, &
& '# Lower 68%C.L. uncertainty of observed signal strength'
write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,16, &
& analyses(i)%mpred%mp_Higgses(j)%dmu_up_obs, &
& '# Upper 68%C.L. uncertainty of observed signal strength'
! write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,16, &
!& analyses(i)%mpred%mp_Higgses(j)%dmu_low0_obs, &
!& '# Intrinsic lower 68%C.L. cyan band value of observed mu (corrected by HS)'
! write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,17, &
!& analyses(i)%mpred%mp_Higgses(j)%dmu_up0_obs, &
!& '# Intrinsic upper 68%C.L. cyan band value of observed mu (corrected by HS)'
write(k_out,'(3X,I3,4X,I2,23X,F8.4,3X,A)')a,17,analyses(i)%mpred%mp_Higgses(j)%chisq,&
& '# Chi-squared value'
enddo
enddo
end subroutine writeSLHAblock_HiggsSignalsMassCenteredObservables
!--------------------------------------------------------------------
function convert_Higgscomb_to_bin(Higgscomb)
!--------------------------------------------------------------------
implicit none
integer, dimension(:), intent(in) :: Higgscomb
integer :: convert_Higgscomb_to_bin
integer :: i, j
integer :: decnum
decnum=0
do i=lbound(Higgscomb,dim=1),ubound(Higgscomb,dim=1)
if(Higgscomb(i).eq.0) decnum=decnum+0
if(Higgscomb(i).eq.1) decnum=decnum+1
if(Higgscomb(i).eq.2) decnum=decnum+2
if(Higgscomb(i).eq.3) decnum=decnum+4
if(Higgscomb(i).eq.4) decnum=decnum+8
if(Higgscomb(i).eq.5) decnum=decnum+16
if(Higgscomb(i).eq.6) decnum=decnum+32
if(Higgscomb(i).eq.7) decnum=decnum+64
if(Higgscomb(i).eq.8) decnum=decnum+128
if(Higgscomb(i).eq.9) decnum=decnum+256
enddo
convert_Higgscomb_to_bin = convert_dec_to_bin(decnum)
end function convert_Higgscomb_to_bin
!--------------------------------------------------------------------
function convert_Higgscombint_to_bin(Higgscomb)
!--------------------------------------------------------------------
implicit none
integer, intent(in) :: Higgscomb
integer :: convert_Higgscombint_to_bin
integer :: i, j
integer :: decnum, Higgscombtmp
Higgscombtmp = Higgscomb
decnum=0
do while(Higgscombtmp > 0)
i=MOD(Higgscombtmp,10)
if(i.eq.0) decnum=decnum+0
if(i.eq.1) decnum=decnum+1
if(i.eq.2) decnum=decnum+2
if(i.eq.3) decnum=decnum+4
if(i.eq.4) decnum=decnum+8
if(i.eq.5) decnum=decnum+16
if(i.eq.6) decnum=decnum+32
if(i.eq.7) decnum=decnum+64
if(i.eq.8) decnum=decnum+128
if(i.eq.9) decnum=decnum+256
Higgscombtmp=(Higgscombtmp-i)/10
enddo
convert_Higgscombint_to_bin = convert_dec_to_bin(decnum)
end function convert_Higgscombint_to_bin
!------------------------------------------------------------
subroutine read_matrix_from_file(length, filename, m, status)
!------------------------------------------------------------
use usefulbits, only : file_id_common3
implicit none
! use store_pathname_hs, only : pathname_HS
! use usefulbits_hs, only : delta_rate
integer, intent(in) :: length
character(LEN=*), intent(in) :: filename
double precision, dimension(:,:), intent(inout) :: m
logical, intent(out) :: status
integer :: n, ios
double precision, dimension(length) :: dblline
status=.False.
if((size(m,dim=1).ne.length).or.(size(m,dim=2).ne.length)) then
write(*,*) 'Problem in subroutine read_matrix_from_file!'
else
open(file_id_common3, file=filename,form='formatted')
n=0
do
read(file_id_common3,*, iostat=ios) dblline
if(ios.ne.0) exit
n=n+1
m(n,:)=dblline(:)
enddo
if(n.ne.length) then
write(*,*) 'Problem with reading in the matrix from ',filename
else
status=.True.
endif
endif
close(file_id_common3)
end subroutine read_matrix_from_file
!--------------------------------------------------------------------
function convert_dec_to_bin(dec)
!--------------------------------------------------------------------
! implicit none
integer, intent(in) :: dec
integer :: convert_dec_to_bin
integer :: bineq
integer :: power
integer :: temp
bineq = 0
power = 0
temp = dec
do while(temp > 0)
bineq = bineq + (MOD(temp, 2) * (MOD(temp, 2) * (10 ** power)))
power = power + 1
temp = temp / 2
enddo
convert_dec_to_bin = bineq
end function convert_dec_to_bin
!--------------------------------------------------------------------
end module io
!--------------------------------------------------------------------
\ No newline at end of file
Index: trunk/HiggsSignals-2/example_programs/HBandHSwithSLHA.f90
===================================================================
--- trunk/HiggsSignals-2/example_programs/HBandHSwithSLHA.f90 (revision 593)
+++ trunk/HiggsSignals-2/example_programs/HBandHSwithSLHA.f90 (revision 594)
@@ -1,142 +1,142 @@
!******************************************************
! This example program is part of HiggsSignals (TS 05/03/2013).
!******************************************************
program HBandHSwithSLHA
!
! In this example we run both HiggsBounds and HiggsSignals simultaneously
! on SLHA file(s). NOTE: The feature of selecting different experimental
! data in HiggsBounds is not fully supported here. In particular, the onlyL
! option of HiggsBounds does not work (it will be turned into LandH).
! If you want to take into account only LEP limits in HiggsBounds, you have
! to run both programs separately, using e.g. the example programs
! HBwithSLHA and HSwithSLHA.
!
! The SLHA file(s) has to contain the two HiggsBounds SLHA
! input blocks
! HiggsBoundsInputHiggsCouplingsBosons
! HiggsBoundsInputHiggsCouplingsFermions
! (see HiggsBounds (version 3 or more) manual for more details)
!
! Run with
! ./HBandHSwithSLHA npoints
! where npoints is the number of parameter points you would like to
! look at and each parameter point has a corresponding SLHA file
! e.g. the corresponding SLHA for the 5th point should be found at
! .5
!
! Output
! The block HiggsSignalsResults will be added to each SLHA file.
!
!******************************************************
use io, only : HiggsSignals_SLHA_output, get_peakinfo_from_HSresults
implicit none
integer :: nH,nHplus,nobs_peak, nobs_STXS, nobs_LHCRun1,HBresult,chan,ncombined
double precision :: Pvalue_peak, Chisq_peak, Chisq_peak_mu, Chisq_peak_mh
double precision :: Pvalue_STXS, Chisq_STXS, Chisq_STXS_rates, Chisq_STXS_mh
double precision :: Pvalue_LHCRun1, Chisq_LHCRun1, Chisq_LHCRun1_mu, Chisq_LHCRun1_mh
double precision :: obsratio
double precision, allocatable :: dMh(:), dCS(:), dBR(:)
integer :: i,npoints
integer,parameter :: fileid=78, fileid2=79
character(len=8) :: istring
character(len=300) :: inputfilename,outputfilename
character(len=300) :: stem
character(LEN=300) :: temp, tmpstring
integer :: number_args, ios
nH=3
nHplus=1
allocate(dMh(nH))
!--n.b. have to set theoretical uncertainties on Higgs masses dMh (in GeV) for h,H,A:
dMh = (/ 2.0D0, 2.0D0, 0.0D0 /)
!-------------------------- preprocessing ------------------------------!
number_args = IARGC()
if( number_args .ne. 2)then
stop "Incorrect number of arguments given to HSwithSLHA"
endif
! Read arguments into text strings.
i=1
temp=""
call GETARG(i,temp)
read(temp,*) npoints
i=i+1
temp=""
call GETARG(i,temp)
stem = ""
stem = trim(temp)
!---------------------------- HiggsBounds and HiggsSignals ------------------------------!
!---- Initialize HiggsBounds and specify the dataset it should use ----!
call initialize_HiggsBounds(nH,nHplus,'LandH')
!---- Initialize HiggsSignals and pass the name of the experimental analysis folder ----!
call initialize_HiggsSignals(nH,nHplus,"LHC13")
!------------------------------ HiggsSignals options ------------------------------------!
!---- Set the output level (0: silent, 1: screen output, 2: even more output,...) ----!
call setup_output_level(0)
!---- Set the Higgs mass parametrization (1: box, 2:gaussian, 3:box+gaussian) ----!
call setup_pdf(2)
outputfilename=trim(adjustl(stem))//'-fromHBandHS'
open(fileid, file=trim(outputfilename))
do i=1,npoints
- if(i.gt.99999999)stop'need to increase the size of istring in HSwithSLHA'
+ if(i.gt.99999999)stop 'need to increase the size of istring in HSwithSLHA'
write(istring,'(I8)')i
inputfilename=trim(adjustl(stem))//'.'//trim(adjustl(istring))
!--Test if input file exists and is non-empty
open(fileid2, file=inputfilename, form='formatted')
read(fileid2,'(A)',iostat=ios) tmpstring
if(ios.eq.0) then
close(fileid2)
!---------------------- HiggsBounds and HiggsSignals run --------------------------------!
!---- Feed HiggsBounds/Signals with the the model input using HiggsBounds subroutine ----!
call HiggsBounds_input_SLHA(inputfilename)
!---- We want to use the mass variation treatment for the theoretical uncertainty ----!
! HiggsBounds. Thus we set the mass uncertainties here (neutral Higgses mass errors
! set to dMh, charged Higgs mass error set to 0.0D0)
call HiggsBounds_set_mass_uncertainties(dMh,0.0D0)
!---- First, run HiggsBounds ----!
call run_HiggsBounds(HBresult, chan, obsratio, ncombined)
!---- Now, we have to fill again the input for the HiggsSignals run ----!
call HiggsBounds_input_SLHA(inputfilename)
!---- Pass the Higgs mass uncertainty to HiggsSignals ----!
call HiggsSignals_neutral_input_MassUncertainty(dMh)
!---- Run HiggsSignals on peak observables (13 TeV) ----!
call run_HiggsSignals(1,Chisq_peak_mu,Chisq_peak_mh,Chisq_peak,nobs_peak,Pvalue_peak)
!---- Run HiggsSignals on STXS observables (13 TeV) ----!
call run_HiggsSignals_STXS(Chisq_STXS_rates,Chisq_STXS_mh,Chisq_STXS,nobs_STXS,Pvalue_STXS)
!---- Run HiggsSignals on LHC Run 1 observables (7/8 TeV) ----!
call run_HiggsSignals_LHC_Run1_combination(Chisq_LHCRun1_mu,Chisq_LHCRun1_mh,&
& Chisq_LHCRun1, nobs_LHCRun1, Pvalue_LHCRun1)
call complete_HS_results()
!----------------------------- HiggsSignals output --------------------------------------!
!---- Attach HiggsBounds SLHA output block to SLHA file ----!
call HiggsBounds_SLHA_output
!---- Attach HiggsSignals SLHA output blocks to SLHA file ----!
! integer argument gives level of details:
! 0 : writes only HiggsSignalsResults block
! else : writes all blocks
call HiggsSignals_SLHA_output(0)
!---- This will collect the main HiggsSignals results together into one file ----!
write(fileid,*)i,Chisq_peak_mu+Chisq_STXS_rates+Chisq_LHCRun1_mu,&
& Chisq_peak_mh+Chisq_STXS_mh+Chisq_LHCRun1_mh,&
& nobs_peak+nobs_STXS+nobs_LHCRun1,HBresult,chan,obsratio,ncombined
else
close(fileid2)
call system("rm -f "//inputfilename)
endif
enddo
close(fileid)
call finish_HiggsBounds
call finish_HiggsSignals
end program HBandHSwithSLHA
\ No newline at end of file
Index: trunk/HiggsSignals-2/example_programs/HSwithSLHA.f90
===================================================================
--- trunk/HiggsSignals-2/example_programs/HSwithSLHA.f90 (revision 593)
+++ trunk/HiggsSignals-2/example_programs/HSwithSLHA.f90 (revision 594)
@@ -1,191 +1,191 @@
!--------------------------------------------------------------------------------------
program HSwithSLHA
!--------------------------------------------------------------------------------------
! This example program is part of HiggsSignals (TS 29/01/2013).
!
! In this example we demonstrate how HiggsSignals can be run on SLHA files. The SLHA
! file has to contain the two HiggsBounds SLHA input blocks
! HiggsBoundsInputHiggsCouplingsBosons
! HiggsBoundsInputHiggsCouplingsFermions
! (see HiggsBounds (version 3 or more) manual for more details)
!
! Run with
! ./HSwithSLHA npoints
! where npoints is the number of parameter points you would like to
! look at and each parameter point has a corresponding SLHA file
! e.g. the corresponding SLHA for the 5th point should be found at
! .5
!
! Output:
! The HiggsSignals SLHA output blocks will be added to each SLHA file.
! The results are summarized in an additional file -fromHS
!
! We furthermore demonstrate how to get the signal rates directly from HiggsSignals
! after a successful run.
!--------------------------------------------------------------------------------------
use io, only : HiggsSignals_SLHA_output, get_peakinfo_from_HSresults
use pc_chisq, only : print_cov_mu_to_file, print_peaks_to_file
implicit none
integer :: nH,nHplus,nobs_peak, nobs_STXS, nobs_LHCRun1
double precision :: Pvalue_peak, Chisq_peak, Chisq_peak_mu, Chisq_peak_mh
double precision :: Pvalue_STXS, Chisq_STXS, Chisq_STXS_rates, Chisq_STXS_mh
double precision :: Pvalue_LHCRun1, Chisq_LHCRun1, Chisq_LHCRun1_mu, Chisq_LHCRun1_mh
double precision :: R_H_WW, R_H_ZZ, R_H_gaga, R_H_tautau, R_H_bb, R_VH_bb, &
& totalrate, ggf_rate, hgaga_rate, gghgg_rate
double precision, allocatable :: dMh(:), masses(:), dmasses(:)
integer :: i,npoints
integer,parameter :: fileid=78, fileid2=79
character(len=8) :: istring
character(len=300) :: inputfilename,outputfilename
character(len=300) :: stem
character(LEN=300) :: temp, tmpstring
integer :: number_args, ios
!--------------------------------------------------------------------------------------
nH=3
nHplus=1
allocate(dMh(nH),masses(nH),dmasses(nH))
! These are default values. In SLHA mode, these values are read in from the Block "DMASS".
dMh = (/ 2.0D0, 2.0D0, 0.0D0 /)
!----------------------------------- preprocessing --------------------------------------!
number_args = IARGC()
if( number_args .ne. 2)then
stop "Incorrect number of arguments given to HSwithSLHA"
endif
! Read arguments into text strings.
i=1
temp=""
call GETARG(i,temp)
read(temp,*) npoints
i=i+1
temp=""
call GETARG(i,temp)
stem = ""
stem = trim(temp)
!------------------------------ HiggsSignals options ------------------------------------!
!---- Initialize HiggsSignals and pass the name of the experimental analysis folder ----!
call initialize_HiggsSignals(nH,nHplus,"LHC13")
!---- Set the output level (0: silent, 1: screen output, 2: even more output,...) ----!
call setup_output_level(1)
!---- Set the Higgs mass parametrization (1: box, 2:gaussian, 3:box+gaussian) ----!
call setup_pdf(2)
!---- Set number of free model parameters (used for p-value calculation only) ----!
call setup_nparam(0)
!---- Set the assignment range for the peak-centered method (optional) ----!
! call setup_assignmentrange_massobservables(2.0D0)
!---- If the mass-centered chi^2 method is used, can specify the dm_theory treatment ----!
! 1: mass variation, 2: smearing of mu-plot with mass pdf
! call setup_mcmethod_dm_theory(1)
!---- Use symmetric rate errors? (0: original(default), 1: averaged-symmetrical) ----!
! call setup_symmetricerrors(0)
!---- Are SM rate uncertainties included in signal strength measurements? ----!
! (0: no, 1: yes(default) )
! call setup_thu_observables(1)
!---- Allow anti-correlated signal strength measurements? (0: no, 1: yes(default) ) ----!
! call setup_anticorrelations_in_mu(1)
!----
outputfilename=trim(adjustl(stem))//'-fromHS'
open(fileid, file=trim(outputfilename))
do i=1,npoints
- if(i.gt.99999999)stop'need to increase the size of istring in HSwithSLHA'
+ if(i.gt.99999999)stop 'need to increase the size of istring in HSwithSLHA'
write(istring,'(I8)')i
inputfilename=trim(adjustl(stem))//'.'//trim(adjustl(istring))
!--Test if input file exists and is non-empty
open(fileid2, file=inputfilename, form='formatted')
read(fileid2,'(A)',iostat=ios) tmpstring
if(ios.eq.0) then
close(fileid2)
!-------------------------------- HiggsSignals run --------------------------------------!
!---- Feed HiggsSignals with the the model input using HiggsBounds subroutine ----!
call HiggsBounds_input_SLHA(inputfilename)
!---- Checking the Higgs mass uncertainty ----!
! The theoretical Higgs mass uncertainties are read in from the SLHA Block "DMASS"
! in the call of the subroutine HiggsBounds_input_SLHA. If the block "DMASS" is absent,
! they are set to zero. If the user wants to change the values obtained from the SLHA
! file, he/she can call the subroutine
! HiggsSignals_neutral_input_MassUncertainty
! AFTER reading in the SLHA file.
! Here, we only print out the values which have been stored already in
! HiggsBounds/HiggsSignals. If their sum is <= zero, the Block DMASS was probably absent
! and we set the default values as specified above.
!
call get_neutral_Higgs_masses(masses, dmasses)
write(*,*) "Neutral Higgs boson mass spectrum (from SLHA): "
write(*,'(2X,A,F8.2,A,F4.2)') "mass(h0) = ",masses(1)," +- ",dmasses(1)
write(*,'(2X,A,F8.2,A,F4.2)') "mass(H0) = ",masses(2)," +- ",dmasses(2)
write(*,'(2X,A,F8.2,A,F4.2)') "mass(A0) = ",masses(3)," +- ",dmasses(3)
if(sum(dmasses).le.0.0D0) then
write(*,*) "BLOCK DMASS not found, changing mass uncertainies to ", dMh
call HiggsSignals_neutral_input_MassUncertainty(dMh)
endif
!---- Run HiggsSignals on peak observables (13 TeV)
call run_HiggsSignals(1,Chisq_peak_mu,Chisq_peak_mh,Chisq_peak,nobs_peak,Pvalue_peak)
!---- Run HiggsSignals on STXS observables (13 TeV)
call run_HiggsSignals_STXS(Chisq_STXS_rates,Chisq_STXS_mh,Chisq_STXS,nobs_STXS,Pvalue_STXS)
!---- Run HiggsSignals on LHC Run 1 observables (7/8 TeV)
call run_HiggsSignals_LHC_Run1_combination(Chisq_LHCRun1_mu,Chisq_LHCRun1_mh,&
& Chisq_LHCRun1, nobs_LHCRun1, Pvalue_LHCRun1)
call complete_HS_results()
!----------------------------- HiggsSignals output --------------------------------------!
!---- Attach HiggsSignals SLHA blocks to SLHA file ----!
! integer argument gives level of details:
! 0 : writes only HiggsSignalsResults block
! else : writes all blocks
call HiggsSignals_SLHA_output(0)
!---- Now, some examples of how to read out the signal rates. Note, that these subroutines
! have to be called after run_HiggsSignals
!
!---- Get signal-rate ratios (without efficiencies) for lightest Higgs boson and LHC13----!
call get_Rvalues(1, 4, R_H_WW, R_H_ZZ, R_H_gaga, R_H_tautau, R_H_bb, R_VH_bb)
!---- Get the total signal rate (without efficiencies) ----!
! call get_rates(1,3,25,(/11,12,13,14,15,21,22,23,24,25,31,32,33,34,35, &
! & 41,42,43,44,45,51,52,53,54,55/),totalrate)
call get_rates_str(1,4,25,(/"1.1","1.2","1.3","1.4","1.5","2.1","2.2","2.3","2.4","2.5",&
& "3.1","3.2","3.3","3.4","3.5","4.1","4.2","4.3","4.4","4.5","5.1","5.2","5.3","5.4",&
& "5.5"/),totalrate)
!---- Get the gluon gluon fusion rate (without efficiencies) ----!
! call get_rates(1,3,1,(/10/),ggf_rate)
call get_rates_str(1,4,1,(/"1.0"/),ggf_rate)
!---- Get the H -> gamma gamma rate (without efficiencies) ----!
! call get_rates(1,3,1,(/01/),hgaga_rate)
call get_rates_str(1,4,1,(/"0.1"/),hgaga_rate)
! NEW SINCE HiggsSignals-1.1.0: more decay modes accessible via get_rates:
! Decay mode ID (Final state): 6 (Zgamma), 7 (cc), 8 (mumu), 9 (gg)
!---- Get the gg->H->gg (without efficiencies) ----!
! call get_rates(1,3,1,(/19/),gghgg_rate)
call get_rates_str(1,4,1,(/"1.9"/),gghgg_rate)
write(*,'(A,F10.4)') "R_H_WW = ", R_H_WW
write(*,'(A,F10.4)') "R_H_ZZ = ", R_H_ZZ
write(*,'(A,F10.4)') "R_H_gaga = ", R_H_gaga
write(*,'(A,F10.4)') "R_H_tautau = ", R_H_tautau
write(*,'(A,F10.4)') "R_H_bb = ", R_H_bb
write(*,'(A,F10.4)') "R_VH_bb = ", R_VH_bb
write(*,'(A,F10.4)') "totalrate = ", totalrate
write(*,'(A,F10.4)') "ggf_rate = ", ggf_rate
write(*,'(A,F10.4)') "h->gaga = ", hgaga_rate
write(*,'(A,F10.4)') "gg->h->gg = ", gghgg_rate
!--This will collect the main HiggsSignals results together into one file
write(fileid,*) i,Chisq_peak_mu+Chisq_STXS_rates+Chisq_LHCRun1_mu,&
& Chisq_peak_mh+Chisq_STXS_mh+Chisq_LHCRun1_mh,&
& nobs_peak+nobs_STXS+nobs_LHCRun1
else
close(fileid2)
call system("rm -f "//inputfilename)
endif
enddo
close(fileid)
! call print_peaks_to_file
! call print_cov_mu_to_file
call finish_HiggsSignals
end program HSwithSLHA
\ No newline at end of file
Index: trunk/HiggsSignals-2/HiggsSignals_subroutines.F90
===================================================================
--- trunk/HiggsSignals-2/HiggsSignals_subroutines.F90 (revision 593)
+++ trunk/HiggsSignals-2/HiggsSignals_subroutines.F90 (revision 594)
@@ -1,2660 +1,2664 @@
!------------------------------------------------------------
! This file is part of HiggsSignals (TS 03/03/2013).
!------------------------------------------------------------
subroutine initialize_HiggsSignals_latestresults(nHiggsneut,nHiggsplus)
!------------------------------------------------------------
! Wrapper subroutine to intitialize HiggsSignals with the experimental
! dataset "latestresults", avoiding to specify this via a string argument.
!------------------------------------------------------------
implicit none
!--------------------------------------input
integer,intent(in) :: nHiggsneut
integer,intent(in) :: nHiggsplus
character(LEN=13) :: Expt_string
Expt_string = "latestresults"
call initialize_HiggsSignals(nHiggsneut,nHiggsplus,Expt_string)
end subroutine initialize_HiggsSignals_latestresults
!------------------------------------------------------------
subroutine initialize_HiggsSignals_LHC13(nHiggsneut,nHiggsplus)
!------------------------------------------------------------
! Wrapper subroutine to intitialize HiggsSignals with the experimental
! dataset "latestresults", avoiding to specify this via a string argument.
!------------------------------------------------------------
implicit none
!--------------------------------------input
integer,intent(in) :: nHiggsneut
integer,intent(in) :: nHiggsplus
character(LEN=13) :: Expt_string
Expt_string = "LHC13"
call initialize_HiggsSignals(nHiggsneut,nHiggsplus,Expt_string)
end subroutine initialize_HiggsSignals_LHC13
!------------------------------------------------------------
subroutine initialize_HiggsSignals_empty(nHiggsneut,nHiggsplus)
!------------------------------------------------------------
! Wrapper subroutine to intitialize HiggsSignals without dataset.
!------------------------------------------------------------
implicit none
!--------------------------------------input
integer,intent(in) :: nHiggsneut
integer,intent(in) :: nHiggsplus
character(LEN=13) :: Expt_string
Expt_string = "none"
call initialize_HiggsSignals(nHiggsneut,nHiggsplus,Expt_string)
end subroutine initialize_HiggsSignals_empty
!------------------------------------------------------------
subroutine initialize_HiggsSignals(nHiggsneut,nHiggsplus,Expt_string)
!------------------------------------------------------------
! This the first HiggsSignals subroutine that should be called
! by the user.
! It calls subroutines to read in the tables of Standard Model
! decay and production rates from HiggsBounds, sets up the
! experimental data from Tevatron and LHC, allocate arrays, etc.
! Arguments (input):
! * nHiggs = number of neutral Higgs in the model
! * nHiggsplus = number of singly, positively charged Higgs in the model
! * Expt_string = name of experimental dataset to be used
!------------------------------------------------------------
use usefulbits, only : np,Hneut,Hplus,Chineut,Chiplus,debug,inputmethod,&
& theo,whichanalyses,just_after_run,&
& file_id_debug1,file_id_debug2,allocate_if_stats_required
use usefulbits_HS, only : HiggsSignals_info, nanalys, eps, Exptdir, obs
use datatables, only: setup_observables, setup_LHC_Run1_combination
use STXS, only : load_STXS
use input, only : check_number_of_particles,check_whichanalyses
use io, only : setup_input_for_hs, setup_output_for_hs
use theory_BRfunctions, only : setup_BRSM, BRSM
use theory_XS_SM_functions, only : setup_XSSM, XSSM
#if defined(NAGf90Fortran)
use F90_UNIX_IO, only : flush
#endif
implicit none
!--------------------------------------input
integer,intent(in) :: nHiggsneut
integer,intent(in) :: nHiggsplus
character(LEN=*), intent(in) :: Expt_string
!-----------------------------------internal
integer :: i
logical :: exptdirpresent = .False.
!----------------------------------parameter
eps=5.0D0
np(Hneut)=nHiggsneut
np(Hplus)=nHiggsplus
if(Expt_string.ne.'none') then
Exptdir = Expt_string
exptdirpresent = .True.
endif
np(Chineut)=0! not considering bounds on neutralinos here
np(Chiplus)=0! not considering bounds on charginos here
debug=.False.
select case(whichanalyses)
case('onlyL')
whichanalyses='LandH'
case('onlyH','onlyP','list ','LandH')
case default
whichanalyses='onlyH'
end select
call HiggsSignals_info
if(inputmethod=='subrout') then
if(allocated(theo))then
if(debug) write(*,*) "HiggsBounds/HiggsSignals internal structure already initialized!"
else
if(debug)write(*,*)'doing other preliminary tasks...' ; call flush(6)
call setup_input_for_hs
! allocate(inputsub( 2 )) !(1)np(Hneut)>0 (2)np(Hplus)>0
! inputsub(1)%desc='HiggsBounds_neutral_input_*' ; inputsub(1)%req=req( 0, 1)
! inputsub(2)%desc='HiggsBounds_charged_input' ; inputsub(2)%req=req( 1, 0)
!
! do i=1,ubound(inputsub,dim=1)
! inputsub(i)%stat=0
! enddo
endif
endif
if(debug)write(*,*)'reading in Standard Model tables...' ; call flush(6)
if(.not.allocated(BRSM)) call setup_BRSM
if(.not.allocated(XSSM)) call setup_XSSM
call setup_uncertainties
if(debug)write(*,*)'reading in experimental data...' ; call flush(6)
if(exptdirpresent) call setup_observables
if(exptdirpresent) call load_STXS(Expt_string)
call setup_LHC_Run1_combination
if(debug)write(*,*)'sorting out processes to be checked...'; call flush(6)
nanalys = size(obs)
if(debug)write(*,*)'preparing output arrays...' ; call flush(6)
call setup_output_for_hs
if(debug)write(*,*)'HiggsSignals has been initialized...' ; call flush(6)
just_after_run=.False.
! contains
! | np
! |Hneu Hcha
! | ==0 ==0
! function req(Hneu,Hcha)
! integer, intent(in) ::Hneu,Hcha
! integer :: req
!
! req=1
! if(np(Hneut)==0) req= Hneu * req
! if(np(Hplus)==0) req= Hcha * req
!
! end function req
end subroutine initialize_HiggsSignals
!------------------------------------------------------------
subroutine HiggsSignals_neutral_input_MassUncertainty(dMh)
! Sets the theoretical mass uncertainty of the Higgs bosons.
!------------------------------------------------------------
use usefulbits, only: theo,np,Hneut
implicit none
double precision,intent(in) :: dMh(np(Hneut))
if(.not.allocated(theo))then
stop 'subroutine HiggsSignals_initialize must be called first'
endif
if(np(Hneut).eq.0)then
write(*,*)'subroutine HiggsSignal_neutral_input_MassUncertainty should'
write(*,*)'only be called if np(Hneut)>0'
stop 'error in subroutine HiggsSignal_neutral_input_MassUncertainty'
endif
theo(1)%particle(Hneut)%dM = dMh
end subroutine HiggsSignals_neutral_input_MassUncertainty
!------------------------------------------------------------
subroutine setup_uncertainties
!------------------------------------------------------------
use usefulbits, only : file_id_common3
use store_pathname_hs, only : pathname_HS
use usefulbits_hs, only : delta_rate
use io, only : read_matrix_from_file
logical :: BRmodel, BRSM, XSmodel, XSSM
call read_matrix_from_file(9,pathname_HS//"BRcov.in",delta_rate%BRcov, BRmodel)
call read_matrix_from_file(9,pathname_HS//"BRcovSM.in",delta_rate%BRcovSM, BRSM)
call read_matrix_from_file(11,pathname_HS//"XScov.in",delta_rate%CScov, XSmodel)
call read_matrix_from_file(11,pathname_HS//"XScovSM.in",delta_rate%CScovSM, XSSM)
call read_matrix_from_file(11,pathname_HS//"XScov_13TeV.in",delta_rate%CS13cov, XSmodel)
call read_matrix_from_file(11,pathname_HS//"XScovSM_13TeV.in",delta_rate%CS13covSM, XSSM)
if(BRmodel.and.BRSM) then
delta_rate%BRcov_ok=.True.
write(*,*) "Covariance matrix for relative branching ratio uncertainties read in successfully."
else
write(*,*) "Covariance matrix for relative branching ratio uncertainties not provided. Using default values."
endif
if(XSmodel.and.XSSM) then
delta_rate%CScov_ok=.True.
write(*,*) "Covariance matrix for relative cross section uncertainties read in successfully."
else
write(*,*) "Covariance matrix for relative cross section uncertainties not provided. Using default values."
endif
end subroutine setup_uncertainties
!------------------------------------------------------------
subroutine setup_rate_normalization(normalize_to_refmass, normalize_to_refmass_outside_dmtheo)
use usefulbits_hs, only : normalize_rates_to_reference_position,&
& normalize_rates_to_reference_position_outside_dmtheo
implicit none
logical, intent(in) :: normalize_to_refmass
logical, intent(in) :: normalize_to_refmass_outside_dmtheo
if(normalize_to_refmass) then
write(*,*) "Using SM rate prediction at observed mass for signal strength calculation."
else
write(*,*) "Using SM rate prediction at predicted mass for signal strength calculation."
endif
if(normalize_to_refmass_outside_dmtheo) then
write(*,*) "If predicted mass and observed mass do not agree within theory uncertainty:",&
& " SM rate prediction at observed mass is used for signal strength calculation."
else
write(*,*) "If predicted mass and observed mass do not agree within theory uncertainty:",&
& " SM rate prediction at predicted mass is used for signal strength calculation."
endif
normalize_rates_to_reference_position = normalize_to_refmass
normalize_rates_to_reference_position_outside_dmtheo = normalize_to_refmass_outside_dmtheo
end subroutine setup_rate_normalization
!------------------------------------------------------------
subroutine setup_model_rate_uncertainties(filename_XS, filename_XS13, filename_BR)
!------------------------------------------------------------
use usefulbits, only : file_id_common3
use store_pathname_hs, only : pathname_HS
use usefulbits_hs, only : delta_rate
use io, only : read_matrix_from_file
character(LEN=*),intent(in) :: filename_XS, filename_XS13, filename_BR
logical :: BRmodel, XSmodel
call read_matrix_from_file(9,filename_BR,delta_rate%BRcov, BRmodel)
call read_matrix_from_file(11,filename_XS,delta_rate%CScov, XSmodel)
call read_matrix_from_file(11,filename_XS13,delta_rate%CS13cov, XSmodel)
if(BRmodel.and.XSmodel) then
delta_rate%BRcov_ok=.True.
delta_rate%CScov_ok=.True.
write(*,*) "Covariance matrices for rate uncertainties read in successfully."
else
write(*,*) "Covariance matrix for rate uncertainties not provided. Using default values."
endif
end subroutine setup_model_rate_uncertainties
!------------------------------------------------------------
subroutine setup_rate_uncertainties( dCS, dBR )
!------------------------------------------------------------
! Sets (relative) systematic uncertainties of the model for:
! dCS(1) - singleH dBR(1) - gamma gamma
! dCS(2) - VBF dBR(2) - W W
! dCS(3) - HW dBR(3) - Z Z
! dCS(4) - HZ dBR(4) - tau tau
! dCS(5) - ttH dBR(5) - b bbar
!------------------------------------------------------------
use usefulbits_hs, only : delta_rate
implicit none
double precision, intent(in) :: dCS(5)
double precision, intent(in) :: dBR(5)
integer :: i
delta_rate%dCS = dCS
do i=lbound(dBR,dim=1),ubound(dBR,dim=1)
call setup_dbr(i,dBR(i))
enddo
end subroutine setup_rate_uncertainties
!------------------------------------------------------------
subroutine setup_dbr(BRid, value)
!------------------------------------------------------------
use usefulbits_hs, only : delta_rate
integer,intent(in) :: BRid
double precision, intent(in) :: value
if(BRid.gt.0.and.BRid.lt.10) then
delta_rate%dBR(BRid) = value
else
write(*,*) "Warning in setup_dbr: Unknown decay mode."
endif
end subroutine setup_dbr
!------------------------------------------------------------
subroutine setup_correlations(corr_mu, corr_mh)
!------------------------------------------------------------
! With this subroutine the user may switch off/on correlations
! (default=on) by setting corr = 0/1.
!------------------------------------------------------------
use usefulbits_hs, only : correlations_mu, correlations_mh
implicit none
integer, intent(in) :: corr_mu, corr_mh
if(corr_mu.eq.0) then
correlations_mu = .False.
write(*,*) 'Correlations in signal strength observables are switched off.'
elseif(corr_mu.eq.1) then
correlations_mu = .True.
else
stop 'Error: Correlations must be switched on/off by an integer value of 0 or 1.'
endif
if(corr_mh.eq.0) then
correlations_mh = .False.
write(*,*) 'Correlations in Higgs mass observables are switched off.'
elseif(corr_mh.eq.1) then
correlations_mh = .True.
else
stop 'Error: Correlations must be switched on/off by an integer value of 0 or 1.'
endif
end subroutine setup_correlations
!------------------------------------------------------------
subroutine setup_symmetricerrors(symm)
! Sets the measured rate uncertainties to either a symmetrical average
! of the upper and lower cyan band widths (symm==1) or else uses the
! original (asymmetrical) errors.
!------------------------------------------------------------
use usefulbits_hs, only : symmetricerrors
implicit none
integer, intent(in) :: symm
if(symm.eq.1) then
write(*,*) "Using averaged (symmetrical) experimental rate uncertainties."
symmetricerrors = .True.
else
write(*,*) "Using original (asymmetrical) experimental rate uncertainties."
symmetricerrors = .False.
endif
end subroutine setup_symmetricerrors
!------------------------------------------------------------
subroutine setup_absolute_errors(absol)
! Treats the measured rate uncertainties as either absolute
! uncertainties (1) or relative (0). By default, they are
! treated as relative uncertainties.
!------------------------------------------------------------
use usefulbits_hs, only : absolute_errors
implicit none
integer, intent(in) :: absol
if(absol.eq.1) then
write(*,*) "Using absolute experimental rate uncertainties."
absolute_errors = .True.
else
write(*,*) "Using relative experimental rate uncertainties."
absolute_errors = .False.
endif
end subroutine setup_absolute_errors
!------------------------------------------------------------
subroutine setup_correlated_rate_uncertainties(corr)
!------------------------------------------------------------
use usefulbits_hs, only : delta_rate
integer, intent(in) :: corr
if(corr.eq.0) then
delta_rate%usecov = .False.
write(*,*) "Deactivated correlated CS and BR uncertainties. Using approximated maximum error."
elseif(corr.eq.1) then
delta_rate%usecov = .True.
write(*,*) "Activated correlated CS and BR uncertainties. Using them if covariance matrices are present."
else
write(*,*) "Warning in subroutine setup_correlated_rate_uncertainties: Argument ",corr," is not equal to 0 or 1."
endif
end subroutine setup_correlated_rate_uncertainties
!------------------------------------------------------------
subroutine setup_SMweights(useweight)
! If set to 1 (true), HiggsSignals assumes the same signal decomposition
! (weights) as in the SM for the given model. This will enter the determination
! of the theoretical rate uncertainty.
!------------------------------------------------------------
use usefulbits_hs, only : useSMweights
implicit none
integer, intent(in) :: useweight
if(useweight.eq.1) then
write(*,*) "Using SM weights for theoretical rate uncertainties of the model."
useSMweights = .True.
else
write(*,*) "Using true model weights for theoretical rate uncertainties of the model."
useSMweights = .False.
endif
end subroutine setup_SMweights
!------------------------------------------------------------
subroutine setup_anticorrelations_in_mu(acorr)
! Allows for anti-correlations in the signal strength covariance
! matrix if there is a relative sign difference in two mu measurements
! (acorr==1) or else uses only correlations irrespective of the relative
! (acorr==0).
!------------------------------------------------------------
use usefulbits_hs, only : anticorrmu
implicit none
integer, intent(in) :: acorr
if(acorr.eq.1) then
write(*,*) "Allow anti-correlated signal strength measurements."
anticorrmu = .True.
else
write(*,*) "Prohibit anti-correlated signal strength measurements."
anticorrmu = .False.
endif
end subroutine setup_anticorrelations_in_mu
!------------------------------------------------------------
subroutine setup_anticorrelations_in_mh(acorr)
! Allows for anti-correlations in the mass covariance
! matrix if there is a relative sign difference in two mu measurements
! (acorr==1) or else uses only correlations irrespective of the relative
! (acorr==0).
!------------------------------------------------------------
use usefulbits_hs, only : anticorrmh
implicit none
integer, intent(in) :: acorr
if(acorr.eq.1) then
write(*,*) "Allow anti-correlated mass measurements."
anticorrmh = .True.
else
write(*,*) "Prohibit anti-correlated mass measurements."
anticorrmh = .False.
endif
end subroutine setup_anticorrelations_in_mh
!------------------------------------------------------------
subroutine setup_assignmentrange(range)
!------------------------------------------------------------
! This sets up the mass range (in standard deviations) in which
! the Higgs is forced to be assigned to the peak observables.
!------------------------------------------------------------
use usefulbits_hs, only : assignmentrange,assignmentrange_massobs, pdf
implicit none
double precision, intent(in) :: range
if(range.le.0.0D0) then
write(*,*) "Error: Bad assignment range ",range
write(*,*) "Keeping the value ",assignmentrange
else
assignmentrange = range
assignmentrange_massobs = range
endif
if(assignmentrange.ne.1.0D0.and.pdf.eq.1) then
write(*,*) "Note: For a box pdf, only 1s mass range is used to force the Higgs-to-peak assignment."
endif
end subroutine setup_assignmentrange
!------------------------------------------------------------
subroutine setup_assignmentrange_LHCrun1(range)
!------------------------------------------------------------
! This sets up the mass range (in standard deviations) in which
! the Higgs is forced to be assigned to the peak observables.
!------------------------------------------------------------
use usefulbits_hs, only : assignmentrange_LHCrun1, pdf
implicit none
double precision, intent(in) :: range
if(range.le.0.0D0) then
write(*,*) "Error: Bad assignment range ",range
write(*,*) "Keeping the value ",assignmentrange_LHCrun1
else
assignmentrange_LHCrun1 = range
endif
! if(assignmentrange_LHCrun1.ne.1.0D0.and.pdf.eq.1) then
! write(*,*) "Note: For a box pdf, only 1s mass range is used to force the Higgs-to-peak assignment."
! endif
end subroutine setup_assignmentrange_LHCrun1
!------------------------------------------------------------
subroutine setup_assignmentrange_massobservables(range)
!------------------------------------------------------------
! This sets up the mass range (in standard deviations) in which
! the Higgs is forced to be assigned to the peak observables.
!------------------------------------------------------------
use usefulbits_hs, only : assignmentrange_massobs, pdf
implicit none
double precision, intent(in) :: range
if(range.le.0.0D0) then
write(*,*) "Error: Bad assignment range ",range
write(*,*) "Keeping the value ",assignmentrange_massobs
else
assignmentrange_massobs = range
endif
if(assignmentrange_massobs.ne.1.0D0.and.pdf.eq.1) then
write(*,*) "Note: For a box pdf, only 1s mass range is used to force the Higgs-to-peak assignment."
endif
end subroutine setup_assignmentrange_massobservables
!------------------------------------------------------------
subroutine setup_assignmentrange_STXS(range)
!------------------------------------------------------------
! This sets up the mass range (in standard deviations) in which
! the Higgs is forced to be assigned to the peak observables.
!------------------------------------------------------------
use usefulbits_hs, only : assignmentrange_STXS
implicit none
double precision, intent(in) :: range
if(range.le.0.0D0) then
write(*,*) "Error: Bad assignment range ",range
write(*,*) "Keeping the value ",assignmentrange_STXS
else
assignmentrange_STXS = range
endif
end subroutine setup_assignmentrange_STXS
!------------------------------------------------------------
subroutine setup_nparam(Np)
!------------------------------------------------------------
use usefulbits_hs, only : Nparam
implicit none
integer, intent(in) :: Np
Nparam = Np
end subroutine setup_nparam
!------------------------------------------------------------
subroutine setup_Higgs_to_peaks_assignment_iterations(iter)
! Sets the number of iterations for the Higgs-to-peak-assignment.
!------------------------------------------------------------
use usefulbits_hs, only : iterations
implicit none
integer, intent(in) :: iter
iterations = iter
end subroutine setup_Higgs_to_peaks_assignment_iterations
!------------------------------------------------------------
subroutine setup_mcmethod_dm_theory(mode)
use mc_chisq, only : mc_mode
implicit none
integer, intent(in) :: mode
character(LEN=14) :: mode_desc(2) = (/'mass variation','convolution '/)
if(mode.eq.1.or.mode.eq.2) then
mc_mode = mode
write(*,'(1X,A,A)') 'The mass-centered chi^2 method will treat the Higgs',&
& ' boson mass theory uncertainty by '//trim(mode_desc(mode))//'.'
else
stop 'Error in subroutine setup_mcmethod_dm_theory: Unknown mode (1 or 2 possible)!'
endif
end subroutine setup_mcmethod_dm_theory
!------------------------------------------------------------
subroutine setup_sm_test(int_SMtest,epsilon)
! With this subroutine the user may switch off the SM likeness test
! (default=on) or change the maximal deviation epsilon (default=5.0D-2)
!------------------------------------------------------------
use usefulbits_hs, only : useSMtest, eps
implicit none
integer, intent(in) :: int_SMtest
double precision, intent(in) :: epsilon
if(int_SMtest.eq.0) then
useSMtest = .False.
write(*,*) 'SM likeness test has been switched off.'
elseif(int_SMtest.eq.1) then
useSMtest = .True.
write(*,*) 'SM likeness test has been switched on.'
else
stop 'Error: SM test must be switched on/off by an integer value of 0 or 1.'
endif
eps = epsilon
end subroutine setup_sm_test
!------------------------------------------------------------
subroutine setup_thu_observables(thuobs)
use usefulbits_hs, only : THU_included
integer, intent(in) :: thuobs
if(thuobs.eq.0) then
THU_included = .False.
write(*,*) 'Observables are assumed to NOT include theory errors.'
else
THU_included = .True.
write(*,*) 'Observables are assumed to include theory errors.'
endif
end subroutine setup_thu_observables
!------------------------------------------------------------
subroutine setup_output_level(level)
! Controls the level of information output:
! 0 : silent mode
! 1 : screen output for each analysis with its peak/mass-centered observables and
! their respective values predicted by the model
! 2 : screen output of detailed information on each analysis with its
! peak/mass-centered observables
! 3 : creates the files peak_information.txt and peak_massesandrates.txt
!------------------------------------------------------------
use usefulbits_hs, only : output_level, additional_output
implicit none
integer, intent(in) :: level
if(level.eq.0.or.level.eq.1.or.level.eq.2.or.level.eq.3) then
output_level = level
else
stop 'Error in subroutine setup_output_level: level not equal to 0,1,2 or 3.'
endif
if(level.eq.3) additional_output = .True.
end subroutine setup_output_level
!------------------------------------------------------------
subroutine setup_pdf(pdf_in)
! Sets the probability density function for the Higgs mass uncertainty parametrization:
! 1 : box-shaped pdf
! 2 : Gaussian pdf
! 3 : box-shaped theory error + Gaussian experimental pdf
!------------------------------------------------------------
use usefulbits_hs, only : pdf, assignmentrange
implicit none
integer, intent(in) :: pdf_in
character(LEN=13) :: pdf_desc(3) = (/'box ','Gaussian ','box+Gaussian'/)
pdf=pdf_in
if((pdf.eq.1).or.(pdf.eq.2).or.(pdf.eq.3)) then
write(*,'(1X,A,A,1I1,A)') 'Use a '//trim(pdf_desc(pdf))//' probability density function ',&
& 'for the Higgs mass(es) (pdf=',pdf,')'
endif
if(assignmentrange.ne.1.0D0.and.pdf.eq.1) then
write(*,*) "Note: For a box pdf, only 1s mass range is used to force the Higgs-to-peak assignment."
endif
end subroutine setup_pdf
!------------------------------------------------------------
!subroutine assign_toyvalues_to_observables(ii, peakindex, npeaks, mu_obs, mh_obs)
!! Assigns toy values to the peak's mass and mu value for analysis ii.
!! ii :: analysis number (entry in mutables)
!! peakindex :: index of the peak of analysis ii
!! npeaks :: number of peaks found in analysis ii
!! mu_obs :: toy value for mu to be given to the peak with peakindex
!! mh_obs :: toy value for mh to be given to the peak with peakindex
!------------------------------------------------------------
! use usefulbits_hs, only: obs, usetoys
!
! integer, intent(in) :: ii, peakindex, npeaks
! double precision, intent(in) :: mh_obs, mu_obs
!
! if(peakindex.gt.npeaks) then
! stop 'Error in subroutine assign_toyvalues_to_observables: Observable does not exist!'
! endif
!
! obs(ii)%table%npeaks = npeaks
! if(.not.allocated(obs(ii)%table%Toys_muobs)) allocate(obs(ii)%table%Toys_muobs(npeaks))
! if(.not.allocated(obs(ii)%table%Toys_mhobs)) allocate(obs(ii)%table%Toys_mhobs(npeaks))
!
! obs(ii)%table%Toys_muobs(peakindex) = mu_obs
! obs(ii)%table%Toys_mhobs(peakindex) = mh_obs
!
! usetoys = .True.
!
!end subroutine assign_toyvalues_to_observables
!------------------------------------------------------------
subroutine assign_toyvalues_to_peak(ID, mu_obs, mh_obs)
! Assigns toy values to the peak's mass and mu value to a peak observable.
! ID :: observable ID
! mu_obs :: toy value for mu to be given to the peak
! mh_obs :: toy value for mh to be given to the peak
!
! n.B.: Do we also want to set mu uncertainties here?
!------------------------------------------------------------
use usefulbits_hs, only: obs, usetoys
implicit none
integer, intent(in) :: ID
double precision, intent(in) :: mh_obs, mu_obs
integer :: pos, ii
pos = -1
do ii=lbound(obs,dim=1),ubound(obs,dim=1)
if(obs(ii)%id.eq.ID) then
pos = ii
exit
endif
enddo
if(pos.ne.-1) then
obs(pos)%peak%mpeak = mh_obs
obs(pos)%peak%mu = mu_obs
usetoys = .True.
else
write(*,*) "WARNING in assign_toyvalues_to_peak: ID unknown."
endif
end subroutine assign_toyvalues_to_peak
!------------------------------------------------------------
subroutine assign_modelefficiencies_to_peak(ID, Nc, eff_ratios)
! Assigns to each channel of the observable the efficiency in the model
! w.r.t the SM efficiency (as a ratio!)
!
! ID :: observable ID
! Nc :: number of channels
! eff_ratios :: array of length (Number of channels) giving the efficiency ratios
!
! Note: You can first employ the subroutine get_peak_channels (io module) to obtain
! the relevant channel information of the observable.
!------------------------------------------------------------
use usefulbits_hs, only: obs
implicit none
integer, intent(in) :: ID, Nc
double precision, dimension(Nc), intent(in) :: eff_ratios
integer :: pos, ii
pos = -1
do ii=lbound(obs,dim=1),ubound(obs,dim=1)
if(obs(ii)%id.eq.ID) then
pos = ii
exit
endif
enddo
if(pos.ne.-1) then
if(size(eff_ratios,dim=1).ne.obs(pos)%table%Nc) then
write(*,*) "WARNING in assign modelefficiencies_to_peak: Number of channels (",&
& size(eff_ratios,dim=1),"!=",obs(pos)%table%Nc,"does not match for observable ID = ",ID
else
obs(pos)%table%channel_eff_ratios = eff_ratios
endif
else
write(*,*) "WARNING in assign_modelefficiencies_to_peak: ID unknown."
endif
end subroutine assign_modelefficiencies_to_peak
!------------------------------------------------------------
subroutine assign_rate_uncertainty_scalefactor_to_peak(ID, scale_mu)
! Assigns a rate uncertainty scalefactor to the peak specified by ID.
! This scalefactor will only scale the experimental rate uncertainties.
! The theory rate uncertainties must be given manually via setup_rate_uncertainties.
!
! ID :: observable ID of the peak observable
! scale_mu :: scale_mu by which the mu uncertainty is scaled
!------------------------------------------------------------
use usefulbits_hs, only: obs, usescalefactor
implicit none
integer, intent(in) :: ID
double precision, intent(in) :: scale_mu
integer :: pos, ii
pos = -1
do ii=lbound(obs,dim=1),ubound(obs,dim=1)
if(obs(ii)%id.eq.ID) then
pos = ii
exit
endif
enddo
if(pos.ne.-1) then
obs(pos)%peak%scale_mu = scale_mu
else
write(*,*) "WARNING in assign_uncertainty_scalefactors_to_peak: ID unknown."
endif
usescalefactor = .True.
end subroutine assign_rate_uncertainty_scalefactor_to_peak
!------------------------------------------------------------
subroutine run_HiggsSignals_LHC_Run1_combination(Chisq_mu, Chisq_mh, Chisq, nobs, Pvalue)
use usefulbits, only : theo,just_after_run, ndat
use theo_manip, only : HB5_complete_theo
use usefulbits_HS, only : HSres, output_level, Nparam
implicit none
!----------------------------------------output
integer,intent(out) :: nobs
double precision,intent(out) :: Pvalue, Chisq, Chisq_mu, Chisq_mh
!-------------------------------------internal
integer :: n,i, nobs_mu, nobs_mh
logical :: debug=.False.
!---------------------------------------------
if(.not.allocated(theo))then
stop 'subroutine HiggsSignals_initialize must be called first'
endif
call HB5_complete_theo
do n=1,ndat
call evaluate_LHC_Run1_combination(theo(n),n)
Pvalue = HSres(n)%Pvalue_LHCRun1
Chisq = HSres(n)%Chisq_LHCRun1
Chisq_mu = HSres(n)%Chisq_LHCRun1_mu
Chisq_mh = HSres(n)%Chisq_LHCRun1_mh
nobs_mu = HSres(n)%nobs_LHCRun1_mu
nobs_mh = HSres(n)%nobs_LHCRun1_mh
nobs = nobs_mu+nobs_mh
if(output_level.ne.0) then
write(*,*)
write(*,*) '#*************************************************************************#'
write(*,*) '# HIGGSSIGNALS RESULTS (LHC ATLAS + CMS Run1 combination) #'
write(*,*) '#*************************************************************************#'
write(*,'(A55,F21.8)') 'chi^2 from signal rate observables = ',Chisq_mu
write(*,'(A55,F21.8)') 'chi^2 from Higgs mass observables = ',Chisq_mh
write(*,'(A55,F21.8)') 'chi^2 (total) = ',Chisq
write(*,'(A55,I21)') 'Number of rate observables = ', nobs_mu
write(*,'(A55,I21)') 'Number of mass observables = ', nobs_mh
write(*,'(A55,I21)') 'Number of observables (total) = ', nobs
write(*,'(A48,I3,A4,F21.8)') 'Probability (ndf =',nobs-Nparam,') = ', Pvalue
write(*,*) '#*************************************************************************#'
write(*,*)
endif
enddo
just_after_run=.True.
end subroutine run_HiggsSignals_LHC_Run1_combination
!------------------------------------------------------------
subroutine setup_LHC_combination_run1_SMXS_from_paper(useSMXS_from_paper)
!------------------------------------------------------------
use usefulbits_hs, only : LHC_combination_run1_SMXS_from_paper
implicit none
logical, intent(in) :: useSMXS_from_paper
if(useSMXS_from_paper) then
write(*,*) "Using SM cross sections from Tab.1 of arXiv:1606.02266 for LHC Run 1 combination chi^2 test."
else
write(*,*) "Using internal SM cross sections for LHC Run 1 combination chi^2 test."
endif
LHC_combination_run1_SMXS_from_paper = useSMXS_from_paper
end subroutine setup_LHC_combination_run1_SMXS_from_paper
!------------------------------------------------------------
subroutine evaluate_LHC_Run1_combination( t , n )
!------------------------------------------------------------
!
!------------------------------------------------------------
use usefulbits, only : np,Hneut,Hplus,dataset,results, vsmall
use usefulbits_hs, only : HSresults, output_level, Nparam, pdf, &
& LHCrun1_rates, LHCrun1_correlationmatrix, useaveragemass, &
& assignmentrange_LHCrun1, HSres, normalize_rates_to_reference_position, &
& normalize_rates_to_reference_position_outside_dmtheo
use pc_chisq, only : csq_mh
use numerics, only : invmatrix, matmult, gammp
implicit none
!--------------------------------------input
type(dataset), intent(in) :: t
integer, intent(in) :: n
!--------------------------------------output
! type(HSresults), intent(inout) :: r
!--------------------------------------internal
integer :: p, d, id, i, j, k, ncomb
double precision, allocatable :: covmat(:,:), invcovmat(:,:)
double precision, allocatable :: covmatzero(:,:), invcovmatzero(:,:)
double precision, dimension(20) :: v, v2, csq_mu, vzero, vzero2, csq_mu_max
double precision, dimension(20,1) :: vmat, vzeromat
double precision :: mobs = 125.09D0
double precision :: dmobs = 0.24D0
double precision :: dmbbtautau = 20.0D0
double precision :: dmWW = 5.0D0
double precision :: expmassrange, allowed_massrange
double precision :: Higgs_signal_k
double precision :: num1, num2, dnum1, dnum2, denom1, denom2, mav, dmav
allocate(covmat(20,20),invcovmat(20,20))
allocate(covmatzero(20,20),invcovmatzero(20,20))
mav =0.0D0
dmav = 0.0D0
denom1 = 0.0D0
denom2 = 0.0D0
num1 = 0.0D0
num2 = 0.0D0
dnum1 = 0.0D0
dnum2 = 0.0D0
do i=lbound(LHCrun1_rates,dim=1),ubound(LHCrun1_rates,dim=1)
id = LHCrun1_rates(i)%channel_id
p = int((id-modulo(id,10))/dble(10))
d = modulo(id,10)
if(d.eq.4.or.d.eq.5) then
expmassrange = dmbbtautau
elseif(d.eq.2) then
expmassrange = dmWW
else
if(pdf.eq.1) then
expmassrange = dmobs
else
expmassrange = assignmentrange_LHCrun1*dmobs
endif
endif
LHCrun1_rates(i)%r_pred = 0.0D0
ncomb = 0
do k=1,np(Hneut)
if(pdf.eq.1) then
allowed_massrange = expmassrange + t%particle(Hneut)%dM(k)
else
allowed_massrange = sqrt(expmassrange**2.0D0 + t%particle(Hneut)%dM(k)**2.0D0)
endif
if(abs(t%particle(Hneut)%M(k)-mobs).le.allowed_massrange ) then
Higgs_signal_k = signalrate(k,p,d,mobs,t%particle(Hneut)%M(k),t%particle(Hneut)%dM(k))
LHCrun1_rates(i)%r_pred = LHCrun1_rates(i)%r_pred + Higgs_signal_k
if(id.eq.11) then ! gg -> h_k -> gaga weighted mass average
num1 = num1 + Higgs_signal_k * t%particle(Hneut)%M(k)
dnum1 = dnum1 + Higgs_signal_k * t%particle(Hneut)%dM(k)
else if(id.eq.13) then ! gg -> h_k -> ZZ -> 4l weighted mass average
num2 = num2 + Higgs_signal_k * t%particle(Hneut)%M(k)
dnum2 = dnum2 + Higgs_signal_k * t%particle(Hneut)%dM(k)
endif
ncomb = ncomb+1
endif
enddo
if(id.eq.11) then
denom1 = LHCrun1_rates(i)%r_pred
else if(id.eq.13) then
denom2 = LHCrun1_rates(i)%r_pred
endif
if(LHCrun1_rates(i)%r_pred.gt.LHCrun1_rates(i)%r) then
LHCrun1_rates(i)%dr = LHCrun1_rates(i)%dr_up
else
LHCrun1_rates(i)%dr = LHCrun1_rates(i)%dr_low
endif
if(LHCrun1_rates(i)%r.lt.0.0D0) then
LHCrun1_rates(i)%dr0 = LHCrun1_rates(i)%dr_up
else
LHCrun1_rates(i)%dr0 = LHCrun1_rates(i)%dr_low
endif
v(i) = LHCrun1_rates(i)%r_pred - LHCrun1_rates(i)%r
vmat(i,1) = v(i)
vzero(i) = LHCrun1_rates(i)%r
vzeromat(i,1) = vzero(i)
! write(*,'(2I3,3F10.5)') p, d, LHCrun1_rates(i)%r_pred, LHCrun1_rates(i)%r, LHCrun1_rates(i)%r/LHCrun1_rates(i)%r_pred
enddo
if(denom1.gt.vsmall.and.denom2.gt.vsmall) then
mav = 0.5D0 * (num1/denom1 + num2/denom2)
dmav = 0.5D0 * (dnum1/denom1 + dnum2/denom2)
! write(*,*) "Averaged mass is ",mav, " +- ",dmav
! else
! write(*,*) "denom1 and denom2 are ",denom1, denom2
endif
do i=lbound(LHCrun1_rates,dim=1),ubound(LHCrun1_rates,dim=1)
do j=lbound(LHCrun1_rates,dim=1),ubound(LHCrun1_rates,dim=1)
covmat(i,j) = LHCrun1_correlationmatrix(i,j) * &
& LHCrun1_rates(i)%dr * LHCrun1_rates(j)%dr
covmatzero(i,j) = LHCrun1_correlationmatrix(i,j) * &
& LHCrun1_rates(i)%dr0 * LHCrun1_rates(j)%dr0
enddo
enddo
call invmatrix(covmat, invcovmat)
call matmult(invcovmat,vmat,v2,20,1)
call invmatrix(covmatzero, invcovmatzero)
call matmult(invcovmatzero,vzeromat,vzero2,20,1)
do i=1, 20
csq_mu(i) = v(i)*v2(i)
enddo
do i=1, 20
csq_mu_max(i) = vzero(i)*vzero2(i)
enddo
if(mav.lt.vsmall) then
HSres(n)%Chisq_LHCRun1_mh=0.0D0
else
HSres(n)%Chisq_LHCRun1_mh=csq_mh(mav,mobs,dmav,dmobs)
endif
if((HSres(n)%Chisq_LHCRun1_mh+sum(csq_mu)).gt.sum(csq_mu_max)) then
HSres(n)%Chisq_LHCRun1_mu=sum(csq_mu_max)
HSres(n)%Chisq_LHCRun1_mh=0.0D0
else
HSres(n)%Chisq_LHCRun1_mu=sum(csq_mu)
endif
HSres(n)%Chisq_LHCRun1= HSres(n)%Chisq_LHCRun1_mu + HSres(n)%Chisq_LHCRun1_mh
HSres(n)%nobs_LHCRun1_mu=20
HSres(n)%nobs_LHCRun1_mh=1
if(HSres(n)%Chisq_LHCRun1.gt.vsmall.and.(HSres(n)%nobs_LHCRun1_mu+HSres(n)%nobs_LHCRun1_mh-Nparam).gt.0) then
HSres(n)%Pvalue_LHCRun1=1 - gammp(dble(HSres(n)%nobs_LHCRun1_mu + HSres(n)%nobs_LHCRun1_mh-Nparam)/2,HSres(n)%Chisq_LHCRun1/2)
endif
deallocate(covmat,invcovmat)
deallocate(covmatzero,invcovmatzero)
contains
!------------------------------------------------------------
function signalrate(k,p,d,mobs,m,dmtheo)
!------------------------------------------------------------
use usefulbits_hs, only : LHC_combination_run1_SMXS_from_paper
!--------------------------------------external functions
double precision :: SMCS_lhc8_gg_H,SMCS_lhc8_bb_H,SMCS_lhc8_vbf_H, &
& SMCS_lhc8_HW, SMCS_lhc8_HZ, SMCS_lhc8_ttH, SMBR_Hgamgam,SMBR_HWW, &
& SMBR_HZZ, SMBR_Htautau, SMBR_Hbb, SMBR_HZgam, SMBR_Hcc, SMBR_Hmumu, &
& SMBR_Hgg
double precision, intent(in) :: mobs, m, dmtheo
integer, intent(in) :: k,p,d
double precision :: signalrate, production_rate, decay_rate, mass, refmass
double precision :: production_rate_scalefactor, decay_rate_scalefactor
mass = t%particle(Hneut)%M(k)
! TS (17/10/2018): Take reference mass for SM-normalization at mobs+dmtheo box boundary.
if(mass.ge.(mobs+dmtheo)) then
refmass = mobs + dmtheo
else if(mass.le.(mobs-dmtheo)) then
refmass = mobs - dmtheo
else
refmass = mass
endif
!---
if(p.eq.1) then
if(LHC_combination_run1_SMXS_from_paper) then
production_rate= t%lhc8%XS_gg_hj_ratio(k) * 19.2D0 &
& + t%lhc8%XS_bb_hj_ratio(k) * 0.203D0
else
production_rate= t%lhc8%XS_gg_hj_ratio(k) * SMCS_lhc8_gg_H(mass) &
& + t%lhc8%XS_bb_hj_ratio(k) * SMCS_lhc8_bb_H(mass)
endif
! NOTE: Here we make a small error in the scalefactor. Correct would be to rescale
! the gg and bb contributions separately.
production_rate_scalefactor = (SMCS_lhc8_gg_H(mobs)+SMCS_lhc8_bb_H(mobs))/&
& (SMCS_lhc8_gg_H(refmass)+SMCS_lhc8_bb_H(refmass))
else if(p.eq.2) then
if(LHC_combination_run1_SMXS_from_paper) then
production_rate= t%lhc8%XS_vbf_ratio(k) * 1.58D0
else
production_rate= t%lhc8%XS_vbf_ratio(k) * SMCS_lhc8_vbf_H(mass)
endif
production_rate_scalefactor = SMCS_lhc8_vbf_H(mobs)/SMCS_lhc8_vbf_H(refmass)
else if(p.eq.3) then
if(LHC_combination_run1_SMXS_from_paper) then
production_rate= t%lhc8%XS_hjW_ratio(k) * 0.703D0
else
production_rate= t%lhc8%XS_hjW_ratio(k) * SMCS_lhc8_HW(mass)
endif
production_rate_scalefactor = SMCS_lhc8_HW(mobs)/SMCS_lhc8_HW(refmass)
else if(p.eq.4) then
if(LHC_combination_run1_SMXS_from_paper) then
production_rate= t%lhc8%XS_hjZ_ratio(k) * 0.446D0
else
production_rate= t%lhc8%XS_hjZ_ratio(k) * SMCS_lhc8_HZ(mass)
endif
production_rate_scalefactor = SMCS_lhc8_HZ(mobs)/SMCS_lhc8_HZ(refmass)
else if(p.eq.5) then
if(LHC_combination_run1_SMXS_from_paper) then
production_rate= t%lhc8%XS_tthj_ratio(k) * 0.129D0
else
production_rate= t%lhc8%XS_tthj_ratio(k) * SMCS_lhc8_ttH(mass)
endif
production_rate_scalefactor = SMCS_lhc8_ttH(mobs)/SMCS_lhc8_ttH(refmass)
endif
if(d.eq.1) then
decay_rate = t%BR_hjgaga(k)
decay_rate_scalefactor = SMBR_Hgamgam(mobs)/SMBR_Hgamgam(refmass)
else if(d.eq.2) then
decay_rate = t%BR_hjWW(k)
decay_rate_scalefactor = SMBR_HWW(mobs)/SMBR_HWW(refmass)
else if(d.eq.3) then
decay_rate = t%BR_hjZZ(k)
decay_rate_scalefactor = SMBR_HZZ(mobs)/SMBR_HZZ(refmass)
else if(d.eq.4) then
decay_rate = t%BR_hjtautau(k)
decay_rate_scalefactor = SMBR_Htautau(mobs)/SMBR_Htautau(refmass)
else if(d.eq.5) then
decay_rate = t%BR_hjbb(k)
decay_rate_scalefactor = SMBR_Hbb(mobs)/SMBR_Hbb(refmass)
endif
if(normalize_rates_to_reference_position) then
signalrate = production_rate * decay_rate
else
! This is the default:
signalrate = production_rate * production_rate_scalefactor * &
& decay_rate * decay_rate_scalefactor
endif
if(normalize_rates_to_reference_position_outside_dmtheo) then
if(abs(mobs-m).ge.dmtheo) then
signalrate = production_rate * decay_rate
endif
endif
end function signalrate
!------------------------------------------------------------
end subroutine evaluate_LHC_Run1_combination
!------------------------------------------------------------
subroutine run_HiggsSignals_STXS(Chisq_STXS_rates, Chisq_STXS_mh, Chisq_STXS, nobs_STXS, Pvalue_STXS)
!------------------------------------------------------------
use STXS, only : evaluate_model_for_STXS, get_chisq_from_STXS, print_STXS, &
& get_number_of_STXS_observables, STXSlist, print_STXS_to_file
use usefulbits, only : theo,just_after_run, ndat, vsmall
use usefulbits_hs, only : HSres, output_level
use theo_manip, only : HB5_complete_theo
use numerics, only : gammp
double precision, intent(out) :: Chisq_STXS_rates, Chisq_STXS_mh, Chisq_STXS, Pvalue_STXS
integer, intent(out) :: nobs_STXS
double precision :: Pvalue
integer :: nobs_STXS_rates, nobs_STXS_mh, i, n
call HB5_complete_theo
Chisq_STXS_mh = 0.0D0
do n=1, ndat
do i=lbound(STXSlist,dim=1), ubound(STXSlist,dim=1)
call evaluate_model_for_STXS(STXSlist(i),theo(n))
enddo
call get_chisq_from_STXS(Chisq_STXS_rates, Pvalue_STXS)
call get_number_of_STXS_observables(nobs_STXS_rates, nobs_STXS_mh)
nobs_STXS = nobs_STXS_rates + nobs_STXS_mh
! Add routine for possible mh-observable in STXS here!
Chisq_STXS = Chisq_STXS_rates + Chisq_STXS_mh
HSres(n)%Chisq_STXS_rates = Chisq_STXS_rates
HSres(n)%Chisq_STXS_mh = Chisq_STXS_mh
HSres(n)%Chisq_STXS = Chisq_STXS
HSres(n)%nobs_STXS_rates = nobs_STXS_rates
HSres(n)%nobs_STXS_mh = nobs_STXS_mh
HSres(n)%nobs_STXS = nobs_STXS
Pvalue = 1.0D0
if(Chisq_STXS.gt.vsmall.and.(nobs_STXS-Nparam).gt.0) then
Pvalue = 1 - gammp(dble(nobs_STXS-Nparam)/2,Chisq_STXS/2)
endif
HSres(n)%Pvalue_STXS = Pvalue
enddo
if(output_level.eq.1) call print_STXS
if(output_level.eq.3) then
call print_STXS_to_file
endif
if(output_level.ne.0) then
write(*,*)
write(*,*) '#*************************************************************************#'
write(*,*) '# HIGGSSIGNALS RESULTS (STXS observables) #'
write(*,*) '#*************************************************************************#'
write(*,'(A55,F21.8)') 'chi^2 (signal rate) from STXS observables = ',Chisq_STXS_rates
write(*,'(A55,F21.8)') 'chi^2 (Higgs mass) from STXS observables = ',Chisq_STXS_mh
write(*,'(A55,F21.8)') 'chi^2 (total) = ',Chisq_STXS
write(*,'(A55,I21)') 'Number of STXS rate observables = ', nobs_STXS_rates
write(*,'(A55,I21)') 'Number of STXS mass observables = ', nobs_STXS_mh
write(*,'(A55,I21)') 'Number of STXS observables (total) = ', nobs_STXS
write(*,'(A48,I3,A4,F21.8)') 'Probability (ndf =',nobs-Nparam,') = ', Pvalue
write(*,*) '#*************************************************************************#'
write(*,*)
endif
end subroutine run_HiggsSignals_STXS
!------------------------------------------------------------------------------------
subroutine run_HiggsSignals(mode, Chisq_mu, Chisq_mh, Chisq, nobs, Pvalue)
!------------------------------------------------------------
! This subroutine can be called by the user after HiggsSignals_initialize has been called.
! The input routines, where required, should be called before calling run_HiggsSignals.
! It takes theoretical predictions for a particular parameter point
! in the model and calls subroutines which compare these predictions
! to the experimental results.
! Arguments (output):
! * mode = 1,2 or 3 for peak-centered, mass-centered chi^2 method or both, respectively.
! * Chisq_mu = total chi^2 contribution from signal strength measurements
! * Chisq_mh = total chi^2 contribution from Higgs mass measurements
! * Chisq = total chi^2 value for the combination of the considered Higgs signals
! * nobs = total number of observables
! * Pvalue = total chi^2 probability for the agreement between model and data,
! assuming number of observables == number of degrees of freedom
! (see manual for more precise definitions))
!------------------------------------------------------------
use usefulbits, only : theo,just_after_run, inputmethod, ndat!inputsub,
use usefulbits_HS, only : HSres, runmode, output_level, usescalefactor, Nparam,Exptdir
use channels, only : check_channels
use theo_manip, only : HB5_complete_theo!, HB5_recalculate_theo_for_datapoint
#if defined(NAGf90Fortran)
use F90_UNIX_IO, only : flush
#endif
implicit none
integer,intent(in) :: mode
!----------------------------------------output
integer,intent(out) :: nobs
double precision,intent(out) :: Pvalue, Chisq, Chisq_mu, Chisq_mh
!-------------------------------------internal
integer :: n,i
logical :: debug=.False.
!---------------------------------------------
if(mode.eq.1) then
runmode="peak"
else if(mode.eq.2) then
! runmode="mass"
write(*,*) "Warning: The 'mass' method (runmode = 2) is no longer maintained."
write(*,*) " The peak-centered chi^2 method will be used instead."
runmode="peak"
else if(mode.eq.3) then
! runmode="both"
write(*,*) "Warning: The 'both' method (runmode = 3) is no longer maintained."
write(*,*) " The peak-centered chi^2 method will be used instead."
runmode="peak"
else
stop 'Error in subroutine run_HiggsSignals: mode unknown'
endif
if(.not.allocated(theo))then
stop 'subroutine HiggsSignals_initialize must be called first'
endif
! if(inputmethod.eq.'subrout') then
! do i=1,ubound(inputsub,dim=1)
! if( inputsub(i)%req .ne. inputsub(i)%stat )then
! write(*,*) inputsub(i)%req, inputsub(i)%stat
! write(*,*)'subroutine '//trim(adjustl(inputsub(i)%desc))
! write(*,*)'should be called once and only once before each call to'
! write(*,*)'subroutine run_HiggsSignals.'
! stop 'error in subroutine run_HiggsSignals'
! endif
! TS: Have to work on this bit to make it run simultaneously with HiggsBounds. Now,
! commented out the =0 statement. HS thus has to be run before HB.
! inputsub(i)%stat=0!now we have used this input, set back to zero
! enddo
! endif
if(debug)write(*,*)'manipulating input...' ; call flush(6)
call HB5_complete_theo
if(debug)write(*,*)'compare each model to the experimental data...' ; call flush(6)
do n=1,ndat
! call recalculate_theo_for_datapoint(n)
call evaluate_model(theo(n),n)
Pvalue = HSres(n)%Pvalue_peak
Chisq = HSres(n)%Chisq_peak
Chisq_mu = HSres(n)%Chisq_peak_mu
Chisq_mh = HSres(n)%Chisq_peak_mh
nobs = HSres(n)%nobs_peak
if(output_level.ne.0) then
write(*,*)
write(*,*) '#*************************************************************************#'
write(*,*) '# HIGGSSIGNALS RESULTS (',trim(adjustl(Exptdir)),') -- peak observables #'
write(*,*) '#*************************************************************************#'
write(*,'(A55,F21.8)') 'chi^2 (signal strength) from peak observables = ',&
& HSres(n)%Chisq_peak_mu
write(*,'(A55,F21.8)') 'chi^2 (Higgs mass) from peak observables = ',HSres(n)%Chisq_peak_mh
! write(*,'(A55,F21.8)') 'chi^2 from mass-centered observables = ',HSres(n)%Chisq_mpred
! write(*,'(A55,F21.8)') 'chi^2 from signal strength peak observables (total) = ',HSres(n)%Chisq_mu
write(*,'(A55,F21.8)') 'chi^2 (total) from peak observables = ',HSres(n)%Chisq
write(*,'(A55,I21)') 'Number of signal strength peak observables = ',&
& HSres(n)%nobs_peak_mu
write(*,'(A55,I21)') 'Number of Higgs mass peak observables = ',HSres(n)%nobs_peak_mh
! write(*,'(A55,I21)') 'Number of mass-centered observables = ',HSres(n)%nobs_mpred
write(*,'(A55,I21)') 'Number of peak observables (total) = ',HSres(n)%nobs_peak
write(*,'(A48,I3,A4,F21.8)') 'Probability (ndf =',HSres(n)%nobs-Nparam,') using peak observables = ',HSres(n)%Pvalue_peak
write(*,*) '#*************************************************************************#'
write(*,*)
endif
enddo
just_after_run=.True.
usescalefactor=.False.
end subroutine run_HiggsSignals
!------------------------------------------------------------
subroutine evaluate_model( t , n )
!------------------------------------------------------------
! This subroutine evaluates the signal strength modifier for every Higgs boson and
! considered analysis. It fills a matrix neutHiggs(:,:) of type neutHiggs with dimensions
! (number(considered analyses),nH).
!------------------------------------------------------------
use usefulbits, only : np,Hneut,Hplus,dataset,results, vsmall
use usefulbits_hs, only : neutHiggses, nanalys, runmode, HSresults, cov, obs, analyses,&
& cov_mhneut, iterations, deallocate_covariance_matrices, &
& output_level, Nparam, nanalys
use datatables, only : setup_tablelist, check_available_Higgses
use pc_chisq
use mc_chisq
use all_chisq
use numerics
implicit none
!--------------------------------------input
type(dataset), intent(in) :: t
integer, intent(in) :: n
!-------------------------------------output
! type(HSresults), intent(out) :: r
integer :: ii, jj, iii, jjj
double precision :: totchisq, muchisq, mhchisq, mpchisq, mpredchisq
integer :: nobs, Nmu, Nmh, Nmpred
character(LEN=100), allocatable :: assignmentgroups(:)
integer, allocatable :: assignmentgroups_domH(:)
integer, allocatable :: assignmentgroups_Higgs_comb(:,:)
allocate(assignmentgroups(nanalys),assignmentgroups_domH(nanalys))
allocate(assignmentgroups_Higgs_comb(nanalys,np(Hneut)))
assignmentgroups = ''
!---Initialize assignmentgroups arrays with default values
do ii=lbound(assignmentgroups_domH,dim=1),ubound(assignmentgroups_domH,dim=1)
assignmentgroups_domH(ii) = 0
assignmentgroups_Higgs_comb(ii,:) = 0
enddo
!---First, evaluate the model predictions
allocate(neutHiggses(nanalys,np(Hneut)))
!-Loop over considered analyses
do ii=lbound(neutHiggses,dim=1),ubound(neutHiggses,dim=1)
!-Loop over the neutral Higgs bosons of the model
do jj=lbound(neutHiggses,dim=2),ubound(neutHiggses,dim=2)
!! write(*,*) "hello evaluate model:", ii, jj
call calc_mupred(jj, t, obs(ii)%table, neutHiggses(ii,jj))
enddo
if(.not.allocated(obs(ii)%Higgses)) allocate(obs(ii)%Higgses(np(Hneut)))
obs(ii)%Higgses(:) = neutHiggses(ii,:)
enddo
!-Pass the observables and their predicted Higgs properties (obs%Higgses)
!-to the tablelist "analyses"
call setup_tablelist
! select case(runmode)
!
! case('peak')
!-Peak-centered chisq method
jjj=0
do ii=lbound(analyses,dim=1),ubound(analyses,dim=1)
call deallocate_covariance_matrices
call assign_Higgs_to_peaks(analyses(ii)%table, analyses(ii)%peaks,0)
do iii=lbound(analyses(ii)%peaks,dim=1),ubound(analyses(ii)%peaks,dim=1)
if(analyses(ii)%table%mhchisq.eq.1.and.&
& len(trim(adjustl(analyses(ii)%peaks(iii)%assignmentgroup))).ne.0) then
jjj=jjj+1
assignmentgroups(jjj)=analyses(ii)%peaks(iii)%assignmentgroup
assignmentgroups_Higgs_comb(jjj,:)=analyses(ii)%peaks(iii)%Higgs_comb
assignmentgroups_domH(jjj)=analyses(ii)%peaks(iii)%domH
! write(*,*) "Found leader of group ",assignmentgroups(jjj)
! write(*,*) "ID ",analyses(ii)%peaks(iii)%id
! write(*,*) "with Higgs combination ",assignmentgroups_Higgs_comb(jjj,:)
! write(*,*) "and dominant Higgs boson ",assignmentgroups_domH(jjj)
endif
enddo
enddo
do ii=lbound(analyses,dim=1),ubound(analyses,dim=1)
do iii=lbound(analyses(ii)%peaks,dim=1),ubound(analyses(ii)%peaks,dim=1)
if(analyses(ii)%table%mhchisq.eq.0.and.&
& len(trim(adjustl(analyses(ii)%peaks(iii)%assignmentgroup))).ne.0) then
!SELECT ASSIGNMENT GROUP FOLLOWERS
do jjj=lbound(assignmentgroups,dim=1),ubound(assignmentgroups,dim=1)
if(analyses(ii)%peaks(iii)%assignmentgroup.eq.assignmentgroups(jjj)) then
!TAKE OVER THE HIGGS ASSIGNMENT OF THE LEADING PEAK
analyses(ii)%peaks(iii)%Higgs_comb=assignmentgroups_Higgs_comb(jjj,:)
analyses(ii)%peaks(iii)%domH=assignmentgroups_domH(jjj)
if(assignmentgroups_domH(jjj).ne.0) then
analyses(ii)%peaks(iii)%Higgs_assignment_forced=1
endif
call evaluate_peak(analyses(ii)%peaks(iii),analyses(ii)%table)
endif
enddo
endif
enddo
enddo
! write(*,*) "Starting assignment procedure..."
! Do the iterative Higgs-to-peak-assignment here:
call assign_Higgs_to_peaks_with_correlations(iterations)
! write(*,*) "Calculating chi^2..."
call calculate_total_pc_chisq(totchisq, muchisq, mhchisq, nobs, Nmu, Nmh)
! write(*,*) "...done."
if(output_level.eq.1) call print_peakinformation
if(output_level.eq.2) call print_peakinformation_essentials
if(output_level.eq.3) then
call print_peaks_to_file
call print_peaks_signal_rates_to_file
endif
call add_peaks_to_HSresults(HSres(n))
HSres(n)%Chisq_peak=totchisq
HSres(n)%Chisq_peak_mu = muchisq
HSres(n)%Chisq_mpred = 0.0D0
HSres(n)%Chisq_peak_mu=muchisq
HSres(n)%Chisq_peak_mh=mhchisq
HSres(n)%nobs_mpred=0
HSres(n)%nobs_peak_mu=Nmu
HSres(n)%nobs_peak_mh=Nmh
HSres(n)%nanalysis=size(analyses)
HSres(n)%nobs_peak=nobs
-
- if(HSres(n)%Chisq.gt.vsmall.and.(HSres(n)%nobs-Nparam).gt.0) then
- HSres(n)%Pvalue_peak = 1 - gammp(dble(HSres(n)%nobs-Nparam)/2,HSres(n)%Chisq/2)
+!
+! if(HSres(n)%Chisq.gt.vsmall.and.(HSres(n)%nobs-Nparam).gt.0) then
+! HSres(n)%Pvalue_peak = 1 - gammp(dble(HSres(n)%nobs-Nparam)/2,HSres(n)%Chisq/2)
+! endif
+
+ if(HSres(n)%Chisq_peak.gt.vsmall.and.(HSres(n)%nobs_peak-Nparam).gt.0) then
+ HSres(n)%Pvalue_peak = 1 - gammp(dble(HSres(n)%nobs_peak-Nparam)/2,HSres(n)%Chisq_peak/2)
endif
! case('mass')
! do ii=lbound(analyses,dim=1),ubound(analyses,dim=1)
! call fill_mp_obs(ii)
! enddo
! if(mc_mode.eq.1) call mass_variation_by_theory_uncertainty
! call create_covariance_matrix_mp
! call calculate_mpred_chisq(mpchisq, nobs)
!
! if(output_level.eq.1) call print_mc_observables
! if(output_level.eq.2) call print_mc_observables_essentials
! if(output_level.eq.3) then
! call print_mc_tables_to_file
! call print_mc_observables_to_file
! endif
!
! HSres(n)%Chisq=mpchisq
! HSres(n)%Chisq_peak_mu = 0.0D0
! HSres(n)%Chisq_mpred = mpchisq
! HSres(n)%Chisq_mu=mpchisq
! HSres(n)%Chisq_mh=0.0D0
! HSres(n)%nobs_mpred=nobs
! HSres(n)%nobs_peak_mu=0
! HSres(n)%nobs_peak_mh=0
! HSres(n)%nanalysis=size(analyses)
! HSres(n)%nobs=nobs
! if(HSres(n)%Chisq.gt.vsmall.and.(HSres(n)%nobs-Nparam).gt.0) then
! HSres(n)%Pvalue=1 - gammp(dble(HSres(n)%nobs-Nparam)/2,HSres(n)%Chisq/2)
! endif
!
! case('both')
! jjj=0
! do ii=lbound(analyses,dim=1),ubound(analyses,dim=1)
! call deallocate_covariance_matrices
! call assign_Higgs_to_peaks(analyses(ii)%table, analyses(ii)%peaks,0)
! do iii=lbound(analyses(ii)%peaks,dim=1),ubound(analyses(ii)%peaks,dim=1)
! if(analyses(ii)%table%mhchisq.eq.1.and.&
! & len(trim(analyses(ii)%peaks(iii)%assignmentgroup)).ne.0) then
! jjj=jjj+1
! assignmentgroups(jjj)=analyses(ii)%peaks(iii)%assignmentgroup
! assignmentgroups_Higgs_comb(jjj,:)=analyses(ii)%peaks(iii)%Higgs_comb
! assignmentgroups_domH(jjj)=analyses(ii)%peaks(iii)%domH
! endif
! enddo
! enddo
! do ii=lbound(analyses,dim=1),ubound(analyses,dim=1)
! do iii=lbound(analyses(ii)%peaks,dim=1),ubound(analyses(ii)%peaks,dim=1)
! if(analyses(ii)%table%mhchisq.eq.0.and.&
! & len(trim(analyses(ii)%peaks(iii)%assignmentgroup)).ne.0) then
! do jjj=lbound(assignmentgroups,dim=1),ubound(assignmentgroups,dim=1)
! if(analyses(ii)%peaks(iii)%assignmentgroup.eq.assignmentgroups(jjj)) then
! !TAKE OVER THE HIGGS ASSIGNMENT OF THE LEADING PEAK
! analyses(ii)%peaks(iii)%Higgs_comb=assignmentgroups_Higgs_comb(jjj,:)
! analyses(ii)%peaks(iii)%domH=assignmentgroups_domH(jjj)
! if(assignmentgroups_domH(jjj).ne.0) then
! analyses(ii)%peaks(iii)%Higgs_assignment_forced=1
! endif
! ! TODO: Need to evaluate everything else here!
! call evaluate_peak(analyses(ii)%peaks(iii),analyses(ii)%table)
! endif
! enddo
! endif
! enddo
! enddo
!
! call assign_Higgs_to_peaks_with_correlations(iterations)
!
! do ii=lbound(analyses,dim=1),ubound(analyses,dim=1)
! call check_available_Higgses(ii)
! call fill_mp_obs(ii)
! enddo
! if(mc_mode.eq.1) call mass_variation_by_theory_uncertainty
!
! call calculate_total_chisq(totchisq, muchisq, mhchisq, mpredchisq, nobs, Nmu, Nmh, Nmpred)
!
! !Have to write a new print method
! if(output_level.eq.1) call print_all_observables
! if(output_level.eq.2) call print_peakinformation_essentials
! if(output_level.eq.3) then
! call print_peaks_to_file
! call print_peaks_signal_rates_to_file
! endif
!
! call add_peaks_to_HSresults(r)
!
! HSres(n)%Chisq=totchisq
! HSres(n)%Chisq_peak_mu = muchisq
! HSres(n)%Chisq_mpred = mpredchisq
! HSres(n)%Chisq_mu=muchisq + mpredchisq
! HSres(n)%Chisq_mh=mhchisq
! HSres(n)%nobs_mpred=Nmpred
! HSres(n)%nobs_peak_mu=Nmu
! HSres(n)%nobs_peak_mh=Nmh
! HSres(n)%nanalysis=size(analyses)
! HSres(n)%nobs=nobs
! if(HSres(n)%Chisq.gt.vsmall.and.(HSres(n)%nobs-Nparam).gt.0) then
! HSres(n)%Pvalue=1 - gammp(dble(HSres(n)%nobs-Nparam)/2,HSres(n)%Chisq/2)
! endif
!
! case default
! stop "Error in subroutine evaluate_model: Please specify runmode!"
!
! end select
deallocate(neutHiggses)
deallocate(assignmentgroups, assignmentgroups_domH, assignmentgroups_Higgs_comb)
end subroutine evaluate_model
!------------------------------------------------------------
subroutine calc_mupred( j, t, mutab, Higgs )
! Calculates the model-predicted signal strength modifier
!------------------------------------------------------------
use usefulbits, only : dataset, div, vsmall
use usefulbits_HS, only : neutHiggs, mutable, useSMtest, eps
implicit none
integer, intent(in) :: j ! Higgs index
type(dataset), intent(in) :: t
type(mutable), intent(inout) :: mutab
type(neutHiggs), intent(inout) :: Higgs
integer :: i
double precision :: c, dcbyc
integer :: testSMratios
logical :: correct_properties
Higgs%m = t%particle(mutab%particle_x)%M(j)
Higgs%dm = t%particle(mutab%particle_x)%dM(j)
Higgs%id = j
call get_channelrates( j, t, mutab )
correct_properties=.True.
!--Evaluate the predicted signal strength modifier c of the model
c=0.
do i=1,mutab%Nc
!----use a weighted average of the channel rate ratios
c=c+mutab%channel_w(i,j)*mutab%channel_mu(i,j)
enddo
!--Evaluate the deviation of each channel rate ratio to the signal
!--strength modifier c and test SM likeness criterium, if this is
!--activated.
testSMratios= 1 !passes the SM-like ratios test
do i=1,mutab%Nc
dcbyc=div((mutab%channel_mu(i,j)-c),c,0.0D0,1.0D9)
if(dcbyc*mutab%channel_w(i,j).gt.eps.and.useSMtest) then
testSMratios= -1 !fails the SM-like ratios test
endif
enddo
if(testSMratios.lt.0) correct_properties=.False.
if(correct_properties) then
Higgs%mu=c
else
Higgs%mu=0.0D0
endif
end subroutine calc_mupred
!------------------------------------------------------------
subroutine get_channelrates( j, t, mutab )
! This subroutine assignes the rates, weights and systematic rate uncertainty of
! the Higgs boson (j) for the channels considered by the analysis (mutab).
!
! WARNING: if normalize_rates_to_reference_position is true
! The rates are normalized w.r.t. a reference rate at the (peak) mass position.
! This does not work with the mass-centered chi^2 method.
! Also, theoretical mass uncertainties are problematic!
!------------------------------------------------------------
use usefulbits, only : dataset, div, small
use usefulbits_HS, only : neutHiggs, mutable, delta_rate, normalize_rates_to_reference_position,&
& normalize_rates_to_reference_position_outside_dmtheo
use theory_XS_SM_functions
use theory_BRfunctions
integer, intent(in) :: j
type(dataset), intent(in) :: t
type(mutable), intent(inout) :: mutab
integer :: i, p, d ! id
integer :: ii, p1, p2, d1, d2 !id1, id2
double precision :: rate, SMrate, modelrate, drsq_SM, drsq, dBR, dBRSM,drcov,drcovSM
double precision :: rate_SMref,refmass,BR_SMref!,BR_SMref_mpeak
double precision :: dynamicalmass, rate_SMdyn
! TS (17/10/2018: dynamicalmass is the default reference mass position for the SM normalization)
if(size(mutab%mass,dim=1).eq.1) then
refmass = mutab%mass(1)
! TS (17/10/2018): Take dynamical reference mass for SM-normalization at mobs+dmtheo box boundary.
if(t%particle(mutab%particle_x)%M(j).ge.(mutab%mass(1)+t%particle(mutab%particle_x)%dM(j))) then
dynamicalmass = mutab%mass(1) + t%particle(mutab%particle_x)%dM(j)
else if(t%particle(mutab%particle_x)%M(j).le.(mutab%mass(1)-t%particle(mutab%particle_x)%dM(j))) then
dynamicalmass = mutab%mass(1) - t%particle(mutab%particle_x)%dM(j)
else
dynamicalmass = t%particle(mutab%particle_x)%M(j)
endif
! write(*,*) "HS debug, dynamicalmass, refmass = ",dynamicalmass, refmass
!---
else
! Only relevant for the mass-centered chi^2 method
refmass = t%particle(mutab%particle_x)%M(j)
endif
!write(*,*) 'DEBUG HS: id = ', mutab%id
!write(*,*) 'DEBUG HS, m = ', t%particle(mutab%particle_x)%M(j)
do i=1,mutab%Nc
! id = mutab%channel_id(i)
! p = int((id-modulo(id,10))/dble(10))
! d = modulo(id,10)
p = mutab%channel_p_id(i)
d = mutab%channel_d_id(i)
!--Do the production rate for the relevant experiment and cms-energy
if(mutab%collider.eq.'LHC') then
if(abs(mutab%energy-7.0D0).le.small) then
if(p.eq.1) then
rate=t%lhc7%XS_hj_ratio(j)
SMrate=t%lhc7%XS_H_SM(j)
rate_SMdyn=XS_lhc7_gg_H_SM(dynamicalmass)+XS_lhc7_bb_H_SM(dynamicalmass)
rate_SMref=XS_lhc7_gg_H_SM(refmass)+XS_lhc7_bb_H_SM(refmass)
mutab%channel_description(i,1)='singleH'
else if(p.eq.2) then
rate=t%lhc7%XS_vbf_ratio(j)
SMrate=t%lhc7%XS_vbf_SM(j)
rate_SMdyn=XS_lhc7_vbf_SM(dynamicalmass)
rate_SMref=XS_lhc7_vbf_SM(refmass)
mutab%channel_description(i,1)='VBF'
else if(p.eq.3) then
rate=t%lhc7%XS_hjW_ratio(j)
SMrate=t%lhc7%XS_HW_SM(j)
rate_SMdyn=WH_nnlo(dynamicalmass,'LHC7 ',1.0D0,1.0D0,1.0D0,.True.,.True.)
rate_SMref=WH_nnlo(refmass,'LHC7 ',1.0D0,1.0D0,1.0D0,.True.,.True.)
mutab%channel_description(i,1)='HW'
else if(p.eq.4) then
rate=t%lhc7%XS_hjZ_ratio(j)
SMrate=t%lhc7%XS_HZ_SM(j)
rate_SMdyn=ZH_cpmix_nnlo_ggqqbb(dynamicalmass,'LHC7 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
rate_SMref=ZH_cpmix_nnlo_ggqqbb(refmass,'LHC7 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
mutab%channel_description(i,1)='HZ'
else if(p.eq.5) then
rate=t%lhc7%XS_tthj_ratio(j)
SMrate=t%lhc7%XS_ttH_SM(j)
rate_SMdyn=XS_lhc7_ttH_SM(dynamicalmass)
rate_SMref=XS_lhc7_ttH_SM(refmass)
mutab%channel_description(i,1)='ttH'
else if(p.eq.6) then
rate=t%lhc7%XS_gg_hj_ratio(j)
SMrate=t%lhc7%XS_gg_H_SM(j)
rate_SMdyn=XS_lhc7_gg_H_SM(dynamicalmass)
rate_SMref=XS_lhc7_gg_H_SM(refmass)
mutab%channel_description(i,1)='ggH'
else if(p.eq.7) then
rate=t%lhc7%XS_bb_hj_ratio(j)
SMrate=t%lhc7%XS_bb_H_SM(j)
rate_SMdyn=XS_lhc7_bb_H_SM(dynamicalmass)
rate_SMref=XS_lhc7_bb_H_SM(refmass)
mutab%channel_description(i,1)='bbH'
else if(p.eq.8) then
rate=t%lhc7%XS_thj_tchan_ratio(j)
SMrate=t%lhc7%XS_tH_tchan_SM(j)
rate_SMdyn=XS_lhc7_tH_tchan_SM(dynamicalmass)
rate_SMref=XS_lhc7_tH_tchan_SM(refmass)
mutab%channel_description(i,1)='tH (t-channel)'
else if(p.eq.9) then
rate=t%lhc7%XS_thj_schan_ratio(j)
SMrate=t%lhc7%XS_tH_schan_SM(j)
rate_SMdyn=XS_lhc7_tH_schan_SM(dynamicalmass)
rate_SMref=XS_lhc7_tH_schan_SM(refmass)
mutab%channel_description(i,1)='tH (s-channel)'
else if(p.eq.10) then
rate=t%lhc7%XS_qq_hjZ_ratio(j)
SMrate=t%lhc7%XS_qq_HZ_SM(j)
rate_SMdyn=ZH_cpmix_nnlo_qqbb(dynamicalmass,'LHC7 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
rate_SMref=ZH_cpmix_nnlo_qqbb(refmass,'LHC7 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
mutab%channel_description(i,1)='qq-HZ'
else if(p.eq.11) then
rate=t%lhc7%XS_gg_hjZ_ratio(j)
SMrate=t%lhc7%XS_gg_HZ_SM(j)
rate_SMdyn=ZH_cpmix_nnlo_gg(dynamicalmass,'LHC7 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
rate_SMref=ZH_cpmix_nnlo_gg(refmass,'LHC7 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
mutab%channel_description(i,1)='gg-HZ'
else if(p.eq.0) then
rate=1.0D0
SMrate=1.0D0
rate_SMdyn=1.0D0
rate_SMref=1.0D0
mutab%channel_description(i,1)='none'
endif
else if(abs(mutab%energy-8.0D0).le.small) then
if(p.eq.1) then
rate=t%lhc8%XS_hj_ratio(j)
SMrate=t%lhc8%XS_H_SM(j)
rate_SMdyn=XS_lhc8_gg_H_SM(dynamicalmass)+XS_lhc8_bb_H_SM(dynamicalmass)
rate_SMref=XS_lhc8_gg_H_SM(refmass)+XS_lhc8_bb_H_SM(refmass)
mutab%channel_description(i,1)='singleH'
else if(p.eq.2) then
rate=t%lhc8%XS_vbf_ratio(j)
SMrate=t%lhc8%XS_vbf_SM(j)
rate_SMdyn=XS_lhc8_vbf_SM(dynamicalmass)
rate_SMref=XS_lhc8_vbf_SM(refmass)
mutab%channel_description(i,1)='VBF'
else if(p.eq.3) then
rate=t%lhc8%XS_hjW_ratio(j)
SMrate=t%lhc8%XS_HW_SM(j)
rate_SMdyn=WH_nnlo(dynamicalmass,'LHC8 ',1.0D0,1.0D0,1.0D0,.True.,.True.)
rate_SMref=WH_nnlo(refmass,'LHC8 ',1.0D0,1.0D0,1.0D0,.True.,.True.)
mutab%channel_description(i,1)='HW'
else if(p.eq.4) then
rate=t%lhc8%XS_hjZ_ratio(j)
SMrate=t%lhc8%XS_HZ_SM(j)
rate_SMdyn=ZH_cpmix_nnlo_ggqqbb(dynamicalmass,'LHC8 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
rate_SMref=ZH_cpmix_nnlo_ggqqbb(refmass,'LHC8 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
mutab%channel_description(i,1)='HZ'
else if(p.eq.5) then
rate=t%lhc8%XS_tthj_ratio(j)
SMrate=t%lhc8%XS_ttH_SM(j)
rate_SMdyn=XS_lhc8_ttH_SM(dynamicalmass)
rate_SMref=XS_lhc8_ttH_SM(refmass)
mutab%channel_description(i,1)='ttH'
else if(p.eq.6) then
rate=t%lhc8%XS_gg_hj_ratio(j)
SMrate=t%lhc8%XS_gg_H_SM(j)
rate_SMdyn=XS_lhc8_gg_H_SM(dynamicalmass)
rate_SMref=XS_lhc8_gg_H_SM(refmass)
mutab%channel_description(i,1)='ggH'
else if(p.eq.7) then
rate=t%lhc8%XS_bb_hj_ratio(j)
SMrate=t%lhc8%XS_bb_H_SM(j)
rate_SMdyn=XS_lhc8_bb_H_SM(dynamicalmass)
rate_SMref=XS_lhc8_bb_H_SM(refmass)
mutab%channel_description(i,1)='bbH'
else if(p.eq.8) then
rate=t%lhc8%XS_thj_tchan_ratio(j)
SMrate=t%lhc8%XS_tH_tchan_SM(j)
rate_SMdyn=XS_lhc8_tH_tchan_SM(dynamicalmass)
rate_SMref=XS_lhc8_tH_tchan_SM(refmass)
mutab%channel_description(i,1)='tH (t-channel)'
else if(p.eq.9) then
rate=t%lhc8%XS_thj_schan_ratio(j)
SMrate=t%lhc8%XS_tH_schan_SM(j)
rate_SMdyn=XS_lhc8_tH_schan_SM(dynamicalmass)
rate_SMref=XS_lhc8_tH_schan_SM(refmass)
mutab%channel_description(i,1)='tH (s-channel)'
else if(p.eq.10) then
rate=t%lhc8%XS_qq_hjZ_ratio(j)
SMrate=t%lhc8%XS_qq_HZ_SM(j)
rate_SMdyn=ZH_cpmix_nnlo_qqbb(dynamicalmass,'LHC8 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
rate_SMref=ZH_cpmix_nnlo_qqbb(refmass,'LHC8 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
mutab%channel_description(i,1)='qq-HZ'
else if(p.eq.11) then
rate=t%lhc8%XS_gg_hjZ_ratio(j)
SMrate=t%lhc8%XS_gg_HZ_SM(j)
rate_SMdyn=ZH_cpmix_nnlo_gg(dynamicalmass,'LHC8 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
rate_SMref=ZH_cpmix_nnlo_gg(refmass,'LHC8 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
mutab%channel_description(i,1)='gg-HZ'
else if(p.eq.0) then
rate=1.0D0
SMrate=1.0D0
rate_SMdyn=1.0D0
rate_SMref=1.0D0
mutab%channel_description(i,1)='none'
endif
else if(abs(mutab%energy-13.0D0).le.small) then
if(p.eq.1) then
rate=t%lhc13%XS_hj_ratio(j)
SMrate=t%lhc13%XS_H_SM(j)
rate_SMdyn=XS_lhc13_gg_H_SM(dynamicalmass)+XS_lhc13_bb_H_SM(dynamicalmass)
rate_SMref=XS_lhc13_gg_H_SM(refmass) + XS_lhc13_bb_H_SM(refmass)
mutab%channel_description(i,1)='singleH'
else if(p.eq.2) then
rate=t%lhc13%XS_vbf_ratio(j)
SMrate=t%lhc13%XS_vbf_SM(j)
rate_SMdyn=XS_lhc13_vbf_SM(dynamicalmass)
rate_SMref=XS_lhc13_vbf_SM(refmass)
mutab%channel_description(i,1)='VBF'
else if(p.eq.3) then
rate=t%lhc13%XS_hjW_ratio(j)
SMrate=t%lhc13%XS_HW_SM(j)
rate_SMdyn=WH_nnlo(dynamicalmass,'LHC13',1.0D0,1.0D0,1.0D0,.True.,.True.)
rate_SMref=WH_nnlo(refmass,'LHC13',1.0D0,1.0D0,1.0D0,.True.,.True.)
mutab%channel_description(i,1)='HW'
else if(p.eq.4) then
rate=t%lhc13%XS_hjZ_ratio(j)
SMrate=t%lhc13%XS_HZ_SM(j)
rate_SMdyn=ZH_cpmix_nnlo_ggqqbb(dynamicalmass,'LHC13',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
rate_SMref=ZH_cpmix_nnlo_ggqqbb(refmass,'LHC13',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
mutab%channel_description(i,1)='HZ'
else if(p.eq.5) then
rate=t%lhc13%XS_tthj_ratio(j)
SMrate=t%lhc13%XS_ttH_SM(j)
rate_SMdyn=XS_lhc13_ttH_SM(dynamicalmass)
rate_SMref=XS_lhc13_ttH_SM(refmass)
mutab%channel_description(i,1)='ttH'
else if(p.eq.6) then
rate=t%lhc13%XS_gg_hj_ratio(j)
SMrate=t%lhc13%XS_gg_H_SM(j)
rate_SMdyn=XS_lhc13_gg_H_SM(dynamicalmass)
rate_SMref=XS_lhc13_gg_H_SM(refmass)
mutab%channel_description(i,1)='ggH'
else if(p.eq.7) then
rate=t%lhc13%XS_bb_hj_ratio(j)
SMrate=t%lhc13%XS_bb_H_SM(j)
rate_SMdyn=XS_lhc13_bb_H_SM(dynamicalmass)
rate_SMref=XS_lhc13_bb_H_SM(refmass)
mutab%channel_description(i,1)='bbH'
else if(p.eq.8) then
rate=t%lhc13%XS_thj_tchan_ratio(j)
SMrate=t%lhc13%XS_tH_tchan_SM(j)
rate_SMdyn=XS_lhc13_tH_tchan_SM(dynamicalmass)
rate_SMref=XS_lhc13_tH_tchan_SM(refmass)
mutab%channel_description(i,1)='tH (t-channel)'
else if(p.eq.9) then
rate=t%lhc13%XS_thj_schan_ratio(j)
SMrate=t%lhc13%XS_tH_schan_SM(j)
rate_SMdyn=XS_lhc13_tH_schan_SM(dynamicalmass)
rate_SMref=XS_lhc13_tH_schan_SM(refmass)
mutab%channel_description(i,1)='tH (s-channel)'
else if(p.eq.10) then
rate=t%lhc13%XS_qq_hjZ_ratio(j)
SMrate=t%lhc13%XS_qq_HZ_SM(j)
rate_SMdyn=ZH_cpmix_nnlo_qqbb(dynamicalmass,'LHC13',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
rate_SMref=ZH_cpmix_nnlo_qqbb(refmass,'LHC13',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
mutab%channel_description(i,1)='qq-HZ'
else if(p.eq.11) then
rate=t%lhc13%XS_gg_hjZ_ratio(j)
SMrate=t%lhc13%XS_gg_HZ_SM(j)
rate_SMdyn=ZH_cpmix_nnlo_gg(dynamicalmass,'LHC13',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
rate_SMref=ZH_cpmix_nnlo_gg(refmass,'LHC13',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
mutab%channel_description(i,1)='gg-HZ'
else if(p.eq.0) then
rate=1.0D0
SMrate=1.0D0
rate_SMdyn=1.0D0
rate_SMref=1.0D0
mutab%channel_description(i,1)='none'
endif
endif
else if(mutab%collider.eq.'TEV') then
if(p.eq.1) then
rate=t%tev%XS_hj_ratio(j)
SMrate=t%tev%XS_H_SM(j)
rate_SMdyn=XS_tev_gg_H_SM(dynamicalmass)+XS_tev_bb_H_SM(dynamicalmass)
rate_SMref=XS_tev_gg_H_SM(refmass)+XS_tev_bb_H_SM(refmass)
mutab%channel_description(i,1)='singleH'
else if(p.eq.2) then
rate=t%tev%XS_vbf_ratio(j)
SMrate=t%tev%XS_vbf_SM(j)
rate_SMdyn=XS_tev_vbf_SM(dynamicalmass)
rate_SMref=XS_tev_vbf_SM(refmass)
mutab%channel_description(i,1)='VBF'
else if(p.eq.3) then
rate=t%tev%XS_hjW_ratio(j)
SMrate=t%tev%XS_HW_SM(j)
rate_SMdyn=WH_nnlo(dynamicalmass,'TEV ',1.0D0,1.0D0,1.0D0,.True.,.True.)
rate_SMref=WH_nnlo(refmass,'TEV ',1.0D0,1.0D0,1.0D0,.True.,.True.)
mutab%channel_description(i,1)='HW'
else if(p.eq.4) then
rate=t%tev%XS_hjZ_ratio(j)
SMrate=t%tev%XS_HZ_SM(j)
rate_SMdyn=ZH_cpmix_nnlo_ggqqbb(dynamicalmass,'TEV ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
rate_SMref=ZH_cpmix_nnlo_ggqqbb(refmass,'TEV ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
mutab%channel_description(i,1)='HZ'
else if(p.eq.5) then
rate=t%tev%XS_tthj_ratio(j)
SMrate=t%tev%XS_ttH_SM(j)
rate_SMdyn=XS_tev_ttH_SM(dynamicalmass)
rate_SMref=XS_tev_ttH_SM(refmass)
mutab%channel_description(i,1)='ttH'
else if(p.eq.0) then
rate=1.0D0
SMrate=1.0D0
rate_SMdyn=1.0D0
rate_SMref=1.0D0
mutab%channel_description(i,1)='none'
endif
else if(mutab%collider.eq.'ILC') then
!--n.B.: As a first attempt, we use the LHC8 normalized cross sections for ZH, VBF, ttH.
! In order to do this properly, a separate input for the ILC cross sections
! has to be provided! It works only for single production mode observables (no
! correct weighting of channels included!)Then, at least in the effective coupling
! approximation, there is no difference to a full implementation.
! The theoretical uncertainty of the ILC production modes will are defined in
! usefulbits_HS.f90.
if(p.eq.1.or.p.eq.2) then
write(*,*) 'Warning: Unknown ILC production mode (',p,') in table ',mutab%id
rate=0.0D0
SMrate=1.0D0
rate_SMref=1.0D0
mutab%channel_description(i,1)='unknown'
else if(p.eq.3) then
rate=t%lhc8%XS_hjW_ratio(j)
SMrate=t%lhc8%XS_HW_SM(j)
rate_SMdyn=WH_nnlo(dynamicalmass,'LHC8 ',1.0D0,1.0D0,1.0D0,.True.,.True.)
rate_SMref=WH_nnlo(refmass,'LHC8 ',1.0D0,1.0D0,1.0D0,.True.,.True.)
mutab%channel_description(i,1)='WBF'
else if(p.eq.4) then
rate=t%lhc8%XS_hjZ_ratio(j)
SMrate=t%lhc8%XS_HZ_SM(j)
rate_SMdyn=XS_lhc8_HZ_SM(dynamicalmass)
rate_SMref=XS_lhc8_HZ_SM(refmass)
mutab%channel_description(i,1)='HZ'
else if(p.eq.5) then
rate=t%lhc8%XS_tthj_ratio(j)
SMrate=t%lhc8%XS_ttH_SM(j)
rate_SMdyn=XS_lhc8_ttH_SM(dynamicalmass)
rate_SMref=XS_lhc8_ttH_SM(refmass)
mutab%channel_description(i,1)='ttH'
else if(p.eq.0) then
rate=1.0D0
SMrate=1.0D0
rate_SMdyn=1.0D0
rate_SMref=1.0D0
mutab%channel_description(i,1)='none'
endif
endif
! write(*,*) "DEBUG, after production mode, rate_SMdyn = ",rate_SMdyn
!--Multiply now by the decay rate
if(d.eq.1) then
rate=rate*div(t%BR_hjgaga(j),t%BR_Hgaga_SM(j),0.0D0,1.0D0)
SMrate=SMrate*t%BR_Hgaga_SM(j)
rate_SMdyn = rate_SMdyn*BRSM_Hgaga(dynamicalmass)
rate_SMref = rate_SMref*BRSM_Hgaga(refmass)
mutab%channel_description(i,2)='gammagamma'
else if(d.eq.2) then
rate=rate*div(t%BR_hjWW(j),t%BR_HWW_SM(j),0.0D0,1.0D0)
SMrate=SMrate*t%BR_HWW_SM(j)
rate_SMdyn = rate_SMdyn*BRSM_HWW(dynamicalmass)
rate_SMref = rate_SMref*BRSM_HWW(refmass)
mutab%channel_description(i,2)='WW'
else if(d.eq.3) then
rate=rate*div(t%BR_hjZZ(j),t%BR_HZZ_SM(j),0.0D0,1.0D0)
SMrate=SMrate*t%BR_HZZ_SM(j)
rate_SMdyn = rate_SMdyn*BRSM_HZZ(dynamicalmass)
rate_SMref = rate_SMref*BRSM_HZZ(refmass)
mutab%channel_description(i,2)='ZZ'
else if(d.eq.4) then
rate=rate*div(t%BR_hjtautau(j),t%BR_Htautau_SM(j),0.0D0,1.0D0)
SMrate=SMrate*t%BR_Htautau_SM(j)
rate_SMdyn = rate_SMdyn*BRSM_Htautau(dynamicalmass)
rate_SMref = rate_SMref*BRSM_Htautau(refmass)
mutab%channel_description(i,2)='tautau'
else if(d.eq.5) then
rate=rate*div(t%BR_hjbb(j),t%BR_Hbb_SM(j),0.0D0,1.0D0)
SMrate=SMrate*t%BR_Hbb_SM(j)
rate_SMdyn = rate_SMdyn*BRSM_Hbb(dynamicalmass)
rate_SMref = rate_SMref*BRSM_Hbb(refmass)
mutab%channel_description(i,2)='bb'
else if(d.eq.6) then
rate=rate*div(t%BR_hjZga(j),t%BR_HZga_SM(j),0.0D0,1.0D0)
SMrate=SMrate*t%BR_HZga_SM(j)
rate_SMdyn = rate_SMdyn*BRSM_HZga(dynamicalmass)
rate_SMref = rate_SMref*BRSM_HZga(refmass)
mutab%channel_description(i,2)='Zgamma'
else if(d.eq.7) then
rate=rate*div(t%BR_hjcc(j),t%BR_Hcc_SM(j),0.0D0,1.0D0)
SMrate=SMrate*t%BR_Hcc_SM(j)
rate_SMdyn = rate_SMdyn*BRSM_Hcc(dynamicalmass)
rate_SMref = rate_SMref*BRSM_Hcc(refmass)
mutab%channel_description(i,2)='cc'
else if(d.eq.8) then
rate=rate*div(t%BR_hjmumu(j),t%BR_Hmumu_SM(j),0.0D0,1.0D0)
SMrate=SMrate*t%BR_Hmumu_SM(j)
rate_SMdyn = rate_SMdyn*BRSM_Hmumu(dynamicalmass)
rate_SMref = rate_SMref*BRSM_Hmumu(refmass)
mutab%channel_description(i,2)='mumu'
else if(d.eq.9) then
rate=rate*div(t%BR_hjgg(j),t%BR_Hgg_SM(j),0.0D0,1.0D0)
SMrate=SMrate*t%BR_Hgg_SM(j)
rate_SMdyn = rate_SMdyn*BRSM_Hgg(dynamicalmass)
rate_SMref = rate_SMref*BRSM_Hgg(refmass)
mutab%channel_description(i,2)='gg'
else if(d.eq.10) then
rate=rate*div(t%BR_hjss(j),t%BR_Hss_SM(j),0.0D0,1.0D0)
SMrate=SMrate*t%BR_Hss_SM(j)
rate_SMdyn = rate_SMdyn*BRSM_Hss(dynamicalmass)
rate_SMref = rate_SMref*BRSM_Hss(refmass)
mutab%channel_description(i,2)='ss'
else if(d.eq.11) then
rate=rate*div(t%BR_hjtt(j),t%BR_Htt_SM(j),0.0D0,1.0D0)
SMrate=SMrate*t%BR_Htt_SM(j)
rate_SMdyn = rate_SMdyn*BRSM_Htoptop(dynamicalmass)
rate_SMref = rate_SMref*BRSM_Htoptop(refmass)
mutab%channel_description(i,2)='tt'
else if(d.eq.0) then
rate=rate*1.0D0
SMrate=SMrate*1.0D0
rate_SMdyn = rate_SMdyn*1.0D0
rate_SMref = rate_SMref*1.0D0
mutab%channel_description(i,2)='none'
endif
!-------------------------
! NEW FEATURE (since HB-5.2): Enable to set channelrates directly.
if(p.ne.0.and.d.ne.0) then
select case(d)
case(1)
BR_SMref = t%BR_Hgaga_SM(j)
! BR_SMref_mpeak = BRSM_Hgaga(refmass)
case(2)
BR_SMref = t%BR_HWW_SM(j)
! BR_SMref_mpeak = BRSM_HWW(refmass)
case(3)
BR_SMref = t%BR_HZZ_SM(j)
! BR_SMref_mpeak = BRSM_HZZ(refmass)
case(4)
BR_SMref = t%BR_Htautau_SM(j)
! BR_SMref_mpeak = BRSM_Htautau(refmass)
case(5)
BR_SMref = t%BR_Hbb_SM(j)
! BR_SMref_mpeak = BRSM_Hbb(refmass)
case(6)
BR_SMref = t%BR_HZga_SM(j)
! BR_SMref_mpeak = BRSM_HZga(refmass)
case(7)
BR_SMref = t%BR_Hcc_SM(j)
! BR_SMref_mpeak = BRSM_Hcc(refmass)
case(8)
BR_SMref = t%BR_Hmumu_SM(j)
! BR_SMref_mpeak = BRSM_Hmumu(refmass)
case(9)
BR_SMref = t%BR_Hgg_SM(j)
! BR_SMref_mpeak = BRSM_Hgg(refmass)
case(10)
BR_SMref = t%BR_Hss_SM(j)
case(11)
BR_SMref = t%BR_Htt_SM(j)
end select
if(mutab%collider.eq.'LHC') then
if(abs(mutab%energy-7.0D0).le.small) then
if(t%lhc7%channelrates(j,p,d).ge.0.0d0) then
rate=div(t%lhc7%channelrates(j,p,d),BR_SMref,0.0D0,1.0D0)
endif
else if(abs(mutab%energy-8.0D0).le.small) then
if(t%lhc8%channelrates(j,p,d).ge.0.0d0) then
rate=div(t%lhc8%channelrates(j,p,d),BR_SMref,0.0D0,1.0D0)
endif
else if(abs(mutab%energy-13.0D0).le.small) then
if(t%lhc13%channelrates(j,p,d).ge.0.0d0) then
rate=div(t%lhc13%channelrates(j,p,d),BR_SMref,0.0D0,1.0D0)
endif
endif
else if(mutab%collider.eq.'TEV') then
if(t%tev%channelrates(j,p,d).ge.0.0d0) then
rate=div(t%tev%channelrates(j,p,d),BR_SMref,0.0D0,1.0D0)
endif
endif
endif
!-------------------------
! write(*,*) 'DEBUG HS: SM BRs = ', t%BR_HWW_SM(j), t%BR_HZZ_SM(j), t%BR_Hgaga_SM(j)
! write(*,*) 'DEBUG HS: rate, SMrate(i), rate_SMdyn = ', rate, SMrate, rate_SMdyn
! write(*,*) 'DEBUG HS: eff(i) = ', mutab%channel_eff(i)
if(normalize_rates_to_reference_position) then
!! THIS IS STILL IN TESTING PHASE !!
mutab%channel_mu(i,j)=rate*SMrate/(rate_SMref)
! write(*,*) "DEBUG HS: normalize_rates_to_reference_position, mu = ",mutab%channel_mu(i,j)
else
! mutab%channel_mu(i,j)=rate !! OLD WAY
mutab%channel_mu(i,j)=rate*SMrate/(rate_SMdyn) !! NEW WAY (TS 17/10/2018)
! write(*,*) "DEBUG HS: not normalize_rates_to_reference_position, mu = ",mutab%channel_mu(i,j)
endif
if(normalize_rates_to_reference_position_outside_dmtheo) then
if(abs(refmass-t%particle(mutab%particle_x)%M(j)).ge.t%particle(mutab%particle_x)%dM(j)) then
mutab%channel_mu(i,j)=rate*SMrate/(rate_SMref)
endif
endif
mutab%channel_w(i,j)=mutab%channel_eff(i)*SMrate
! mutab%channel_w_corrected_eff(i,j)=mutab%channel_eff_ratios(i)*mutab%channel_eff(i)*SMrate
enddo
! write(*,*) 'DEBUG HS: BRs = ', t%BR_hjWW, t%BR_hjZZ, t%BR_hjgaga
! write(*,*) 'DEBUG HS: LHC13 = ', t%lhc13%XS_hj_ratio, t%lhc13%XS_vbf_ratio, t%lhc13%XS_hjW_ratio,&
! t%lhc13%XS_hjZ_ratio, t%lhc13%XS_tthj_ratio
SMrate=sum(mutab%channel_w(:,j))
! write(*,*) 'DEBUG HS: SMrate = ', SMrate
! modelrate=sum(mutab%channel_w_corrected_eff(:,j))
do i=1,mutab%Nc
mutab%channel_w(i,j)=div(mutab%channel_w(i,j),SMrate,0.0D0,1.0D9)
! mutab%channel_w_corrected_eff(i,j)=div(mutab%channel_w_corrected_eff(i,j),modelrate,0.0D0,1.0D9)
enddo
! (TS 30/10/2013):
! write(*,*) "get_channelrates (mu, w, weff):"
! write(*,*) mutab%channel_mu
! write(*,*) mutab%channel_w
! write(*,*) mutab%channel_eff_ratios
do i=1,mutab%Nc
mutab%channel_w_corrected_eff(i,j)=mutab%channel_eff_ratios(i)*mutab%channel_w(i,j)
! n.b.: model weights are not normalized to 1!
enddo
! write(*,*) j,mutab%id, "SM = ", mutab%channel_w(:,j)
! write(*,*) j,mutab%id, "SM effcorr = ",mutab%channel_w_corrected_eff(:,j)
do i=1,mutab%Nc
drsq_SM = 0.0D0
drsq = 0.0D0
! id1 = mutab%channel_id(i)
! p1 = int((id1-modulo(id1,10))/dble(10))
! d1 = modulo(id1,10)
p1 = mutab%channel_p_id(i)
d1 = mutab%channel_d_id(i)
if(mutab%collider.ne.'ILC') then
do ii=1,mutab%Nc
p2 = mutab%channel_p_id(ii)
d2 = mutab%channel_d_id(ii)
! id2 = mutab%channel_id(ii)
! p2 = int((id2-modulo(id2,10))/dble(10))
! d2 = modulo(id2,10)
if(p1.eq.p2.and.p1.ne.0) then
if(delta_rate%CScov_ok.and.delta_rate%usecov) then
!-- TS 29/03/2017: Add 13 TeV XS covariance matrix here
if(abs(mutab%energy-13.0D0).le.small) then
drcov=delta_rate%CS13cov(p1,p1)
drcovSM=delta_rate%CS13covSM(p1,p1)
else
drcov=delta_rate%CScov(p1,p1)
drcovSM=delta_rate%CScovSM(p1,p1)
endif
drsq=drsq+drcov*mutab%channel_w_corrected_eff(i,j)*mutab%channel_w_corrected_eff(ii,j)
drsq_SM=drsq_SM+drcovSM*mutab%channel_w(i,j)*mutab%channel_w(ii,j)
else
drsq=drsq+delta_rate%dCS(p1)**2*mutab%channel_w_corrected_eff(i,j)*mutab%channel_w_corrected_eff(ii,j)
drsq_SM=drsq_SM+delta_rate%dCS_SM(p1)**2*mutab%channel_w(i,j)*mutab%channel_w(ii,j)
endif
endif
if(d1.eq.d2.and.d1.ne.0) then
if(delta_rate%BRcov_ok.and.delta_rate%usecov) then
dBRSM = delta_rate%BRcovSM(d1,d1)
dBR = delta_rate%BRcov(d1,d1)
else
dBRSM = delta_rate%dBR_SM(d1)**2
dBR = delta_rate%dBR(d1)**2
endif
drsq=drsq+dBR*mutab%channel_w_corrected_eff(i,j)*mutab%channel_w_corrected_eff(ii,j)
drsq_SM=drsq_SM+dBRSM*mutab%channel_w(i,j)*mutab%channel_w(ii,j)
endif
enddo
endif
mutab%channel_syst(i,j)=sqrt(drsq)
mutab%channel_systSM(i,j)=sqrt(drsq_SM)
enddo
! write(*,*) 'DEBUG HS: mu = ', mutab%channel_mu
! write(*,*) 'DEBUG HS: w = ', mutab%channel_w
! write(*,*) 'DEBUG HS: eff = ', mutab%channel_eff
end subroutine get_channelrates
!------------------------------------------------------------
subroutine get_Rvalues(ii,collider,R_H_WW, R_H_ZZ, R_H_gaga, R_H_tautau, R_H_bb, R_VH_bb)
! Returns SM normalized signal rates of some relevant channels (w/o efficiencies)
! for Higgs boson "ii" for a specific collider (see subroutine get_rates).
!------------------------------------------------------------
! use usefulbits, only : theo, np,Hneut
! use usefulbits_HS, only : mutable
integer, intent(in) :: ii, collider
double precision, intent(out) :: R_H_WW, R_H_ZZ, R_H_gaga, R_H_tautau, R_H_bb, R_VH_bb
! type(mutable) :: dummytable
! integer :: i
call get_rates(ii,collider,5,(/ 12, 22, 32, 42, 52 /),R_H_WW)
call get_rates(ii,collider,5,(/ 13, 23, 33, 43, 53 /),R_H_ZZ)
call get_rates(ii,collider,5,(/ 11, 21, 31, 41, 51 /),R_H_gaga)
call get_rates(ii,collider,5,(/ 14, 24, 34, 44, 54 /),R_H_tautau)
call get_rates(ii,collider,5,(/ 15, 25, 35, 45, 55 /),R_H_bb)
call get_rates(ii,collider,2,(/ 35, 45 /),R_VH_bb)
end subroutine get_Rvalues
!************************************************************
subroutine get_rates(ii,collider,Nchannels,IDchannels,rate)
! Returns SM normalized signal rates (w/o efficiencies) for Higgs boson "ii" and collider
! experiment "collider"(=1,2,3 for TEV, LHC7, LHC8). "Nchannels" gives the total number
! and IDchannels the two-digit ID of the subchannels, which should be included in the rates.
! IDchannels is an array of size(Nchannels).
!------------------------------------------------------------
use usefulbits, only : theo, np,Hneut
use usefulbits_HS, only : mutable
integer, intent(in) :: ii, collider, Nchannels
integer, dimension(Nchannels), intent(in) :: IDchannels
double precision, intent(out) :: rate
!-Internal
type(mutable) :: dummytable
integer :: i
!-Initialize a dummy mutable in order to run get_channelrates for the channels we want.
if(collider.eq.1) then
dummytable%collider = 'TEV'
else if(collider.eq.2) then
dummytable%collider = 'LHC'
dummytable%energy = 7.0D0
else if(collider.eq.3) then
dummytable%collider = 'LHC'
dummytable%energy = 8.0D0
else if(collider.eq.4) then
dummytable%collider = 'LHC'
dummytable%energy = 13.0D0
else
write(*,*) 'WARNING: collider experiment for get_rates unknown.'
continue
endif
dummytable%id = 999999
dummytable%particle_x = 1
dummytable%Nc=Nchannels
allocate(dummytable%mass(1))
dummytable%mass(1) = theo(1)%particle(dummytable%particle_x)%M(ii)
! allocate(dummytable%channel_id(Nchannels))
allocate(dummytable%channel_p_id(Nchannels))
allocate(dummytable%channel_d_id(Nchannels))
allocate(dummytable%channel_eff(Nchannels))
allocate(dummytable%channel_eff_ratios(Nchannels))
!-Set all efficiencies equal:
dummytable%channel_eff = 1.0D0
dummytable%channel_eff_ratios = 1.0D0
allocate(dummytable%channel_description(Nchannels,2))
allocate(dummytable%channel_w(Nchannels,np(Hneut)))
allocate(dummytable%channel_w_corrected_eff(Nchannels,np(Hneut)))
allocate(dummytable%channel_systSM(Nchannels,np(Hneut)))
allocate(dummytable%channel_syst(Nchannels,np(Hneut)))
allocate(dummytable%channel_mu(Nchannels,np(Hneut)))
do i=1,Nchannels
if(IDchannels(i).le.99) then
dummytable%channel_p_id(i) = int((IDchannels(i)-modulo(id,10))/dble(10))
dummytable%channel_d_id(i) = modulo(IDchannels(i),10)
else
write(*,*) "Error in get_rates: channel-ID not supported. Use get_rates_str instead!"
endif
enddo
call get_channelrates(ii, theo(1), dummytable)
rate=0.0D0
do i=lbound(dummytable%channel_mu,dim=1),ubound(dummytable%channel_mu,dim=1)
rate = rate + dummytable%channel_mu(i,ii)*dummytable%channel_w(i,ii)
enddo
deallocate(dummytable%channel_p_id,dummytable%channel_d_id,dummytable%channel_eff,&
& dummytable%channel_w,dummytable%channel_systSM,dummytable%channel_syst, &
& dummytable%channel_mu,dummytable%channel_eff_ratios,dummytable%channel_description, &
& dummytable%channel_w_corrected_eff,dummytable%mass)
end subroutine get_rates
!************************************************************
subroutine get_rates_str(ii,collider,Nchannels,IDchannels_str,rate)
! Returns SM normalized signal rates (w/o efficiencies) for Higgs boson "ii" and collider
! experiment "collider"(=1,2,3 for TEV, LHC7, LHC8). "Nchannels" gives the total number
! and IDchannels_str the channel ID string of the subchannels, which should be included in the rates.
! IDchannels_str is an array of size(Nchannels).
!------------------------------------------------------------
use usefulbits, only : theo, np,Hneut
use usefulbits_HS, only : mutable
integer, intent(in) :: ii, collider, Nchannels
character(LEN=*), dimension(Nchannels), intent(in) :: IDchannels_str
double precision, intent(out) :: rate
!-Internal
type(mutable) :: dummytable
integer :: i,id,posperiod
!-Initialize a dummy mutable in order to run get_channelrates for the channels we want.
if(collider.eq.1) then
dummytable%collider = 'TEV'
else if(collider.eq.2) then
dummytable%collider = 'LHC'
dummytable%energy = 7.0D0
else if(collider.eq.3) then
dummytable%collider = 'LHC'
dummytable%energy = 8.0D0
else if(collider.eq.4) then
dummytable%collider = 'LHC'
dummytable%energy = 13.0D0
else
write(*,*) 'WARNING: collider experiment for get_rates unknown.'
continue
endif
dummytable%id = 999999
dummytable%particle_x = 1
dummytable%Nc=Nchannels
allocate(dummytable%mass(1))
dummytable%mass(1) = theo(1)%particle(dummytable%particle_x)%M(ii)
! allocate(dummytable%channel_id(Nchannels))
allocate(dummytable%channel_p_id(Nchannels))
allocate(dummytable%channel_d_id(Nchannels))
allocate(dummytable%channel_eff(Nchannels))
allocate(dummytable%channel_eff_ratios(Nchannels))
!-Set all efficiencies equal:
dummytable%channel_eff = 1.0D0
dummytable%channel_eff_ratios = 1.0D0
allocate(dummytable%channel_description(Nchannels,2))
allocate(dummytable%channel_w(Nchannels,np(Hneut)))
allocate(dummytable%channel_w_corrected_eff(Nchannels,np(Hneut)))
allocate(dummytable%channel_systSM(Nchannels,np(Hneut)))
allocate(dummytable%channel_syst(Nchannels,np(Hneut)))
allocate(dummytable%channel_mu(Nchannels,np(Hneut)))
! do i = 1,Nchannels
! write(*,*) i, IDchannels_str(i)
! enddo
do i=1,Nchannels
posperiod = index(IDchannels_str(i),'.')
! write(*,*) IDchannels_str(i)
if(posperiod.eq.0) then
if(len(trim(adjustl(IDchannels_str(i)))).eq.2) then
read(IDchannels_str(i),*) id
dummytable%channel_p_id(i) = int((id-modulo(id,10))/dble(10))
dummytable%channel_d_id(i) = modulo(id,10)
else
stop " Error in get_rates_str: Cannot handle channel IDs!"
endif
else
! write(*,*) dummytable%channel_p_id(i), dummytable%channel_d_id(i)
read(IDchannels_str(i)(:posperiod-1),*) dummytable%channel_p_id(i)
read(IDchannels_str(i)(posperiod+1:),*) dummytable%channel_d_id(i)
endif
enddo
! write(*,*) dummytable%channel_p_id, dummytable%channel_d_id
call get_channelrates(ii, theo(1), dummytable)
rate=0.0D0
do i=lbound(dummytable%channel_mu,dim=1),ubound(dummytable%channel_mu,dim=1)
rate = rate + dummytable%channel_mu(i,ii)*dummytable%channel_w(i,ii)
enddo
deallocate(dummytable%channel_p_id,dummytable%channel_d_id,dummytable%channel_eff,&
& dummytable%channel_w,dummytable%channel_systSM,dummytable%channel_syst, &
& dummytable%channel_mu,dummytable%channel_eff_ratios,dummytable%channel_description, &
& dummytable%channel_w_corrected_eff,dummytable%mass)
end subroutine get_rates_str
!------------------------------------------------------------
subroutine get_Pvalue(nparam, Pvalue)
! Calculates the Chi^2 probability for the total Chi^2 value
! and the number of degrees of freedom given by the
! number of observables - nparam
!------------------------------------------------------------
use usefulbits, only : vsmall
use usefulbits_hs, only: HSres
use numerics
implicit none
integer, intent(in) :: nparam
double precision, intent(out) :: Pvalue
if(allocated(HSres)) then
if(HSres(1)%Chisq.gt.vsmall.and.(HSres(1)%nobs-nparam).gt.0) then
HSres(1)%Pvalue = 1 - gammp(dble(HSres(1)%nobs-nparam)/2,HSres(1)%Chisq/2)
endif
else
write(*,*) "Warning: subroutine get_Pvalue should be called after run_HiggsSignals."
endif
Pvalue = HSres(1)%Pvalue
end subroutine get_Pvalue
!------------------------------------------------------------
subroutine get_neutral_Higgs_masses(Mh, dMh)
! Sets the theoretical mass uncertainty of the Higgs bosons.
!------------------------------------------------------------
use usefulbits, only: theo,np,Hneut
implicit none
double precision,intent(out) :: Mh(np(Hneut)), dMh(np(Hneut))
if(.not.allocated(theo))then
stop 'No model information given!'
endif
if(np(Hneut).eq.0)then
write(*,*)'Cannot access the neutral Higgs boson masses'
write(*,*)'because np(Hneut) == 0.'
stop 'error in subroutine get_neutral_Higgs_masses'
endif
Mh = theo(1)%particle(Hneut)%M
dMh = theo(1)%particle(Hneut)%dM
end subroutine get_neutral_Higgs_masses
!------------------------------------------------------------
subroutine complete_HS_results()
!------------------------------------------------------------
use usefulbits, only : just_after_run, ndat
use usefulbits_HS, only : HSres, Nparam
use numerics, only : gammp
integer :: n
if(just_after_run) then
do n=1,ndat
HSres(n)%Chisq_mu = HSres(n)%Chisq_peak_mu + & !HSres(n)%Chisq_mpred + &
& HSres(n)%Chisq_STXS_rates + HSres(n)%Chisq_LHCRun1_mu
HSres(n)%Chisq_mh = HSres(n)%Chisq_peak_mh + HSres(n)%Chisq_LHCRun1_mh + &
& HSres(n)%Chisq_STXS_mh
HSres(n)%Chisq_STXS = HSres(n)%Chisq_STXS_rates + HSres(n)%Chisq_STXS_mh
HSres(n)%Chisq_peak = HSres(n)%Chisq_peak_mu + HSres(n)%Chisq_peak_mh
HSres(n)%Chisq_LHCRun1 = HSres(n)%Chisq_LHCRun1_mu + HSres(n)%Chisq_LHCRun1_mh
HSres(n)%Chisq = HSres(n)%Chisq_mu + HSres(n)%Chisq_mh
HSres(n)%nobs_mu = HSres(n)%nobs_peak_mu + &!HSres(n)%nobs_mpred + &
& HSres(n)%nobs_LHCRun1_mu + HSres(n)%nobs_STXS_rates
HSres(n)%nobs_mh = HSres(n)%nobs_peak_mh + HSres(n)%nobs_LHCRun1_mh + &
& HSres(n)%nobs_STXS_mh
HSres(n)%nobs_peak = HSres(n)%nobs_peak_mu + HSres(n)%nobs_peak_mh
HSres(n)%nobs_STXS = HSres(n)%nobs_STXS_rates + HSres(n)%nobs_STXS_mh
HSres(n)%nobs_LHCRun1 = HSres(n)%nobs_LHCRun1_mu + HSres(n)%nobs_LHCRun1_mh
HSres(n)%nobs = HSres(n)%nobs_mu + HSres(n)%nobs_mh
if(HSres(n)%Chisq.gt.vsmall.and.(HSres(n)%nobs-Nparam).gt.0) then
HSres(n)%Pvalue=1 - gammp(dble(HSres(n)%nobs-Nparam)/2.0D0,HSres(n)%Chisq/2.0D0)
endif
if(HSres(n)%Chisq_peak.gt.vsmall.and.(HSres(n)%nobs_peak-Nparam).gt.0) then
HSres(n)%Pvalue_peak=1 - gammp(dble(HSres(n)%nobs_peak-Nparam)/2.0D0,HSres(n)%Chisq_peak/2.0D0)
endif
if(HSres(n)%Chisq_LHCRun1.gt.vsmall.and.(HSres(n)%nobs_LHCRun1-Nparam).gt.0) then
HSres(n)%Pvalue_LHCRun1=1 - gammp(dble(HSres(n)%nobs_LHCRun1-Nparam)/2.0D0,HSres(n)%Chisq_LHCRun1/2.0D0)
endif
if(HSres(n)%Chisq_STXS.gt.vsmall.and.(HSres(n)%nobs_STXS-Nparam).gt.0) then
HSres(n)%Pvalue_STXS=1 - gammp(dble(HSres(n)%nobs_STXS-Nparam)/2.0D0,HSres(n)%Chisq_STXS/2.0D0)
endif
enddo
else
write(*,*) "Warning: complete_HS_results was called but just_after_run is", just_after_run
endif
!------------------------------------------------------------
end subroutine complete_HS_results
!------------------------------------------------------------
subroutine finish_HiggsSignals
! This subroutine needs to be called right at the end, to close files
! and deallocate arrays
!------------------------------------------------------------
use usefulbits, only : deallocate_usefulbits,debug,theo,debug, &!,inputsub
& file_id_debug1,file_id_debug2
use S95tables, only : deallocate_Exptranges
use theory_BRfunctions, only : deallocate_BRSM
use datatables, only : deallocate_observables
use usefulbits_HS, only : deallocate_usefulbits_HS, analyses
use mc_chisq, only : deallocate_mc_observables
use store_pathname_HS
!#if defined(NAGf90Fortran)
! use F90_UNIX_IO, only : flush
!#endif
if(debug)then
close(file_id_debug2)
close(file_id_debug1)
endif
if(debug) write(*,*)'finishing off...' ; call flush(6)
if(.not.allocated(theo))then
! stop 'HiggsBounds_initialize should be called first'
if(debug) write(*,*) "HiggsBounds/HiggsSignals internal structure already deallocated!"
else
call deallocate_BRSM
call deallocate_Exptranges
call deallocate_usefulbits
! if (allocated(inputsub)) deallocate(inputsub)
endif
! write(*,*) "before deallocate mc observables."
call deallocate_mc_observables
! write(*,*) "after deallocate mc observables."
call deallocate_observables
if(allocated(analyses)) deallocate(analyses)
call deallocate_usefulbits_HS
! call system('rm -f '//trim(adjustl(pathname_HS))//'Expt_tables/analyses.txt')
call system('rm -f HS_analyses.txt')
if(debug) write(*,*)'finished' ; call flush(6)
end subroutine finish_HiggsSignals
!------------------------------------------------------------
subroutine finish_HiggsSignals_only
!------------------------------------------------------------
use datatables, only : deallocate_observables
use usefulbits_HS, only : deallocate_usefulbits_HS, analyses
use mc_chisq, only : deallocate_mc_observables
use store_pathname_HS
call deallocate_mc_observables
call deallocate_observables
if(allocated(analyses)) deallocate(analyses)
call deallocate_usefulbits_HS
call system('rm -f HS_analyses.txt')
end subroutine finish_HiggsSignals_only
!------------------------------------------------------------
! SOME HANDY WRAPPER SUBROUTINES
!------------------------------------------------------------
subroutine initialize_HiggsSignals_for_Fittino(nHiggsneut,nHiggsplus)
!------------------------------------------------------------
! Wrapper subroutine to intitialize HiggsSignals with the experimental
! dataset "latestresults", avoiding to specify this via a string argument.
!------------------------------------------------------------
implicit none
!--------------------------------------input
integer,intent(in) :: nHiggsneut
integer,intent(in) :: nHiggsplus
! character(LEN=19) :: Expt_string
character(LEN=33) :: Expt_string
! Expt_string = "Moriond2013_Fittino"
Expt_string = "latestresults_April2013_inclusive"
call initialize_HiggsSignals(nHiggsneut,nHiggsplus,Expt_string)
end subroutine initialize_HiggsSignals_for_Fittino
!------------------------------------------------------------
subroutine get_number_of_observables_wrapper(ntotal, npeakmu, npeakmh, nmpred, nanalyses)
!------------------------------------------------------------
use io, only : get_number_of_observables
implicit none
integer, intent(out) :: ntotal, npeakmu, npeakmh, nmpred, nanalyses
call get_number_of_observables(ntotal, npeakmu, npeakmh, nmpred, nanalyses)
end subroutine get_number_of_observables_wrapper
!------------------------------------------------------------
subroutine get_ID_of_peakobservable_wrapper(ii, ID)
!------------------------------------------------------------
use io, only : get_ID_of_peakobservable
implicit none
integer, intent(in) :: ii
integer, intent(out) :: ID
call get_ID_of_peakobservable(ii, ID)
end subroutine get_ID_of_peakobservable_wrapper
!------------------------------------------------------------
subroutine get_peakinfo_from_HSresults_wrapper(obsID, mupred, domH, nHcomb)
!--------------------------------------------------------------------
use io, only : get_peakinfo_from_HSresults
implicit none
integer, intent(in) :: obsID
double precision, intent(out) :: mupred
integer, intent(out) :: domH, nHcomb
call get_peakinfo_from_HSresults(obsID, mupred, domH, nHcomb)
end subroutine get_peakinfo_from_HSresults_wrapper
!------------------------------------------------------------
subroutine print_cov_mh_to_file_wrapper(Hindex)
!------------------------------------------------------------
use pc_chisq, only : print_cov_mh_to_file
implicit none
integer, intent(in) :: Hindex
call print_cov_mh_to_file(Hindex)
end subroutine print_cov_mh_to_file_wrapper
!------------------------------------------------------------
subroutine print_cov_mu_to_file_wrapper
!------------------------------------------------------------
use pc_chisq, only : print_cov_mu_to_file
implicit none
call print_cov_mu_to_file
end subroutine print_cov_mu_to_file_wrapper
!------------------------------------------------------------
subroutine print_corr_mu_to_file_wrapper
!------------------------------------------------------------
use pc_chisq, only : print_corr_mu_to_file
implicit none
call print_corr_mu_to_file
end subroutine print_corr_mu_to_file_wrapper
!------------------------------------------------------------
Index: trunk/HiggsSignals-2/mc_chisq.f90
===================================================================
--- trunk/HiggsSignals-2/mc_chisq.f90 (revision 593)
+++ trunk/HiggsSignals-2/mc_chisq.f90 (revision 594)
@@ -1,1084 +1,1084 @@
!--------------------------------------------------------------------
! This file is part of HiggsSignals (TS 03/03/2013)
!--------------------------------------------------------------------
module mc_chisq
use numerics
use combinatorics
use usefulbits_hs
implicit none
integer :: mc_mode = 1
! mc_mode = 1 -> (default) Mass scan for theoretical mass uncertainty
! mc_mode = 2 -> mu-plot smearing for theoretical mass uncertainty
contains
!--------------------------------------------------------------------
subroutine print_mc_observables
!--------------------------------------------------------------------
implicit none
integer :: i, j, k
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
write(*,*)
write(*,*) '#*************************************************************************#'
write(*,'(A,I3,A,I3,A)') ' # Analysis ',i,' #'
write(*,*) '#*************************************************************************#'
write(*,'(A25,1I10)') 'ID =', analyses(i)%table%id
write(*,'(A25,4X,A3)') 'Collaboration =', analyses(i)%table%collaboration
write(*,'(A25,4X,F6.2)') 'cms energy =', analyses(i)%table%energy
write(*,'(A25,4X,A100)') 'Reference =', analyses(i)%table%label
write(*,'(A25,4X,A100)') 'Description =', analyses(i)%table%desc
do j=lbound(analyses(i)%mpred%mp_Higgses,dim=1),&
& ubound(analyses(i)%mpred%mp_Higgses,dim=1)
write(*,*)'#--------------------- pred. mass centered observable --------------------#'
write(*,'(A25,4X,F10.2)') 'Higgs mass =', analyses(i)%mpred%mp_Higgses(j)%m
write(*,'(A25,4X,F10.2)') 'Higgs mass uncertainty =',analyses(i)%mpred%mp_Higgses(j)%dm
write(*,'(A25,4X,F10.6)') 'Pred. signal strength =',analyses(i)%mpred%mp_Higgses(j)%mu
write(*,'(A25,4X,I10)') 'Combined Higgses =',&
& size(analyses(i)%mpred%mp_Higgses(j)%Higgses,dim=1)
do k=lbound(analyses(i)%mpred%mp_Higgses(j)%Higgses,dim=1),&
& ubound(analyses(i)%mpred%mp_Higgses(j)%Higgses,dim=1)
write(*,'(A5,I2,A18,4X,3F10.4)') 'Higgs ',k,' (m, dm, mu) =', &
& analyses(i)%mpred%mp_Higgses(j)%Higgses(k)%m,&
& analyses(i)%mpred%mp_Higgses(j)%Higgses(k)%dm,&
& analyses(i)%mpred%mp_Higgses(j)%Higgses(k)%mu
enddo
write(*,'(A25,4X,F10.6)') 'obs. mass value =', analyses(i)%mpred%mp_Higgses(j)%m_obs
write(*,'(A25,4X,F10.6)') 'obs. signal strength =',&
& analyses(i)%mpred%mp_Higgses(j)%mu_obs
write(*,'(A25,4X,2F10.6)') 'cyan band(low,high) =',&
& analyses(i)%mpred%mp_Higgses(j)%dmu_low_obs,analyses(i)%mpred%mp_Higgses(j)%dmu_up_obs
write(*,'(A25,4X,2F10.6)') 'dmu0 (low,high) =',&
& analyses(i)%mpred%mp_Higgses(j)%dmu_low0_obs,&
& analyses(i)%mpred%mp_Higgses(j)%dmu_up0_obs
write(*,'(A25,4X,F10.6)') 'Chisq =', analyses(i)%mpred%mp_Higgses(j)%chisq
enddo
enddo
end subroutine print_mc_observables
!--------------------------------------------------------------------
subroutine print_mc_observables_essentials
!--------------------------------------------------------------------
implicit none
integer :: i, j, k
do i=lbound(obs,dim=1),ubound(obs,dim=1)
if(obs(i)%obstype.eq.2) then
write(*,*)
write(*,*) '#*************************************************************************#'
write(*,'(A,I3,A,I3,A)') ' # Mass-centered Observable ',i,&
&' #'
write(*,*) '#*************************************************************************#'
write(*,'(A25,1I10)') 'ID =', obs(i)%id
write(*,'(A25,4X,A3)') 'Collaboration =', obs(i)%table%collaboration
write(*,'(A25,4X,F6.2)') 'cms energy =', obs(i)%table%energy
write(*,'(A25,4X,A100)') 'Reference =', obs(i)%table%label
write(*,'(A25,4X,A100)') 'Description =', obs(i)%table%desc
write(*,'(A25,4X,1F5.2,A3,1F5.2)') 'luminosity, lum. error =',&
& obs(i)%table%lumi,', ',obs(i)%table%dlumi
write(*,'(A25,1X,A2,1F7.2,A1,1F7.2,A4,1F5.2)') 'mass range, separation =','[ ',&
& obs(i)%table%xmin,',',obs(i)%table%xmax,' ], ',obs(i)%table%sep
write(*,'(A25,1F10.2)') 'mass resolution =',obs(i)%table%deltam
write(*,*)'#------------------------ Channel information ----------------------------#'
write(*,*)' p,d-ID prod. decay efficiency'
write(*,*)'#-------------------------------------------------------------------------#'
do k=1, obs(i)%table%Nc
write(*,'(1I5,5X,2A,1F15.6)') obs(i)%table%channel_p_id(k),obs(i)%table%channel_d_id(k), &
& obs(i)%table%channel_description(k,:),obs(i)%table%channel_eff(k)
enddo
write(*,*)'#-------------------------------------------------------------------------#'
endif
enddo
end subroutine print_mc_observables_essentials
!--------------------------------------------------------------------
subroutine print_mc_tables_to_file
!--------------------------------------------------------------------
use usefulbits, only : file_id_common3
use usefulbits_hs, only : StrCompress
implicit none
character(LEN=100) :: formatspec
integer :: i,kk
formatspec='(I3,7X,I10,1X,4F7.2,1X,A3,1X,F6.2,1X,F6.2,1X,A,5X,A)'
open(file_id_common3,file="mctables_information.txt")
write(file_id_common3,*) "#HiggsSignals-"//trim(adjustl(HSvers))// &
& " with experimental dataset '"//trim(adjustl(Exptdir))//"'"
write(file_id_common3,*) "#Number Analysis-ID mh_min mh_max mh_sep",&
& " dmh_exp collaboration energy luminosity description reference"
write(file_id_common3,*) "#"
kk=0
do i=lbound(obs,dim=1),ubound(obs,dim=1)
if(obs(i)%obstype.eq.2) then
kk=kk+1
write(file_id_common3,formatspec)kk,obs(i)%id,obs(i)%table%xmin, &
& obs(i)%table%xmax,obs(i)%table%sep,obs(i)%table%deltam,obs(i)%table%collaboration,&
& obs(i)%table%energy,obs(i)%table%lumi,trim(strcompress(obs(i)%table%desc)),&
& obs(i)%table%label
endif
enddo
close(file_id_common3)
end subroutine print_mc_tables_to_file
!------------------------------------------------------------------------------------
subroutine print_mc_observables_to_file
!------------------------------------------------------------------------------------
use usefulbits, only : file_id_common3
use usefulbits_hs, only : HSres
implicit none
character(LEN=100) :: formatspec !,formatspec2
integer :: i,j,kk
double precision :: mu_pull, dmu
kk=0
formatspec='(I3,7X,I10,1X,3F8.2,1X,I3,1X4F8.2)'
! formatspec2='(I3,7X,I10,1X,2F8.2,1X,A7,1X,A7,1X,A7,1X,5F10.4)'
open(file_id_common3,file="mcobservables_information.txt")
write(file_id_common3,*) "#HiggsSignals-"//trim(adjustl(HSvers))// &
& " with experimental dataset '"//trim(adjustl(Exptdir))//"'"
write(file_id_common3,*) "#pull = (predicted - observed)/(gaussian uncertainty)"
write(file_id_common3,*) "#Number Analysis-ID m(pred) dm(pred) mu(pred) ncomb m(obs)",&
& " mu(obs) dmu mu_pull"
write(file_id_common3,*) "#"
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do j=lbound(analyses(i)%mpred%mp_Higgses,dim=1),&
& ubound(analyses(i)%mpred%mp_Higgses,dim=1)
kk=kk+1
if(analyses(i)%mpred%mp_Higgses(j)%mu.ge.analyses(i)%mpred%mp_Higgses(j)%mu_obs) then
dmu = analyses(i)%mpred%mp_Higgses(j)%dmu_up_obs
else
dmu = analyses(i)%mpred%mp_Higgses(j)%dmu_low_obs
endif
mu_pull = (analyses(i)%mpred%mp_Higgses(j)%mu - &
& analyses(i)%mpred%mp_Higgses(j)%mu_obs)/dmu
write(file_id_common3,formatspec)kk,analyses(i)%id, &
& analyses(i)%mpred%mp_Higgses(j)%m, &
& analyses(i)%mpred%mp_Higgses(j)%dm, &
& analyses(i)%mpred%mp_Higgses(j)%mu, &
& size(analyses(i)%mpred%mp_Higgses(j)%Higgses,dim=1), &
! combination code here!
& analyses(i)%mpred%mp_Higgses(j)%m_obs, &
& analyses(i)%mpred%mp_Higgses(j)%mu_obs, &
& dmu, &
& mu_pull
enddo
enddo
close(file_id_common3)
end subroutine print_mc_observables_to_file
!--------------------------------------------------------------------
subroutine fill_mp_obs(ii)
!--------------------------------------------------------------------
implicit none
integer, intent(in) :: ii
type(mp_neutHiggs), allocatable :: mp_H(:), mp_H_tmp(:)
integer :: i,j,finished_combination,N
!-Check if the Higgs is in the relevant mass region of the table
! and then tag it to be tested.
N=0 ! = number of relevant Higgs bosons
do i=lbound(analyses(ii)%Higgses,dim=1),ubound(analyses(ii)%Higgses,dim=1)
if(analyses(ii)%Higgses(i)%m.ge.analyses(ii)%table%xmin.and.&
& analyses(ii)%Higgses(i)%m.le.analyses(ii)%table%xmax) then
if(analyses(ii)%Higgses(i)%mp_test.eq.1) then
analyses(ii)%Higgses(i)%mp_test=1
N=N+1
endif
else
analyses(ii)%Higgses(i)%mp_test=0
endif
enddo
!! write(*,*) "Analysis ID = ", analyses(ii)%table%id
!! write(*,*) "Higgs masses = ", analyses(ii)%Higgses(:)%m
!! write(*,*) "Higgs mass uncertainties = ", analyses(ii)%Higgses(:)%dm
!! write(*,*) "Tested with mp method = ", analyses(ii)%Higgses(:)%mp_test
!! if(N.eq.0) allocate(analyses(ii)%mpred%mp_Higgses(0))
!-First, throw all relevant single Higgses into mp_H.
allocate(mp_H(N))
j=0
do i=lbound(analyses(ii)%Higgses,dim=1),ubound(analyses(ii)%Higgses,dim=1)
if(analyses(ii)%Higgses(i)%mp_test.eq.1) then
j=j+1
allocate(mp_H(j)%Higgses(1))
mp_H(j)%Higgses(1)=analyses(ii)%Higgses(i)
mp_H(j)%m=analyses(ii)%Higgses(i)%m
mp_H(j)%dm=analyses(ii)%Higgses(i)%dm
mp_H(j)%mu=analyses(ii)%Higgses(i)%mu
mp_H(j)%mp_test=analyses(ii)%Higgses(i)%mp_test
endif
enddo
!-Do the Stockholm Clustering
finished_combination=-1
do while(finished_combination.ne.1)
!-For debugging
! write(*,*) " "
! write(*,*) " NEW LOOP "
! write(*,*) " "
! do j=lbound(mp_H,dim=1),ubound(mp_H,dim=1)
! write(*,*) "#----------- mp_H(",j,") ------------"
! write(*,*) "number of combined Higgses = ", size(mp_H(j)%Higgses,dim=1)
! write(*,*) "mp_H(j)%m = ", mp_H(j)%m
! write(*,*) "mp_H(j)%dm = ", mp_H(j)%dm
! write(*,*) "mp_H(j)%mu = ", mp_H(j)%mu
! write(*,*) "mp_H(j)%mp_test = ", mp_H(j)%mp_test
! enddo
!-END for debugging
call combine_Higgses(mp_H, mp_H_tmp, analyses(ii)%table, finished_combination)
if(finished_combination.ne.1) then
do i=lbound(mp_H,dim=1),ubound(mp_H,dim=1)
deallocate(mp_H(i)%Higgses)
enddo
deallocate(mp_H)
allocate(mp_H(size(mp_H_tmp,dim=1)))
do i=lbound(mp_H_tmp,dim=1),ubound(mp_H_tmp,dim=1)
allocate(mp_H(i)%Higgses(size(mp_H_tmp(i)%Higgses,dim=1)))
mp_H(i)%Higgses = mp_H_tmp(i)%Higgses
mp_H(i)%m = mp_H_tmp(i)%m
mp_H(i)%dm = mp_H_tmp(i)%dm
mp_H(i)%mu = mp_H_tmp(i)%mu
mp_H(i)%mp_test = mp_H_tmp(i)%mp_test
deallocate(mp_H_tmp(i)%Higgses)
enddo
deallocate(mp_H_tmp)
endif
enddo
!-Two possible choices to parametrize the theoretical uncertainty:
! (i) select the mu-obs value yielding lowest chi^2 (within box or including a chi^2
! penalty from mass (gaussian)):
! call scan_mutable(analyses(ii)%table, mp_H)
! (ii) convolve (smear) the observed mu values with Higgs mass pdf:
if(mc_mode.eq.2) call smear_mutable(analyses(ii)%table, mp_H)
! Fill mp_obs
allocate(analyses(ii)%mpred%mp_Higgses(size(mp_H)))
do i=lbound(mp_H,dim=1),ubound(mp_H,dim=1)
allocate(analyses(ii)%mpred%mp_Higgses(i)%Higgses(size(mp_H(i)%Higgses,dim=1)))
analyses(ii)%mpred%mp_Higgses(i)%Higgses = mp_H(i)%Higgses
analyses(ii)%mpred%mp_Higgses(i) = mp_H(i)
analyses(ii)%mpred%mp_Higgses(i)%Higgscomb = Higgscomb_key(mp_H(i)%Higgses)
enddo
end subroutine fill_mp_obs
!----------------------------------------------------------------------
subroutine scan_mutable(table, mp_H)
!----------------------------------------------------------------------
use datatables, only : interpolate_mutable
use usefulbits, only : vsmall, small
implicit none
type(mutable), intent(in) :: table
type(mp_neutHiggs), dimension(:), intent(inout) :: mp_H
integer :: i,j,imin,imax,col,step
double precision :: mh, val(3), norm, boxstart, boxend, chisq, minchisq, mu_selected(3),&
& mh_selected, dm, dmu
step = 10
call check_pdf
imin = lbound(table%mu,dim=1)
imax = ubound(table%mu,dim=1)
do j=lbound(mp_H,dim=1),ubound(mp_H,dim=1)
boxstart = mp_H(j)%m - mp_H(j)%dm
boxend = mp_H(j)%m + mp_H(j)%dm
if(boxstart.eq.boxend) then
!--this is the case for no theory uncertainty. Increase box bounding by one step's separation.
boxstart = boxstart - table%sep/step
boxend = boxend + table%sep/step
endif
minchisq =vlarge
do i= imin, step*imax
mh = table%xmin+(i-1)*table%sep/step
call interpolate_mutable(val, mh, table, step)
select case(pdf)
case(1,3)
!---box theory uncertainty
if(mh.ge.boxstart.and.mh.le.boxend) then
call get_lower_or_upper_value_difference(dmu,mp_H(j)%mu,val)
chisq = (mp_H(j)%mu - val(2))**2/dmu**2
if(chisq.le.minchisq) then
minchisq = chisq
mh_selected = mh
mu_selected = val
endif
else
chisq=vlarge
endif
case(2)
!---gaussian theory uncertainty
call get_lower_or_upper_value_difference(dmu,mp_H(j)%mu,val)
dm = mp_H(j)%dm
if(dm.le.small) dm = small ! Set dm to 1.0D-6 in case of no theory uncertainty.
chisq = (mp_H(j)%mu - val(2))**2/dmu**2 + (mp_H(j)%m - mh)**2/dm**2
end select
if(chisq.le.minchisq) then
minchisq = chisq
mh_selected = mh
mu_selected = val
endif
enddo
! if(norm.ne.0.) val=val/norm
!! write(*,*) j, val, norm
mp_H(j)%dmu_low_obs = abs(mu_selected(2)-mu_selected(1))
mp_H(j)%mu_obs = mu_selected(2)
mp_H(j)%dmu_up_obs = abs(mu_selected(3)-mu_selected(2))
mp_H(j)%m_obs = mh_selected
!! write(*,*) "mass-centered observable at mh = ",mh_selected,"mu = ",mu_selected
enddo
end subroutine scan_mutable
!----------------------------------------------------------------------
subroutine mass_variation_by_theory_uncertainty
!----------------------------------------------------------------------
use datatables, only : interpolate_mutable
use usefulbits, only : vsmall, small, np, Hneut
implicit none
integer :: i, ii, iii, j, jj, jjj, k, xmin, xmax, step, best_Hindex
logical, allocatable :: testHiggs(:,:)
logical, allocatable :: Higgstested(:)
character(LEN=100) :: filename
character(LEN=1) :: pdfstring
double precision :: mh, val(3), norm, dm, dmu, sep, minchisq2,lowestmass, highestmass
double precision, allocatable ::boxstart_max(:), boxend_min(:)
double precision, allocatable ::boxstart(:),boxend(:),chisq(:),minchisq(:),mh_selected(:)
allocate(Higgstested(np(Hneut)),chisq(np(Hneut)),boxstart(np(Hneut)),boxend(np(Hneut)), &
& minchisq(np(Hneut)),mh_selected(np(Hneut)))
step = 10
! Unphysical starting values.
xmin=1000000.0D0
xmax=0.0D0
sep=1000000.0D0
jjj=0
do j=lbound(analyses,dim=1),ubound(analyses,dim=1)
do jj=lbound(analyses(j)%mpred%mp_Higgses,dim=1),&
& ubound(analyses(j)%mpred%mp_Higgses,dim=1)
jjj=jjj+1
if(analyses(j)%table%xmin.le.xmin) xmin=analyses(j)%table%xmin
if(analyses(j)%table%xmax.ge.xmax) xmax=analyses(j)%table%xmax
if(analyses(j)%table%sep.le.sep) sep=analyses(j)%table%sep
enddo
enddo
allocate(testHiggs(jjj,np(Hneut)),boxstart_max(jjj),boxend_min(jjj))
! For debugging
if(additional_output) then
write(pdfstring,'(I1)') pdf
filename=trim(adjustl("dmth_variation_pdf_"//pdfstring//".dat"))
open(147,file=filename)
write(147,*) "# Mass parameter, chi^2 at this position for each neutral Higgs boson"
write(147,*) "#-----------------------------------------------------------------------"
endif
jjj=0
do j=lbound(analyses,dim=1),ubound(analyses,dim=1)
do jj=lbound(analyses(j)%mpred%mp_Higgses,dim=1),&
& ubound(analyses(j)%mpred%mp_Higgses,dim=1)
jjj=jjj+1
do k=1, np(Hneut)
testHiggs(jjj,k)=.False.
lowestmass=vlarge
highestmass=0.0D0
do ii=lbound(analyses(j)%mpred%mp_Higgses(jj)%Higgses,dim=1),&
& ubound(analyses(j)%mpred%mp_Higgses(jj)%Higgses, dim=1)
if(k.eq.analyses(j)%mpred%mp_Higgses(jj)%Higgses(ii)%id) testHiggs(jjj,k)=.True.
!-----In the case of combined Higgses, where there is no box overlap of the combined Higgs with
!-----the individual Higgses, we have to extend the box of the combined Higgs.
if(analyses(j)%mpred%mp_Higgses(jj)%Higgses(ii)%m.le.lowestmass) then
lowestmass = analyses(j)%mpred%mp_Higgses(jj)%Higgses(ii)%m
boxstart_max(jjj) = analyses(j)%mpred%mp_Higgses(jj)%Higgses(ii)%m + &
& analyses(j)%mpred%mp_Higgses(jj)%Higgses(ii)%dm - vsmall
endif
if(analyses(j)%mpred%mp_Higgses(jj)%Higgses(ii)%m.ge.highestmass) then
highestmass = analyses(j)%mpred%mp_Higgses(jj)%Higgses(ii)%m
boxend_min(jjj) = analyses(j)%mpred%mp_Higgses(jj)%Higgses(ii)%m - &
& analyses(j)%mpred%mp_Higgses(jj)%Higgses(ii)%dm + vsmall
endif
enddo
enddo
enddo
enddo
!!write(*,*) "boxstart_max = ", boxstart_max
!!write(*,*) "boxend_min = ", boxend_min
!!write(*,*) "testHiggs = ", testHiggs
Higgstested=.False.
minchisq=vlarge-1000.0D0
! Vary mass globally for all analyses, minimize chisq.
do i= 0, int((xmax-xmin)/(sep)*step)
mh = xmin+i*sep/step
chisq = 0.0D0
jjj=0
do j=lbound(analyses,dim=1),ubound(analyses,dim=1)
do jj=lbound(analyses(j)%mpred%mp_Higgses,dim=1), &
& ubound(analyses(j)%mpred%mp_Higgses,dim=1)
jjj=jjj+1
call interpolate_mutable(val, mh, analyses(j)%table, step)
!---Do the variation for every neutral Higgs boson and test the relevant mpred analyses
do k=1, np(Hneut)
if(testHiggs(jjj,k)) then
Higgstested(k)=.True.
!-----n.b.: This is again based on the (possibly) combined Higgses (this is an approximation!)
!-----To do it correctly, Higgs bosons should be combined for every possible variation
boxstart(k) = analyses(j)%mpred%mp_Higgses(jj)%m - &
& analyses(j)%mpred%mp_Higgses(jj)%dm
boxend(k) = analyses(j)%mpred%mp_Higgses(jj)%m + &
& analyses(j)%mpred%mp_Higgses(jj)%dm
if(boxstart(k).gt.boxstart_max(jjj)) boxstart(k)=boxstart_max(jjj)
if(boxend(k).lt.boxend_min(jjj)) boxend(k)=boxend_min(jjj)
!-----Extend box by one step size (new, has to be tested, TS 8/4/2013)
! boxstart(k)=boxstart(k)-sep/(2*step)
! boxend(k)=boxend(k)+sep/(2*step)
select case(pdf)
case(1,3)
!------box theory uncertainty
if(mh.ge.boxstart(k).and.mh.le.boxend(k)) then
call get_lower_or_upper_value_difference(dmu,&
& analyses(j)%mpred%mp_Higgses(jj)%mu,val)
chisq(k) = chisq(k) + (analyses(j)%mpred%mp_Higgses(jj)%mu - val(2))**2/dmu**2
else
chisq(k)=chisq(k) + vlarge
endif
case(2)
!------gaussian theory uncertainty
call get_lower_or_upper_value_difference(dmu,&
& analyses(j)%mpred%mp_Higgses(jj)%mu,val)
dm = analyses(j)%mpred%mp_Higgses(jj)%dm
if(dm.le.small) dm = small ! Set dm to 1.0D-6 in case of no theory uncertainty.
chisq(k) = chisq(k) + (analyses(j)%mpred%mp_Higgses(jj)%mu - val(2))**2/dmu**2 + &
& (analyses(j)%mpred%mp_Higgses(jj)%m - mh)**2/dm**2
end select
endif
enddo
enddo
enddo
do k=1, np(Hneut)
if(Higgstested(k)) then
if(chisq(k).le.minchisq(k)) then
minchisq(k) = chisq(k)
mh_selected(k) = mh
!! write(*,*) "hello, ",k, mh, chisq(k)
endif
else
chisq(k)=vlarge
endif
enddo
!!-----For debugging only:
if(additional_output) write(147,*) mh,chisq
enddo
if(additional_output) close(147)
!-Now that the optimal mass parameters are determined, get the observed mu values again
! and set them in the mpred observables.
jjj=0
do j=lbound(analyses,dim=1),ubound(analyses,dim=1)
do jj=lbound(analyses(j)%mpred%mp_Higgses,dim=1),&
& ubound(analyses(j)%mpred%mp_Higgses,dim=1)
jjj=jjj+1
minchisq2=vlarge
do k=1, np(Hneut)
testHiggs=.False.
do ii=lbound(analyses(j)%mpred%mp_Higgses(jj)%Higgses,dim=1), &
& ubound(analyses(j)%mpred%mp_Higgses(jj)%Higgses, dim=1)
if(k.eq.analyses(j)%mpred%mp_Higgses(jj)%Higgses(ii)%id) testHiggs=.True.
!-Find the Higgs boson in a combination, where the chisq of the variation is lowest.
!-if no Higgs bosons are combined, we should have best_Hindex = k
if(minchisq(analyses(j)%mpred%mp_Higgses(jj)%Higgses(ii)%id).lt.minchisq2) then
minchisq2 = minchisq(analyses(j)%mpred%mp_Higgses(jj)%Higgses(ii)%id)
best_Hindex = analyses(j)%mpred%mp_Higgses(jj)%Higgses(ii)%id
endif
enddo
if(testHiggs(jjj,k)) then
!-One final chisq test for combined Higgses
call interpolate_mutable(val, mh_selected(best_Hindex), analyses(j)%table, step)
analyses(j)%mpred%mp_Higgses(jj)%dmu_low_obs = abs(val(2)-val(1))
analyses(j)%mpred%mp_Higgses(jj)%mu_obs = val(2)
analyses(j)%mpred%mp_Higgses(jj)%dmu_up_obs = abs(val(3)-val(2))
analyses(j)%mpred%mp_Higgses(jj)%m_obs = mh_selected(best_Hindex)
!! write(*,*) "hello: ", val, best_Hindex, mh_selected(best_Hindex)
!n.b.: For combined Higgses, the best values obtained for the last Higgs are taken.
endif
enddo
enddo
enddo
deallocate(Higgstested,chisq,boxstart,boxend,minchisq,mh_selected)
deallocate(testHiggs,boxstart_max,boxend_min)
end subroutine mass_variation_by_theory_uncertainty
!----------------------------------------------------------------------
subroutine smear_mutable(table, mp_H)
!----------------------------------------------------------------------
implicit none
type(mutable), intent(in) :: table
type(mp_neutHiggs), dimension(:), intent(inout) :: mp_H
integer :: i,j,imin,imax,col
double precision :: mh, val(3), norm
call check_pdf
imin = lbound(table%mu,dim=1)
imax = ubound(table%mu,dim=1)
do j=lbound(mp_H,dim=1),ubound(mp_H,dim=1)
val = 0.0D0
norm = 0.0D0
do i= imin, imax
mh =table%xmin+(i-1)*table%sep
do col=1,3
val(col) = val(col) + table%mu(i,col)*masspdf(mh, mp_H(j)%Higgses, table%sep)
enddo
norm = norm + masspdf(mh, mp_H(j)%Higgses, table%sep)
enddo
if(norm.ne.0.) val=val/norm
mp_H(j)%dmu_low_obs = abs(val(2)-val(1))
mp_H(j)%mu_obs = val(2)
mp_H(j)%dmu_up_obs = abs(val(3)-val(2))
mp_H(j)%m_obs = mp_H(j)%m
enddo
end subroutine smear_mutable
!----------------------------------------------------------------------
function masspdf(mh, Higgses, sep)
! This function returns the value of the mass pdf at a given mass mh.
! In the case of combined Higgses, it is returning the sum of the
! individual mass pdfs. If the mass uncertainty is zero (delta-function)
! it returns the pdf values obtained for a mass uncertainty equal to
! the tables separation.
!----------------------------------------------------------------------
use usefulbits, only : small
implicit none
!
double precision, intent(in) :: mh, sep
type(neutHiggs), dimension(:), intent(in) :: Higgses
double precision :: masspdf
integer :: i
masspdf=0.0D0
do i=lbound(Higgses,dim=1),ubound(Higgses,dim=1)
!! write(*,*) "Mass uncertainty = ",Higgses(i)%dm
if(Higgses(i)%dm.le.small) then
!! masspdf =masspdf + box(mh, Higgses(i)%m, sep, sep)
masspdf =masspdf + box(mh, Higgses(i)%m, Higgses(i)%dm, sep)
else
select case (pdf)
case(1,3) !-box, boxgaussian (==box in mp centered chi^2 method)
masspdf = masspdf + box(mh, Higgses(i)%m, Higgses(i)%dm, sep)
case(2) !-gaussian
masspdf = masspdf + gaussian(mh, Higgses(i)%m, Higgses(i)%dm, sep)
end select
endif
enddo
!! write(*,*) "masspdf = ",masspdf
end function masspdf
!----------------------------------------------------------------------
function box(x,x0,dx,sep)
!----------------------------------------------------------------------
use usefulbits, only : small
implicit none
double precision, intent(in) :: x, x0, dx, sep
double precision :: box, norm
norm = dx/sep
if(norm.le.small) norm=1 ! For the case of dx = 0 (delta-function)
if((x.lt.(x0-dx-sep/2.)).or.(x.gt.(x0+dx+sep/2.))) then
box = 0.0D0
else
box = 1.0D0/norm
endif
!! write(*,*) "Norm / box = ",norm,box
end function box
!----------------------------------------------------------------------
function gaussian(x,x0,dx,sep)
!----------------------------------------------------------------------
use usefulbits, only : pi
implicit none
double precision, intent(in) :: x, x0, dx, sep
double precision :: gaussian
gaussian=exp(-(x-x0)**2/(2*dx**2))*sep/(sqrt(2*pi)*dx)
end function
!----------------------------------------------------------------------
subroutine combine_Higgses(mp_H, mp_H_tmp, table, finished_combination)
!----------------------------------------------------------------------
implicit none
type(mp_neutHiggs), dimension(:), intent(inout) :: mp_H
type(mp_neutHiggs), allocatable, intent(out) :: mp_H_tmp(:)
type(mutable), intent(in) :: table
integer, intent(out) :: finished_combination
double precision :: massdiff, massdiff_tmp, m_tmp, dm_tmp, mu_tmp
integer :: i,j, index_i, index_j
!-Determine the nearest neighboring Higgs bosons
massdiff=100000.0D0
do i=lbound(mp_H,dim=1),ubound(mp_H,dim=1)
do j=lbound(mp_H,dim=1),ubound(mp_H,dim=1)
if(i.ne.j) then
massdiff_tmp = abs(mp_H(i)%m - mp_H(j)%m)
if(massdiff_tmp.le.massdiff) then
massdiff = massdiff_tmp
index_i = i
index_j = j
endif
endif
enddo
enddo
if(massdiff.le.table%deltam) then
finished_combination=-1
!-Do a gaussian average of the two Higgs bosons to determine uncertainty and mass position,
!-and add the signal strength modifiers. Untag the combined Higgs bosons.
if(mp_H(index_i)%dm.eq.0.0D0.and.mp_H(index_j)%dm.eq.0.0D0) then
dm_tmp = 0.0D0
else
dm_tmp = mp_H(index_i)%dm*mp_H(index_j)%dm/ &
& sqrt(mp_H(index_i)%dm**2+mp_H(index_j)%dm**2)
endif
if(dm_tmp.ne.0.0D0) then
m_tmp = dm_tmp**2*( mp_H(index_i)%m/mp_H(index_i)%dm**2 + &
mp_H(index_j)%m/mp_H(index_j)%dm**2 )
else
if(mp_H(index_i)%dm.eq.0.0D0.and.mp_H(index_j)%dm.ne.0.0D0) then
m_tmp = mp_H(index_i)%m
else if(mp_H(index_i)%dm.ne.0.0D0.and.mp_H(index_j)%dm.eq.0.0D0) then
m_tmp = mp_H(index_j)%m
else
m_tmp = (mp_H(index_i)%m + mp_H(index_j)%m )/2.0D0
endif
endif
!! write(*,*) "m_tmp = ", m_tmp
mu_tmp = mp_H(index_i)%mu + mp_H(index_j)%mu
mp_H(index_i)%mp_test=0
mp_H(index_j)%mp_test=0
!--Fill the temporary mp_neutHiggs object first with the combination, then with the
!--remaining Higgses
allocate(mp_H_tmp(size(mp_H,dim=1)-1))
mp_H_tmp(1)%m = m_tmp
mp_H_tmp(1)%dm = dm_tmp
mp_H_tmp(1)%mu = mu_tmp
mp_H_tmp(1)%mp_test = 1
allocate(mp_H_tmp(1)%Higgses(size(mp_H(index_i)%Higgses)+size(mp_H(index_j)%Higgses)))
j=0
do i=lbound(mp_H(index_i)%Higgses,dim=1),ubound(mp_H(index_i)%Higgses,dim=1)
j=j+1
mp_H_tmp(1)%Higgses(j)=mp_H(index_i)%Higgses(i)
enddo
do i=lbound(mp_H(index_j)%Higgses,dim=1),ubound(mp_H(index_j)%Higgses,dim=1)
j=j+1
mp_H_tmp(1)%Higgses(j)=mp_H(index_j)%Higgses(i)
enddo
!-Now, fill with remaining, not combined Higgses
j=1
do i=lbound(mp_H,dim=1),ubound(mp_H,dim=1)
if(mp_H(i)%mp_test.eq.1) then
j=j+1
allocate(mp_H_tmp(j)%Higgses(size(mp_H(i)%Higgses,dim=1)))
mp_H_tmp(j)%Higgses = mp_H(i)%Higgses
mp_H_tmp(j)%m = mp_H(i)%m
mp_H_tmp(j)%dm = mp_H(i)%dm
mp_H_tmp(j)%mu = mp_H(i)%mu
mp_H_tmp(j)%mp_test = mp_H(i)%mp_test
endif
enddo
else
finished_combination=1
endif
end subroutine combine_Higgses
!----------------------------------------------------------------------------
subroutine calculate_mpred_chisq(csq, N)
!----------------------------------------------------------------------------
implicit none
double precision, intent(out) :: csq
integer, intent(out) :: N
double precision, allocatable :: v(:), vmat(:,:), invcov(:,:), v2(:)
double precision, allocatable :: csq_mu(:)
integer :: i,ii,iii
N=size(cov_mp,dim=1)
allocate(v(N), vmat(N,1),invcov(N,N), v2(N), csq_mu(N))
!-First construct the vector (mupred - muobs)_iii
iii=0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do ii=lbound(analyses(i)%mpred%mp_Higgses,dim=1),&
& ubound(analyses(i)%mpred%mp_Higgses,dim=1)
iii=iii+1
v(iii) = analyses(i)%mpred%mp_Higgses(ii)%mu-analyses(i)%mpred%mp_Higgses(ii)%mu_obs
vmat(iii,1) = v(iii)
enddo
enddo
call invmatrix(cov_mp,invcov)
call matmult(invcov,vmat,v2,N,1)
iii=0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do ii=lbound(analyses(i)%mpred%mp_Higgses,dim=1),&
& ubound(analyses(i)%mpred%mp_Higgses,dim=1)
iii=iii+1
csq_mu(iii) = v(iii)*v2(iii)
analyses(i)%mpred%mp_Higgses(ii)%chisq = csq_mu(iii)
enddo
enddo
csq=sum(csq_mu)
deallocate(v,vmat,invcov,v2,csq_mu)
end subroutine calculate_mpred_chisq
!----------------------------------------------------------------------------
subroutine create_covariance_matrix_mp
!----------------------------------------------------------------------------
implicit none
integer :: N, i, ii, iii, j, jj, jjj
double precision :: mumax, dmu0sq, dratesq
character(LEN=50) :: title
if(.not.allocated(analyses)) then
- stop'Error in subroutine create_covariance_matrix_mp: analyses not allocated.'
+ stop 'Error in subroutine create_covariance_matrix_mp: analyses not allocated.'
endif
if(allocated(cov_mp)) deallocate(cov_mp)
!! write(*,*) "Creating covariance matrix for mpred-method."
iii=0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do ii=lbound(analyses(i)%mpred%mp_Higgses,dim=1),&
& ubound(analyses(i)%mpred%mp_Higgses,dim=1)
!--Find out dimension (iii) of covariance matrix.
iii=iii+1
mumax=-1.0D10
!--Determine the dominating Higgs for every mpred-observable.
do j=lbound(analyses(i)%mpred%mp_Higgses(ii)%Higgses,dim=1),&
& ubound(analyses(i)%mpred%mp_Higgses(ii)%Higgses,dim=1)
if(analyses(i)%mpred%mp_Higgses(ii)%Higgses(j)%mu.gt.mumax) then
mumax=analyses(i)%mpred%mp_Higgses(ii)%Higgses(j)%mu
analyses(i)%mpred%mp_Higgses(ii)%domH=analyses(i)%mpred%mp_Higgses(ii)%Higgses(j)%id
endif
enddo
!--Subtract the correlated syst. uncertainties from (smeared) cyan band
call correct_mu_uncertainty(analyses(i)%mpred%mp_Higgses(ii),analyses(i)%table)
!--(TS 08/05/2013) Calculate the channel weights in the model:
call calculate_model_weights(analyses(i)%table, analyses(i)%mpred%mp_Higgses(ii))
!! write(*,*) analyses(i)%mpred%mp_Higgses(ii)%channel_w_model
!! write(*,*) analyses(i)%table%channel_w(:,analyses(i)%mpred%mp_Higgses(ii)%domH)
enddo
enddo
allocate(cov_mp(iii,iii))
iii=0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do ii=lbound(analyses(i)%mpred%mp_Higgses,dim=1),&
& ubound(analyses(i)%mpred%mp_Higgses,dim=1)
iii=iii+1
jjj=0
do j=lbound(analyses,dim=1),ubound(analyses,dim=1)
do jj=lbound(analyses(j)%mpred%mp_Higgses,dim=1),&
& ubound(analyses(j)%mpred%mp_Higgses,dim=1)
jjj=jjj+1
cov_mp(iii,jjj)=0.0D0
if(correlations_mu.or.(.not.correlations_mu.and.iii.eq.jjj)) then
call get_rate_uncertainties_sq_mpred(dratesq, analyses(i)%table, &
& analyses(i)%mpred%mp_Higgses(ii),analyses(j)%table,analyses(j)%mpred%mp_Higgses(jj))
!-----Treat luminosity uncertainty as correlated systematic error if same collaboration:
if(analyses(i)%table%collaboration.eq.analyses(i)%table%collaboration) then
if(anticorrmu) then
cov_mp(iii,jjj)=cov_mp(iii,jjj)+(analyses(i)%table%dlumi*analyses(j)%table%dlumi)&
& * (analyses(i)%mpred%mp_Higgses(ii)%mu*analyses(j)%mpred%mp_Higgses(jj)%mu)
else
cov_mp(iii,jjj)=cov_mp(iii,jjj)+(analyses(i)%table%dlumi*analyses(j)%table%dlumi)&
& * abs(analyses(i)%mpred%mp_Higgses(ii)%mu*analyses(j)%mpred%mp_Higgses(jj)%mu)
endif
endif
if(anticorrmu) then
! (TS 28/10/2013: Change scaling of theo. err from observed to predicted mu:)
cov_mp(iii,jjj)=cov_mp(iii,jjj)+(dratesq) * &
& (analyses(i)%mpred%mp_Higgses(ii)%total_mu*analyses(j)%mpred%mp_Higgses(jj)%total_mu)
else
cov_mp(iii,jjj)=cov_mp(iii,jjj)+(dratesq) * &
& abs(analyses(i)%mpred%mp_Higgses(ii)%total_mu*analyses(j)%mpred%mp_Higgses(jj)%total_mu)
endif
endif
!----Add the intrinsic (uncorrelated) uncertainty of this peak to the diagonal elements:
if(iii.eq.jjj) then
call get_dmu0sq(dmu0sq,analyses(i)%mpred%mp_Higgses(ii))
cov_mp(iii,jjj) = cov_mp(iii,jjj) + dmu0sq
endif
enddo
enddo
enddo
enddo
end subroutine create_covariance_matrix_mp
!------------------------------------------------------------------------------------
subroutine get_rate_uncertainties_sq_mpred(dratesq, table1, mp_H1, table2, mp_H2)
!------------------------------------------------------------------------------------
use usefulbits_HS, only : delta_rate
type(mp_neutHiggs), intent(in) :: mp_H1, mp_H2
type(mutable), intent(in) :: table1, table2
double precision, intent(out) :: dratesq
integer :: i,j,p1,d1,p2,d2 !id1,id2,
double precision :: res
res=0.0D0
!! write(*,*) 'table Nc = ',table1%Nc,table2%Nc
do i=1,table1%Nc
do j=1,table2%Nc
p1 = table1%channel_p_id(i)
d1 = table1%channel_d_id(i)
p2 = table2%channel_p_id(j)
d2 = table2%channel_d_id(j)
!
! id1 = table1%channel_id(i)
! p1 = int((id1-modulo(id1,10))/dble(10))
! d1 = modulo(id1,10)
! id2 = table2%channel_id(j)
! p2 = int((id2-modulo(id2,10))/dble(10))
! d2 = modulo(id2,10)
if(p1.eq.p2) then
res=res+delta_rate%dCS(p1)**2* &
& mp_H1%channel_w_model(i)*mp_H2%channel_w_model(j)
endif
if(d1.eq.d2) then
res=res+delta_rate%dBR(d1)**2* &
& mp_H1%channel_w_model(i)*mp_H2%channel_w_model(j)
endif
! if(p1.eq.p2) then
! res=res+delta_rate%dCS(p1)**2* &
!& table1%channel_w(i,mp_H1%domH)*table2%channel_w(j,mp_H2%domH)
! endif
! if(d1.eq.d2) then
! res=res+delta_rate%dBR(d1)**2* &
!& table1%channel_w(i,mp_H1%domH)*table2%channel_w(j,mp_H2%domH)
! endif
enddo
enddo
dratesq=res
end subroutine get_rate_uncertainties_sq_mpred
!------------------------------------------------------------------------------------
subroutine calculate_model_weights(table, mp_H)
use usefulbits, only : small, div
implicit none
type(mp_neutHiggs), intent(inout) :: mp_H
type(mutable), intent(in) :: table
integer :: k,l,Nc
double precision :: normalization
!--In the (unphysical) case of negative channel rates, we have to take care that the
! model channel weights are still positive and between 0 and 1:
normalization = 0.0D0
if(allocated(mp_H%channel_w_model)) deallocate(mp_H%channel_w_model)
allocate(mp_H%channel_w_model(table%Nc))
if(allocated(mp_H%channel_mu)) deallocate(mp_H%channel_mu)
allocate(mp_H%channel_mu(table%Nc))
mp_H%total_mu=0.0D0
do k=lbound(mp_H%channel_w_model,dim=1),ubound(mp_H%channel_w_model,dim=1)
mp_H%channel_mu(k)=0.0D0
do l=lbound(mp_H%Higgses,dim=1),ubound(mp_H%Higgses,dim=1)
mp_H%channel_mu(k)=mp_H%channel_mu(k) + &
& table%channel_mu(k,mp_H%Higgses(l)%id)*table%channel_w(k,mp_H%Higgses(l)%id)
mp_H%total_mu = mp_H%total_mu + &
& table%channel_mu(k,mp_H%Higgses(l)%id)*table%channel_w(k,mp_H%Higgses(l)%id)
enddo
enddo
normalization = 0.0D0
do k=lbound(mp_H%channel_w_model,dim=1),ubound(mp_H%channel_w_model,dim=1)
mp_H%channel_w_model(k)=div(mp_H%channel_mu(k),mp_H%total_mu,0.0D0,1.0D9)
normalization = normalization + abs(mp_H%channel_w_model(k))
enddo
if(abs(normalization).gt.small) then
do k=lbound(mp_H%channel_w_model,dim=1),ubound(mp_H%channel_w_model,dim=1)
mp_H%channel_w_model(k) = div(abs(mp_H%channel_w_model(k)),&
& normalization,1.0D0/table%Nc,1.0D0)
enddo
else
!--If the predicted signal strength is zero, use SM weights
do k=lbound(mp_H%channel_w_model,dim=1),ubound(mp_H%channel_w_model,dim=1)
mp_H%channel_w_model(k) = table%channel_w(k,mp_H%domH)
enddo
endif
if(abs(sum(mp_H%channel_w_model)-1.0D0).gt.small) then
write(*,*) "WARNING: Channel weights of the model are not correctly normalized:"
write(*,*) mp_H%channel_w_model
endif
end subroutine calculate_model_weights
subroutine correct_mu_uncertainty(mp_H, table)
! The mu uncertainty as given in the mutable contains also systematic uncertainties for
! the luminosity and signal rate. These uncertainties are highly correlated to other
! analyses. Therefore, we subtract them here to obtain the intrinsic mu uncertainty of
! this peak. The correlated uncertainties enter later via the covariance matrix.
!------------------------------------------------------------------------------------
implicit none
type(mp_neutHiggs), intent(inout) :: mp_H
type(mutable), intent(in) :: table
integer :: i
double precision :: dcsq, dmuupsq, dmulowsq
dcsq = 0
do i=1, table%Nc
dcsq = dcsq + table%channel_systSM(i,mp_H%domH)**2
enddo
dmuupsq = (mp_H%dmu_up_obs)**2-(table%dlumi*mp_H%mu_obs)**2-dcsq*mp_H%mu_obs**2
dmulowsq = (mp_H%dmu_low_obs)**2-(table%dlumi*mp_H%mu_obs)**2-dcsq*mp_H%mu_obs**2
mp_H%dmu_low0_obs = sqrt(abs((mp_H%dmu_low_obs)**2- &
& (table%dlumi*mp_H%mu_obs)**2-dcsq*mp_H%mu_obs**2))
if(dmulowsq.lt.0.0D0) mp_H%dmu_low0_obs = - mp_H%dmu_low0_obs
mp_H%dmu_up0_obs = sqrt(abs((mp_H%dmu_up_obs)**2- &
& (table%dlumi*mp_H%mu_obs)**2-dcsq*mp_H%mu_obs**2))
if(dmuupsq.lt.0.0D0) mp_H%dmu_up0_obs = - mp_H%dmu_up0_obs
end subroutine correct_mu_uncertainty
!------------------------------------------------------------------------------------
subroutine get_dmu0sq(dmu0sq,mp_H)
!------------------------------------------------------------------------------------
use usefulbits_hs, only : symmetricerrors
implicit none
double precision, intent(out) :: dmu0sq
double precision :: pred_mu
type(mp_neutHiggs), intent(in) :: mp_H
pred_mu = mp_H%mu
if(.not.symmetricerrors) then
if(pred_mu.le.mp_H%mu_obs) then
dmu0sq = mp_H%dmu_low0_obs**2
else if(pred_mu.gt.mp_H%mu_obs) then
dmu0sq = mp_H%dmu_up0_obs**2
endif
else
dmu0sq = (sqrt(mp_H%dmu_low0_obs**2)+sqrt(mp_H%dmu_up0_obs**2))**2/4.
endif
end subroutine get_dmu0sq
!------------------------------------------------------------------------------------
subroutine get_lower_or_upper_value_difference(val,pred,dataval)
!------------------------------------------------------------------------------------
implicit none
double precision, intent(out) :: val
double precision, intent(in) :: pred
double precision, dimension(3) :: dataval
if(pred.le.dataval(2)) then
val = abs(dataval(2)-dataval(1))
else if(pred.gt.dataval(2)) then
val = abs(dataval(3)-dataval(2))
endif
end subroutine get_lower_or_upper_value_difference
!------------------------------------------------------------------------------------
subroutine check_pdf
!------------------------------------------------------------------------------------
implicit none
if(.not.((pdf.eq.1).or.(pdf.eq.2).or.(pdf.eq.3))) then
write(*,*) 'WARNING: pdf not properly specified. Will be set to pdf=2 (gaussian-shape)'
pdf=2
endif
end subroutine check_pdf
!------------------------------------------------------------------------------------
function Higgscomb_key(Higgses)
implicit none
type(neutHiggs), dimension(:), intent(in) :: Higgses
integer :: Higgscomb_key
integer :: i,keytmp,power
keytmp=0
power =0
do i=lbound(Higgses,dim=1),ubound(Higgses,dim=1)
keytmp = keytmp + Higgses(i)%id * 10**power
power = power+1
enddo
Higgscomb_key = keytmp
end function Higgscomb_key
!------------------------------------------------------------------------------------
subroutine deallocate_mc_observables
implicit none
integer :: i,j
if(allocated(analyses)) then
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
if(allocated(analyses(i)%mpred%mp_Higgses)) then
do j=lbound(analyses(i)%mpred%mp_Higgses,dim=1),&
& ubound(analyses(i)%mpred%mp_Higgses,dim=1)
if(allocated(analyses(i)%mpred%mp_Higgses(j)%Higgses)) then
deallocate(analyses(i)%mpred%mp_Higgses(j)%Higgses)
endif
if(allocated(analyses(i)%mpred%mp_Higgses(j)%channel_w_model)) then
deallocate(analyses(i)%mpred%mp_Higgses(j)%channel_w_model)
endif
if(allocated(analyses(i)%mpred%mp_Higgses(j)%channel_mu)) then
deallocate(analyses(i)%mpred%mp_Higgses(j)%channel_mu)
endif
enddo
deallocate(analyses(i)%mpred%mp_Higgses)
endif
enddo
endif
end subroutine deallocate_mc_observables
!------------------------------------------------------------------------------------
end module mc_chisq
\ No newline at end of file
Index: trunk/HiggsSignals-2/pc_chisq.f90
===================================================================
--- trunk/HiggsSignals-2/pc_chisq.f90 (revision 593)
+++ trunk/HiggsSignals-2/pc_chisq.f90 (revision 594)
@@ -1,2574 +1,2574 @@
!--------------------------------------------------------------------
! This file is part of HiggsSignals (TS 03/03/2013)
!--------------------------------------------------------------------
module pc_chisq
use numerics
use combinatorics
use usefulbits_hs
implicit none
integer :: i,j,k
double precision,parameter :: pi=3.14159265358979323846264338328D0
integer, allocatable :: peakindices_best(:,:)
contains
!------------------------------------------------------------------------------------
subroutine set_toyvalues(ii, peaks)
! This subroutine sets the mass and mu measurements of the peak observable(s) of analyses ii
! to those values which are given by the user using assign_toyvalues_to_observables.
!------------------------------------------------------------------------------------
use usefulbits_hs, only: obs, mupeak
integer, intent(in) :: ii
type(mupeak),dimension(:), intent(inout) :: peaks
integer :: i
if(obs(ii)%table%npeaks.ne.size(peaks)) then
stop 'Error in subroutine set_toyvalues: Number of peaks does not match!'
endif
do i=lbound(peaks,dim=1),ubound(peaks,dim=1)
peaks(i)%mpeak = obs(ii)%table%Toys_mhobs(i)
peaks(i)%mu = obs(ii)%table%Toys_muobs(i)
enddo
end subroutine set_toyvalues
!------------------------------------------------------------------------------------
!subroutine scale_uncertainties(ii, peaks)
!! Scales the uncertainty of the signal strength and mass measurement of the peak
!! observables of analysis ii by the scalefactors which have been set via the subroutine
!! assign_uncertainty_scalefactors_to_observables.
!!------------------------------------------------------------------------------------
! use usefulbits_hs, only : obs, mupeak
!
! integer, intent(in) :: ii
! type(mupeak),dimension(:), intent(inout) :: peaks
! integer :: i
!
! if(obs(ii)%table%npeaks.ne.size(peaks)) then
! stop 'Error in subroutine scale_uncertainties: Number of peaks does not match!'
! endif
!
! do i=lbound(peaks,dim=1),ubound(peaks,dim=1)
! peaks(i)%dmuup = obs(ii)%table%scale_mu(i)*peaks(i)%dmuup
! peaks(i)%dmulow = obs(ii)%table%scale_mu(i)*peaks(i)%dmulow
! peaks(i)%dm = obs(ii)%table%scale_mh(i)*peaks(i)%dm
! enddo
!
!end subroutine scale_uncertainties
!------------------------------------------------------------------------------------
!subroutine restore_uncertainties(ii, peaks)
!! Restores the uncertainty of the signal strength and mass measurement of the peak
!! observables of analysis ii after scaling.
!!------------------------------------------------------------------------------------
! use usefulbits, only : vsmall
! use usefulbits_hs, only : obs, mupeak
!
! integer, intent(in) :: ii
! type(mupeak),dimension(:), intent(inout) :: peaks
! integer :: i
!
! if(obs(ii)%table%npeaks.ne.size(peaks)) then
! stop 'Error in subroutine restore_uncertainties: Number of peaks does not match!'
! endif
!
! do i=lbound(peaks,dim=1),ubound(peaks,dim=1)
! if(obs(ii)%table%scale_mu(i).ge.vsmall) then
! peaks(i)%dmuup = peaks(i)%dmuup/obs(ii)%table%scale_mu(i)
! peaks(i)%dmulow = peaks(i)%dmulow/obs(ii)%table%scale_mu(i)
! else
! write(*,*) 'WARNING: scale_mu is (too close to) zero!'
! endif
! if(obs(ii)%table%scale_mh(i).ge.vsmall) then
! peaks(i)%dm = peaks(i)%dm/obs(ii)%table%scale_mh(i)
! else
! write(*,*) 'WARNING: scale_mh is (too close to) zero!'
! endif
! enddo
!
!end subroutine restore_uncertainties
!!------------------------------------------------------------------------------------
subroutine assign_Higgs_to_peaks_with_correlations(iter)
! Do this only for pdf = 2
!
! NOTE: This is possibly still buggy. Only use it with iter=0.
! TODO: Have to extend this here for assignment-groups.
!------------------------------------------------------------------------------------
use usefulbits_HS, only : neutHiggses, nanalys
use usefulbits, only : np, Hneut
implicit none
integer, intent(in) :: iter
integer :: i, ii, iii, n, jjj
character(LEN=100), allocatable :: assignmentgroups(:)
integer, allocatable :: assignmentgroups_Higgs_comb(:,:)
!! allocate(assignmentgroups(nanalys))
!! allocate(assignmentgroups_Higgs_comb(nanalys,np(Hneut)))
!! write(*,*) "Running assign_Higgs_to_peaks_with_correlations."
if(iter.gt.0) write(*,*) "WARNING: Iterations in the Higgs-to-peaks assignment are ",&
& "still under development."
jjj = 1
do n=1, iter
call create_covariance_matrices()
iii=0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
analyses(i)%peaks(ii)%internalnumber = iii
enddo
call assign_Higgs_to_peaks(analyses(i)%table, analyses(i)%peaks, n)
enddo
enddo
end subroutine assign_Higgs_to_peaks_with_correlations
!------------------------------------------------------------------------------------
subroutine assign_Higgs_to_peaks(table, peaks, iterstep)
! This subroutine assigns the best combination of Higgs bosons to each peak observable
! found in ONE mutable/analysis.
! It calculates for every possible assignment of the Higgs bosons to the peaks a
! chi-squared value. It takes care that each Higgs boson is used for at most one peak.
! The combination with the minimal chi-squared value is selected. The relevant information
! about the assigned Higgs bosons is then saved in each peak object.
!------------------------------------------------------------------------------------
use usefulbits, only : div, np, Hneut
implicit none
type(mutable), intent(in) :: table
type(mupeak), dimension(:), intent(inout) :: peaks(:)
integer, intent(in) :: iterstep
integer, allocatable :: peakindices_best(:,:), domH(:), domH_tmp(:)
integer, allocatable :: Higgs_to_be_assigned(:),Higgs_fulfills_req_assignment(:)
integer :: Npeaks, nH, a, i, j, ii,jj, Hindex, NHiggs
integer :: Higgs_assignment_forced,Higgs_assignment_forced_tmp
double precision :: pccsq, pccsq_tmp, chisq_fp
!! integer, allocatable :: indices_best(:)
double precision :: force_in_range
chisq_fp = 10000000.0D0
nH=np(Hneut)
Npeaks=size(peaks)
! write(*,*) 'DEBUG: Calling assign_Higgs_to_peaks for'
! write(*,*) 'table ID = ',table%id
! write(*,*) 'table expt, desc = ',table%expt, table%desc
if(Npeaks.le.0) then
if(iterstep.eq.0) then
write(*,'(A,1X,A,1X,A,1X,A,F4.2,A,I12,A)') ' No peaks defined for ', &
& trim(adjustl(table%collaboration)),trim(adjustl(table%desc)),'(',table%energy, &
& " TeV) search (analysis ID = ",table%id,")."
endif
else
!-Create indices matrix from combinatorics module containing all possible
!-peak-Higgs combinations:
call create_peakindices(Npeaks,nH)
allocate(peakindices_best(Npeaks,nH))
allocate(domH(Npeaks),domH_tmp(Npeaks))
allocate(Higgs_to_be_assigned(nH),Higgs_fulfills_req_assignment(nH))
! (TS 11/01/2013: Give some default values)
Higgs_assignment_forced = 1
call copy_matrices(peakindices(1,:,:),peakindices_best(:,:))
do k=lbound(domH_tmp,dim=1),ubound(domH_tmp,dim=1)
domH_tmp(k) = 0
enddo
! write(*,*) 'DEBUG: print peakindices before start...'
! do a=lbound(peakindices,dim=1),ubound(peakindices,dim=1)
! write(*,*) ' a = ',a
! write(*,*) peakindices(a,:,:)
! enddo
if(table%mhchisq.eq.1) then
force_in_range = assignmentrange_massobs
else
force_in_range = assignmentrange
endif
if(pdf.eq.1) force_in_range = 1.0D0
! (TS 09/09/2012: Add the criterium that if the Higgs bosons masses are close enough to
! the peaks they have to be assigned. )
!-First, find out which Higgs bosons have to be assigned. For this, we loop over all peaks
!-and check which Higgses lie close enough (i.e. the mass difference is less than the
!-total (gaussian) mass uncertainty). In that case, we tag this Higgs to be assigned.
do i=lbound(Higgs_to_be_assigned,dim=1), ubound(Higgs_to_be_assigned,dim=1)
Higgs_to_be_assigned(i)=0
enddo
do i=lbound(peaks,dim=1),ubound(peaks,dim=1)
do j=lbound(Higgs_to_be_assigned,dim=1), ubound(Higgs_to_be_assigned,dim=1)
if(abs(peaks(i)%Higgses(j)%m-peaks(i)%mpeak).le. &
& force_in_range*sqrt(peaks(i)%Higgses(j)%dm**2 + table%deltam**2)) then
if(useaveragemass.and.abs(peaks(i)%Higgses(j)%mu).le.mu_cutoff_for_assignment) then
! if(useaveragemass) then
Higgs_to_be_assigned(j)=0
else
Higgs_to_be_assigned(j)=1
endif
else
!-If the chisq contribution from the Higgs masses is not used, we do NOT want
! to assign Higgs bosons which are far away from peak.
if(table%mhchisq.ne.1) Higgs_to_be_assigned(j)=-1
! if(table%mhchisq.ne.1.or.useaveragemass) Higgs_to_be_assigned(j)=-1
endif
enddo
enddo
! write(*,*) 'Higgs_to_be_assigned = ',Higgs_to_be_assigned
!-Loop over all possible combinations, calculate the chisq and find the best combination.
do a=lbound(peakindices,dim=1),ubound(peakindices,dim=1)
pccsq_tmp = 0
!--Loop over all peaks, i.e. rows of the combination matrices:
do i=lbound(peakindices,dim=2),ubound(peakindices,dim=2)
!---Calculate the chi squared value for this combination assigned to peak i:
call calc_pc_chisq(pccsq, peaks(i), table%mhchisq, peaks(i)%Higgses, domH(i), &
& peakindices(a,i,:),iterstep)
pccsq = pccsq + csq_mass_separation_weighted(peakindices(a,i,:), peaks(i))
!---Add the calculated value to the total chi-squared value for all peaks:
pccsq_tmp = pccsq_tmp + pccsq
enddo
! write(*,*) 'a = ',a,' temporary chisq contribution = ', pccsq_tmp
!--Determine the best Higgs-to-peaks assignment:
if(pccsq_tmp.lt.chisq_fp) then
! write(*,*) 'pccsq_tmp is below chisq_fp = ', chisq_fp
do i=lbound(Higgs_fulfills_req_assignment,dim=1), &
& ubound(Higgs_fulfills_req_assignment,dim=1)
Higgs_fulfills_req_assignment(i)=0
enddo
Higgs_assignment_forced_tmp = 0
do j=lbound(Higgs_to_be_assigned,dim=1),ubound(Higgs_to_be_assigned,dim=1)
if(Higgs_to_be_assigned(j).eq.1) then
do ii=lbound(peakindices,dim=2),ubound(peakindices,dim=2)
do jj=lbound(peakindices,dim=3),ubound(peakindices,dim=3)
if(peakindices(a,ii,jj).eq.j) then
Higgs_fulfills_req_assignment(j)=1
Higgs_assignment_forced_tmp = 1
endif
enddo
enddo
else if(Higgs_to_be_assigned(j).eq.-1) then
Higgs_fulfills_req_assignment(j)=1
do ii=lbound(peakindices,dim=2),ubound(peakindices,dim=2)
do jj=lbound(peakindices,dim=3),ubound(peakindices,dim=3)
if(peakindices(a,ii,jj).eq.j) then
Higgs_fulfills_req_assignment(j)=0
endif
enddo
enddo
else
Higgs_fulfills_req_assignment(j)=1
endif
enddo
! write(*,*) 'Higgs_fulfills_req_assignment = ', Higgs_fulfills_req_assignment
if(sum(Higgs_fulfills_req_assignment).eq.nH) then
chisq_fp = pccsq_tmp
Higgs_assignment_forced = Higgs_assignment_forced_tmp
call copy_matrices(peakindices(a,:,:),peakindices_best(:,:))
if(a.eq.1) then
do k=lbound(domH_tmp,dim=1),ubound(domH_tmp,dim=1)
domH_tmp(k) = 0
enddo
else
domH_tmp(:) = domH(:)
endif
! write(*,*) 'Assignment taken over: ', peakindices_best
endif
endif
enddo
!--Save information in peak object
do i=lbound(peakindices_best,dim=1),ubound(peakindices_best,dim=1)
!--Best Higgs Combination:
peaks(i)%Higgs_comb(:) = peakindices_best(i,:)
! write(*,*) "hello: Higgs assignment of ID = ",peaks(i)%id, ": ", peaks(i)%Higgs_comb,&
! & "Higgs_assignment_forced: ",Higgs_assignment_forced
peaks(i)%domH = domH_tmp(i)
peaks(i)%Higgs_assignment_forced = Higgs_assignment_forced
call evaluate_peak(peaks(i),table)
enddo
deallocate(peakindices, peakindices_best, domH, domH_tmp)
deallocate(Higgs_to_be_assigned,Higgs_fulfills_req_assignment)
endif
end subroutine assign_Higgs_to_peaks
!------------------------------------------------------------------------------------
subroutine evaluate_peak(peak, table)
! Evaluates the peak information for a given Higgs boson combination and dominant Higgs
! (both have to be assigned to the peak before calling this subroutine!)
!------------------------------------------------------------------------------------
use usefulbits, only : div, np, Hneut, small, vsmall
implicit none
type(mupeak) :: peak
type(mutable) :: table
integer :: j,k
integer :: NHiggs,Hindex
double precision :: normalization
NHiggs=0
do j=lbound(peak%Higgs_comb,dim=1),ubound(peak%Higgs_comb,dim=1)
if(peak%Higgs_comb(j).ne.0) NHiggs=NHiggs+1
enddo
peak%NHiggs_comb = NHiggs
!--Chose dominant Higgs in the best Higgs combination for weights and systematics
!--------------
! In rare cases there appears a segmentation fault,
! because peak%domH seems not to be initialized.
! HERE: Check that it is in a reasonable range.
if(peak%domH.ne.0.and.peak%domH.le.np(Hneut)) then
peak%channel_w(:) = peak%channel_w_allH(:,peak%domH)
peak%channel_w_corrected_eff(:) = peak%channel_w_corrected_eff_allH(:,peak%domH)
peak%channel_syst(:) = peak%channel_syst_allH(:,peak%domH)
peak%channel_systSM(:) = peak%channel_systSM_allH(:,peak%domH)
else
!-Part of fix:
peak%domH=0
!--------------
call get_weights_at_peak(peak, table)
!! If no Higgs is assigned we don't correct the efficiencies...
peak%channel_w_corrected_eff(:) = peak%channel_w(:)
!! peak%channel_w(:) = peak%channel_w_allH(:,1)
peak%channel_syst(:) = peak%channel_syst_allH(:,1)
peak%channel_systSM(:) = peak%channel_systSM_allH(:,1)
endif
!--Subtract the correlated uncertainties from mu uncertainty:
call correct_mu_uncertainty_of_peak(peak, table)
!--Add the channel contributions of the Higgses and adjust them to the "averaged weights":
peak%total_mu=0
!--n.b.: Have to set channel_mu to zero in case this subroutine is called several times.
do k=lbound(peak%channel_mu,dim=1),ubound(peak%channel_mu,dim=1)
peak%channel_mu(k)=0.0D0
peak%channel_w_model(k)=0.0D0
enddo
!--Loop over Higgses in best combination
do j=lbound(peak%Higgs_comb,dim=1),ubound(peak%Higgs_comb,dim=1)
if(peak%Higgs_comb(j).ne.0) then
Hindex=peak%Higgs_comb(j)
!----Loop over the channels and add rates
do k=lbound(peak%channel_mu,dim=1),ubound(peak%channel_mu,dim=1)
peak%channel_mu(k)=peak%channel_mu(k)+ &
& peak%channel_mu_allH(k,Hindex)*peak%channel_w_corrected_eff_allH(k,Hindex)
peak%total_mu = peak%total_mu + &
& peak%channel_mu_allH(k,Hindex)*peak%channel_w_corrected_eff_allH(k,Hindex)
enddo
endif
enddo
do k=lbound(peak%channel_mu,dim=1),ubound(peak%channel_mu,dim=1)
!---Calculate channel weights of the model, using the possibly combined rates.
! (TS 20/04/2013)
peak%channel_w_model(k)=div(peak%channel_mu(k),peak%total_mu,0.0D0,1.0D9)
!--Reweight the rates to obtain the channel_mu
peak%channel_mu(k)=div(peak%channel_mu(k),peak%channel_w_corrected_eff(k),0.0D0,1.0D9)
enddo
!--If no Higgs boson has been assigned, use the SM weight at the peak position for
! the channel weight of the model (TS26/04/2013):
if(peak%domH.eq.0) then
peak%channel_w_model = peak%channel_w
endif
!--In the (unphysical) case of negative channel rates, we have to take care that the
! model channel weights are still positive and between 0 and 1:
normalization = 0.0D0
do k=lbound(peak%channel_w_model,dim=1),ubound(peak%channel_w_model,dim=1)
normalization = normalization + abs(peak%channel_w_model(k))
enddo
if(abs(normalization).gt.small) then
do k=lbound(peak%channel_w_model,dim=1),ubound(peak%channel_w_model,dim=1)
peak%channel_w_model(k) = div(abs(peak%channel_w_model(k)),&
& normalization,1.0D0/peak%Nc,1.0D0)
enddo
else
!--If the predicted signal strength is zero, use SM weights
peak%channel_w_model = peak%channel_w
endif
if(abs(sum(peak%channel_w_model)-1.0D0).gt.small) then
write(*,*) "WARNING: Channel weights of the model are not correctly normalized:"
write(*,*) peak%channel_w_model
endif
end subroutine evaluate_peak
!------------------------------------------------------------------------------------
subroutine calculate_total_pc_chisq(csq_tot, csq_mu, csq_mh, N, Nmu, Nmh)
! Calculates the total chi^2 value with the peak-centered chi^2 method. This
! subroutine is called from evaluate_model in the HiggsSignals run.
!------------------------------------------------------------------------------------
implicit none
double precision, allocatable :: csq_mu_in(:), csq_mh_in(:,:), csq0(:), csq0_nocorr(:)
double precision, intent(out) :: csq_tot, csq_mu, csq_mh
integer, intent(out) :: N, Nmu, Nmh
integer :: i, ii, iii, j,jj, iter, Niterations
logical :: iterate
! Need to do iterations of the following procedure. Due to modifications in the
! Higgs-to-peak assignments necessary for so-called assignment groups (i.e. a set of
! observables which should take over the assignment our their leading observable,
! which should be the one with a mass measurement), the covariance matrices of the Higgs
! mass part change, and therefore also the chi^2 contribution from the Higgs mass.
! Since a cutoff chi^2(tot) < chi^2(max) applies in specific cases, this cutoff has to be
! re-evaluated a few times to converge to the correct total chi^2 evaluation.
iterate=.True.
Niterations=0
do while(iterate)
call calculate_mu_chisq(csq0, Nmu, 2)
!--Debugging
! call calculate_mu_chisq(csq0_nocorr, Nmu, 2) ! csq0 without correlations
!--
call calculate_mu_chisq(csq_mu_in, Nmu, 0)
call calculate_mh_chisq(csq_mh_in, Nmh)
!--Debugging
! write(*,*) "chi2 values (i, max with corr, max without corr, csq_mu, csq_mh)"
! do i=1,size(csq0)
! ! write(*,*) i, csq0(i), csq0_nocorr(i), csq_mu_in(i), csq_mh_in(1,i)
! write(*,*) i, csq0(i), csq_mu_in(i), csq_mh_in(1,i)
! enddo
iii=0
do i=1, size(analyses)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
! write(*,*) "analyses(",i,")%peaks(",ii,")%Higgs_assignment_forced = ",analyses(i)%peaks(ii)%Higgs_assignment_forced
if(analyses(i)%peaks(ii)%Higgs_assignment_forced.eq.0.and.(.not.maximalchisq).or.&
& analyses(i)%peaks(ii)%Higgs_assignment_forced.eq.1.and.(.not.maximalchisq).and.pdf.eq.1) then
if((csq_mu_in(iii)+sum(csq_mh_in(:,iii))).gt.csq0(iii).and.&
& analyses(i)%peaks(ii)%NHiggs_comb.gt.0.and.analyses(i)%table%mhchisq.eq.1) then
analyses(i)%peaks(ii)%undo_assignment=1
!---Now, undo Higgs-to-peak-assignment for the whole group (if existent)
if(len(trim(analyses(i)%peaks(ii)%assignmentgroup)).ne.0) then
do j=1, size(analyses)
do jj=lbound(analyses(j)%peaks,dim=1),ubound(analyses(j)%peaks,dim=1)
if(analyses(i)%peaks(ii)%assignmentgroup.eq.&
& analyses(j)%peaks(jj)%assignmentgroup) then
analyses(j)%peaks(jj)%undo_assignment=1
endif
! write(*,*) 'hello, undo assignment, j, jj = ', j, jj, ", undo assignment = ",analyses(j)%peaks(jj)%undo_assignment
enddo
enddo
endif
endif
endif
enddo
enddo
call correcting_Higgs_to_peak_assignment(iterate)
if(iterate) Niterations = Niterations + 1
deallocate(csq_mu_in, csq_mh_in)
enddo
!! if(Niterations.gt.0) write(*,*) "Ran ",Niterations," iterations to determine Higgs to peak assignment."
! After these iterations, the code should know the correct assignments.
call calculate_mh_chisq(csq_mh_in, Nmh) ! This will undo the assignments, if necessary
! call calculate_mu_chisq(csq0, Nmu, 1)
! call calculate_mu_chisq(csq0_nocorr, Nmu, 2) ! csq0 without correlations
call calculate_mu_chisq(csq_mu_in, Nmu, 0) ! Need to evaluate this again with new assignments
!Calculate total ndf:
N = Nmu + Nmh
csq_mu = 0.0D0
csq_mh = 0.0D0
csq_tot = 0.0D0
iii=0
do i=1, size(analyses)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
!--Only allow positive chisq contributions if wanted
if(minimalchisq) then
if(csq_mu_in(iii).lt.0.0D0) csq_mu_in(iii) = 0.0D0
do j=lbound(csq_mh_in, dim=1), ubound(csq_mh_in, dim=1)
if(csq_mh_in(j,iii).lt.0.0D0) csq_mh_in(j,iii) = 0.0D0
enddo
endif
!--Assign chisq_mu and chisq_mh such that the total chisq does not exceed the maximum
!--chisq csq0
if(maximalchisq) then
analyses(i)%peaks(ii)%chisq_mu = min(csq_mu_in(iii),csq0(iii))
analyses(i)%peaks(ii)%chisq_mh = min(csq0(iii)-analyses(i)%peaks(ii)%chisq_mu, &
& sum(csq_mh_in(:,iii)))
!TESTING: comment out this -->
! elseif(analyses(i)%peaks(ii)%Higgs_assignment_forced.eq.0) then
! analyses(i)%peaks(ii)%chisq_mu = min(csq_mu_in(iii),csq0(iii))
! analyses(i)%peaks(ii)%chisq_mh = min(csq0(iii)-analyses(i)%peaks(ii)%chisq_mu, &
!& sum(csq_mh_in(:,iii)))
!! write(*,*) csq0(iii),csq_mu_in(iii),sum(csq_mh_in(:,iii))
! NEW FOR CORRECTED ASSIGNMENTS:
! elseif(analyses(i)%peaks(ii)%Higgs_assignment_forced.eq.1.and.&
!& analyses(i)%peaks(ii)%domH.eq.0) then
elseif(analyses(i)%peaks(ii)%domH.eq.0) then
analyses(i)%peaks(ii)%chisq_mu = csq0(iii)
analyses(i)%peaks(ii)%chisq_mh = 0.0D0
else
!! write(*,*) "HtP assignment is forced for analysis: ",iii
analyses(i)%peaks(ii)%chisq_mu = csq_mu_in(iii)
analyses(i)%peaks(ii)%chisq_mh = sum(csq_mh_in(:,iii))
!! write(*,*) csq0(iii),csq_mu_in(iii),sum(csq_mh_in(:,iii))
endif
analyses(i)%peaks(ii)%chisq_tot = analyses(i)%peaks(ii)%chisq_mu + &
& analyses(i)%peaks(ii)%chisq_mh
analyses(i)%peaks(ii)%chisq_max = csq0(iii)
csq_mu = csq_mu + analyses(i)%peaks(ii)%chisq_mu
csq_mh = csq_mh + analyses(i)%peaks(ii)%chisq_mh
csq_tot = csq_tot + analyses(i)%peaks(ii)%chisq_tot
enddo
enddo
deallocate(csq_mu_in, csq_mh_in)
! write(*,*) "End of subroutine calculate_total_pc_chisq."
end subroutine calculate_total_pc_chisq
!-----------------------------------------------------------------------------------
subroutine correcting_Higgs_to_peak_assignment(iterate)
!-----------------------------------------------------------------------------------
use usefulbits, only : np, Hneut
implicit none
integer :: i, ii, k
logical, intent(inout) :: iterate
iterate=.False.
do i=1, size(analyses)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
if(analyses(i)%peaks(ii)%undo_assignment.eq.1.and.analyses(i)%peaks(ii)%domH.ne.0)then
!! write(*,*) "Correcting HtP."
iterate=.True.
do k=1,np(Hneut)
analyses(i)%peaks(ii)%Higgs_comb(k)=0
enddo
analyses(i)%peaks(ii)%domH=0
call evaluate_peak(analyses(i)%peaks(ii),analyses(i)%table)
!! analyses(i)%peaks(ii)%undo_assignment=0
endif
enddo
enddo
end subroutine correcting_Higgs_to_peak_assignment
!------------------------------------------------------------------------------------
subroutine create_covariance_matrices()
!------------------------------------------------------------------------------------
if(.not.allocated(analyses)) then
stop 'Error in subroutine create_covariance_matrices: analyses is not allocated.'
endif
! write(*,*) "hello: Called subroutine create_covariance_matrices..."
if(allocated(cov)) deallocate(cov)
call create_covariance_matrix_mu(0)
if(pdf.eq.2) then
! if(useaveragemass) then
if(allocated(cov_mh_av)) deallocate(cov_mh_av)
call create_covariance_matrix_mh_av(0)
if(allocated(cov_mh_av_max)) deallocate(cov_mh_av_max)
call create_covariance_matrix_mh_av(1)
! else
if(allocated(cov_mhneut)) deallocate(cov_mhneut)
call create_covariance_matrix_mhneut(0)
if(allocated(cov_mhneut_max)) deallocate(cov_mhneut_max)
call create_covariance_matrix_mhneut(1)
! endif
endif
end subroutine create_covariance_matrices
!------------------------------------------------------------------------------------
subroutine calculate_mu_chisq(csq_mu, N, domax)
!------------------------------------------------------------------------------------
! use usefulbits_hs, only : peaklist, cov
use numerics, only : invmatrix, matmult
integer :: i, ii, iii
double precision, allocatable :: v(:), vmat(:,:), invcov(:,:), v2(:)
double precision, allocatable, intent(out) :: csq_mu(:)
character(LEN=50) :: title = "covariance matrix for signal strength mu"
integer, intent(out) :: N
integer, intent(in) :: domax ! if 1, then calculate maximal chisq
if(allocated(cov)) deallocate(cov)
call create_covariance_matrix_mu(domax)
if(allocated(mu_vector)) deallocate(mu_vector)
N = size(cov,dim=1)
allocate(v(N), vmat(N,1),invcov(N,N), v2(N), csq_mu(N))
allocate(mu_vector(N))
!! write(*,*) ' domax = ',domax
!-First construct the vector (mupred - muobs)_iii
iii=0
do i=1, size(analyses, dim=1)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
if(domax.ge.1) then
v(iii) = analyses(i)%peaks(ii)%mu
else
v(iii) = analyses(i)%peaks(ii)%mu - analyses(i)%peaks(ii)%total_mu
endif
vmat(iii,1) = v(iii)
enddo
enddo
! Copy vector into global module vector (for later access)
mu_vector = v
call invmatrix(cov,invcov)
call matmult(invcov,vmat,v2,N,1)
!! write(*,*) "Calculating mu chi^2. domax = ", domax
do i=1, N
csq_mu(i) = v(i)*v2(i)
!! write(*,*) i, analyses(i)%peaks(1)%total_mu,csq_mu(i)
enddo
!! write(*,*) "sum = ", sum(csq_mu(:))
deallocate(v,vmat,invcov,v2)
end subroutine calculate_mu_chisq
!------------------------------------------------------------------------------------
subroutine calculate_mh_chisq(csq_mh_out, ndf)
!------------------------------------------------------------------------------------
! use usefulbits_hs, only : peaklist
use usefulbits, only : np, Hneut, vsmall
use numerics, only : invmatrix, matmult
integer, intent(out) :: ndf
integer :: i, ii, iii, k, nH, N, Hindex
double precision, allocatable :: v(:,:), invcov(:,:), v2(:), vmat(:,:)
double precision, allocatable, intent(out) :: csq_mh_out(:,:)
double precision :: m_av_iii, dm_av_iii
if((pdf.eq.1).or.(pdf.eq.3)) then
!-First, determine number of peaks:
N = 0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do j=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
N = N + 1
enddo
enddo
nH = np(Hneut)
if(useaveragemass) then
allocate(csq_mh_out(1,N))
else
allocate(csq_mh_out(nH,N))
endif
!-First, fill the chisq vector with zeros:
csq_mh_out(:,:) = 0.0D0
iii=0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
if(useaveragemass) then
call get_average_mass_for_peak(analyses(i)%peaks(ii)%Higgs_comb, &
& analyses(i)%peaks(ii), m_av_iii, dm_av_iii)
if(m_av_iii.gt.vsmall.and.analyses(i)%table%mhchisq.eq.1) then !!! BUG FIX (TS 03/02/2015)
csq_mh_out(1,iii) = csq_mh(m_av_iii, analyses(i)%peaks(ii)%mpeak, dm_av_iii, &
& analyses(i)%peaks(ii)%dm)
endif
else
do k=1,nH
Hindex = analyses(i)%peaks(ii)%Higgs_comb(k)
if(Hindex.ne.0.and.analyses(i)%table%mhchisq.eq.1) then
csq_mh_out(Hindex,iii) = csq_mh(analyses(i)%peaks(ii)%Higgses(Hindex)%m, &
& analyses(i)%peaks(ii)%mpeak,analyses(i)%peaks(ii)%Higgses(Hindex)%dm, &
& analyses(i)%peaks(ii)%dm)
endif
enddo
endif
enddo
enddo
else if(pdf.eq.2) then
if(useaveragemass) then
if(allocated(cov_mh_av)) deallocate(cov_mh_av)
call create_covariance_matrix_mh_av(0)
N = size(cov_mh_av,dim=1)
allocate(v(1,N), v2(N), csq_mh_out(1,N), vmat(N,1))
do i=1,N
v(1,i) = 0.0D0
enddo
iii=0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
call get_average_mass_for_peak(analyses(i)%peaks(ii)%Higgs_comb, &
& analyses(i)%peaks(ii), m_av_iii, dm_av_iii)
if(m_av_iii.gt.0) then
v(1,iii) = m_av_iii - analyses(i)%peaks(ii)%mpeak
endif
enddo
enddo
call invmatrix(cov_mh_av(:,:),invcov)
vmat(:,1)=v(1,:)
call matmult(invcov,vmat,v2,N,1)
do i=1, N
csq_mh_out(1,i) = v(1,i)*v2(i)
enddo
else
if(allocated(cov_mhneut)) deallocate(cov_mhneut)
call create_covariance_matrix_mhneut(0)
nH = size(cov_mhneut,dim=1)
N = size(cov_mhneut,dim=2)
allocate(v(nH,N), v2(N), csq_mh_out(nH,N), vmat(N,1))
!-Construct the vector (mhpred - mhobs)_iii. Do this for every Higgs boson
!-of the model. If the Higgs boson (Hindex) is not assigned to the peak, we set
!-the entry of the vector to zero.
!-First, fill the vectors with zeros:
do k=1,nH
do i=1,N
v(k,i) = 0.0D0
enddo
enddo
do k=1,nH
iii=0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
Hindex = analyses(i)%peaks(ii)%Higgs_comb(k)
if(Hindex.ne.0) then
v(Hindex,iii) = analyses(i)%peaks(ii)%Higgses(Hindex)%m - &
& analyses(i)%peaks(ii)%mpeak
endif
enddo
enddo
enddo
do k=1,nH !-n.b.: this loops now over Hindex
call invmatrix(cov_mhneut(k,:,:),invcov)
vmat(:,1)=v(k,:)
! call matmult(invcov,v(k,:),v2,N,1)
call matmult(invcov,vmat,v2,N,1)
do i=1, N
csq_mh_out(k,i) = v(k,i)*v2(i)
if(csq_mh_out(k,i).ge.0.00001D0) then
!! write(*,*) "hello: ",k,i,v(k,i),sign(1.0D0,v(k,i)), csq_mh_out(k,i)
endif
enddo
enddo
endif
deallocate(v,v2,vmat,invcov)
endif
if(useaveragemass) then
!--Calculate additional chi^2 contribution from the mass separation
iii=0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
if(analyses(i)%table%mhchisq.eq.1) then
csq_mh_out(1,iii) = csq_mh_out(1,iii) + csq_mass_separation_weighted( &
& analyses(i)%peaks(ii)%Higgs_comb, analyses(i)%peaks(ii))
endif
enddo
enddo
endif
! write(*,*) "before deallocate csq_mh_out"
! deallocate(csq_mh_out)
! write(*,*) "after deallocate csq_mh_out"
!--Determine number of observables ndf. This checks for each peak whether the mass
!--resolution is less than a huge number and thus the chisq evaluation from the mass
!--measurement is enabled.
ndf=0
if(pdf.eq.2.or.pdf.eq.3) then
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
if(analyses(i)%table%mhchisq.eq.1) ndf=ndf+1
enddo
enddo
endif
! write(*,*) "End of subroutine calculate_mh_chisq."
end subroutine calculate_mh_chisq
!------------------------------------------------------------------------------------
subroutine create_covariance_matrix_mhneut(domax)
!------------------------------------------------------------------------------------
use usefulbits, only : np, Hneut
implicit none
double precision :: dratesq, dmu0sq, dmtemp
character(LEN=50) :: title
integer, intent(in) :: domax ! = 0 or 1. If set to 1, then fill all off-diagonal elements
! with squared theoretical mass uncertainty, corresponding to
! a complete Higgs-to-peaks assignment
integer :: Npeaks,i,ii,iii,j,jj,jjj,k,Hindex_i, Hindex_j
!! write(*,*) "Create Higgs mass covariance matrix"
Npeaks = 0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do j=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
Npeaks = Npeaks + 1
enddo
enddo
if(domax.eq.0) then
allocate(cov_mhneut(np(Hneut),Npeaks,Npeaks))
elseif(domax.eq.1) then
allocate(cov_mhneut_max(np(Hneut),Npeaks,Npeaks))
else
- stop'ERROR in subroutine create_covariance_matrix_mhneut. Specify domax correctly!'
+ stop 'ERROR in subroutine create_covariance_matrix_mhneut. Specify domax correctly!'
endif
!-First, fill all elements of the covariance matrices with zero except the diagonal
!-elements which contain the experimental mass resolution squared
do k=1,np(Hneut)
iii=0
do i=1, size(analyses)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
jjj=0
do j=1, size(analyses)
do jj=lbound(analyses(j)%peaks,dim=1),ubound(analyses(j)%peaks,dim=1)
jjj=jjj+1
if(domax.eq.0) cov_mhneut(k,iii,jjj) = 0.0D0
if(domax.eq.1) cov_mhneut_max(k,iii,jjj) = 0.0D0
if(iii.eq.jjj) then
!-----Deactivate mh chisq contributions for those analysis which are tagged mhchisq==0
!-----by setting the uncertainty to a very large value.
if(analyses(i)%table%mhchisq.eq.1) then
if(domax.eq.0) cov_mhneut(k,iii,jjj) = analyses(i)%peaks(ii)%dm**2
if(domax.eq.1) cov_mhneut_max(k,iii,jjj) = analyses(i)%peaks(ii)%dm**2
else
if(domax.eq.0) cov_mhneut(k,iii,jjj) = vlarge**2
if(domax.eq.1) cov_mhneut_max(k,iii,jjj) = vlarge**2
endif
endif
enddo
enddo
enddo
enddo
enddo
!-Now, look for Higgs bosons shared by 2 peaks and fill the corresponding cov. matrix
!-element with the theoretical uncertainty squared of this Higgs boson.
do k=1,np(Hneut)
iii=0
do i=1, size(analyses)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
jjj=0
do j=1, size(analyses)
do jj=lbound(analyses(j)%peaks,dim=1),ubound(analyses(j)%peaks,dim=1)
jjj=jjj+1
! Hindex_i = analyses(i)%peaks(ii)%Higgs_comb(k)
! Hindex_j = analyses(j)%peaks(jj)%Higgs_comb(k)
! if((Hindex_i.eq.Hindex_j).and.(Hindex_i.ne.0).and.domax.eq.0) then
if(int_in_array(k,analyses(i)%peaks(ii)%Higgs_comb).and.int_in_array(k, &
& analyses(j)%peaks(jj)%Higgs_comb).and.domax.eq.0) then
! write(*,*) 'debug: k = ',k,', jjj = ',jjj,' comb1 =, ', &
! & analyses(i)%peaks(ii)%Higgs_comb,' comb2 = ',analyses(j)%peaks(jj)%Higgs_comb
if(correlations_mh.or.(.not.correlations_mh.and.iii.eq.jjj)) then
! if(anticorrmh) then
! cov_mhneut(k,iii,jjj)=cov_mhneut(k,iii,jjj) + &
!& sign(1.0D0,(analyses(i)%peaks(ii)%Higgses(k)%m-analyses(i)%peaks(ii)%mpeak))* &
!& sign(1.0D0,(analyses(j)%peaks(jj)%Higgses(k)%m-analyses(j)%peaks(jj)%mpeak))* &
!& analyses(i)%peaks(ii)%Higgses(k)%dm**2
! else
cov_mhneut(k,iii,jjj)=cov_mhneut(k,iii,jjj) + &
& analyses(i)%peaks(ii)%Higgses(k)%dm**2
! endif
endif
elseif(domax.eq.1) then
if(correlations_mh.or.(.not.correlations_mh.and.iii.eq.jjj)) then
!
!NEW TEST (sign dependence):
! if(anticorrmh) then
! cov_mhneut_max(k,iii,jjj)= cov_mhneut_max(k,iii,jjj) + &
!& sign(1.0D0,(analyses(i)%peaks(ii)%Higgses(k)%m-analyses(i)%peaks(ii)%mpeak))* &
!& sign(1.0D0,(analyses(j)%peaks(jj)%Higgses(k)%m-analyses(j)%peaks(jj)%mpeak))* &
!& analyses(i)%peaks(ii)%Higgses(k)%dm**2
! else
cov_mhneut_max(k,iii,jjj)= cov_mhneut_max(k,iii,jjj) + &
& analyses(i)%peaks(ii)%Higgses(k)%dm**2
! endif
endif
endif
enddo
enddo
enddo
enddo
enddo
!! title = "mass covariance matrix for maximal assignment, first Higgs boson"
!! if(domax.eq.1) call print_dble_matrix(cov_mhneut_max(1,:,:), title)
! title = "covariance matrix for mh1"
! call print_dble_matrix(cov_mhneut(1,:,:), title)
! title = "covariance matrix for mh2"
! call print_dble_matrix(cov_mhneut(2,:,:), title)
!! title = "covariance matrix for signal strength mh3"
!! call print_dble_matrix(cov_mhneut(3,:,:), title)
end subroutine create_covariance_matrix_mhneut
!------------------------------------------------------------------------------------
subroutine create_covariance_matrix_mh_av(domax)
!------------------------------------------------------------------------------------
use usefulbits, only : np, Hneut
implicit none
double precision :: dratesq, dmu0sq, dmtemp
character(LEN=50) :: title
integer, intent(in) :: domax ! = 0 or 1. If set to 1, then fill all off-diagonal elements
! with squared theoretical mass uncertainty, corresponding to
! a complete Higgs-to-peaks assignment
integer :: Npeaks,i,ii,iii,j,jj,jjj,k,Hindex_i, Hindex_j
integer, dimension(np(Hneut)) :: ones
double precision :: m_av_iii, m_av_jjj
double precision :: dm_av_iii, dm_av_jjj
! write(*,*) "Create Higgs mass covariance matrix"
ones = 1
Npeaks = 0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do j=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
Npeaks = Npeaks + 1
enddo
enddo
if(domax.eq.0) then
allocate(cov_mh_av(Npeaks,Npeaks))
elseif(domax.eq.1) then
allocate(cov_mh_av_max(Npeaks,Npeaks))
else
- stop'ERROR in subroutine create_covariance_matrix_mh_av. Specify domax correctly!'
+ stop 'ERROR in subroutine create_covariance_matrix_mh_av. Specify domax correctly!'
endif
!-First, fill all elements of the covariance matrices with zero except the diagonal
!-elements which contain the experimental mass resolution squared
! do k=1,np(Hneut)
iii=0
do i=1, size(analyses)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
jjj=0
do j=1, size(analyses)
do jj=lbound(analyses(j)%peaks,dim=1),ubound(analyses(j)%peaks,dim=1)
jjj=jjj+1
if(domax.eq.0) cov_mh_av(iii,jjj) = 0.0D0
if(domax.eq.1) cov_mh_av_max(iii,jjj) = 0.0D0
if(iii.eq.jjj) then
if(analyses(i)%table%mhchisq.eq.1) then
if(domax.eq.0) cov_mh_av(iii,jjj) = analyses(i)%peaks(ii)%dm**2
if(domax.eq.1) cov_mh_av_max(iii,jjj) = analyses(i)%peaks(ii)%dm**2
else
if(domax.eq.0) cov_mh_av(iii,jjj) = vlarge**2
if(domax.eq.1) cov_mh_av_max(iii,jjj) = vlarge**2
endif
endif
enddo
enddo
enddo
enddo
!enddo
!-Now, look for Higgs bosons shared by 2 peaks and fill the corresponding cov. matrix
!-element with the theoretical uncertainty squared of this Higgs boson.
do k=1,np(Hneut)
iii=0
do i=1, size(analyses)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
call get_average_mass_for_peak(analyses(i)%peaks(ii)%Higgs_comb, &
& analyses(i)%peaks(ii), m_av_iii, dm_av_iii)
! write(*,*) "Higgs comb = ",analyses(i)%peaks(ii)%Higgs_comb," average mass = ",m_av_iii, dm_av_iii
jjj=0
do j=1, size(analyses)
do jj=lbound(analyses(j)%peaks,dim=1),ubound(analyses(j)%peaks,dim=1)
jjj=jjj+1
call get_average_mass_for_peak(analyses(j)%peaks(jj)%Higgs_comb, &
& analyses(j)%peaks(jj), m_av_jjj, dm_av_jjj)
if(int_in_array(k,analyses(i)%peaks(ii)%Higgs_comb).and.int_in_array(k, &
& analyses(j)%peaks(jj)%Higgs_comb).and.domax.eq.0) then
if(correlations_mh.or.(.not.correlations_mh.and.iii.eq.jjj)) then
! if(anticorrmh) then
! cov_mh_av(iii,jjj)=cov_mh_av(iii,jjj) + &
!& sign(1.0D0,(m_av_iii-analyses(i)%peaks(ii)%mpeak)) * &
!& sign(1.0D0,(m_av_jjj-analyses(j)%peaks(jj)%mpeak)) * &
!& analyses(i)%peaks(ii)%Higgses(k)%mu/analyses(i)%peaks(ii)%total_mu * &
!& analyses(j)%peaks(jj)%Higgses(k)%mu/analyses(j)%peaks(jj)%total_mu * &
!& dm_av_iii * dm_av_jjj
! else
cov_mh_av(iii,jjj)=cov_mh_av(iii,jjj) + &
& analyses(i)%peaks(ii)%Higgses(k)%mu/analyses(i)%peaks(ii)%total_mu * &
& analyses(j)%peaks(jj)%Higgses(k)%mu/analyses(j)%peaks(jj)%total_mu * &
& dm_av_iii * dm_av_jjj
! endif
endif
elseif (domax.eq.1) then
if(correlations_mh.or.(.not.correlations_mh.and.iii.eq.jjj)) then
call get_average_mass_for_peak(ones, analyses(i)%peaks(ii), m_av_iii, dm_av_iii)
call get_average_mass_for_peak(ones, analyses(j)%peaks(jj), m_av_jjj, dm_av_jjj)
! if(anticorrmh) then
! cov_mh_av_max(iii,jjj)=cov_mh_av_max(iii,jjj) + &
!& sign(1.0D0,(m_av_iii-analyses(i)%peaks(ii)%mpeak)) * &
!& sign(1.0D0,(m_av_jjj-analyses(j)%peaks(jj)%mpeak)) * &
!& analyses(i)%peaks(ii)%Higgses(k)%mu/analyses(i)%peaks(ii)%total_mu * &
!& analyses(j)%peaks(jj)%Higgses(k)%mu/analyses(j)%peaks(jj)%total_mu * &
!& dm_av_iii * dm_av_jjj
! else
cov_mh_av_max(iii,jjj)=cov_mh_av_max(iii,jjj) + &
& analyses(i)%peaks(ii)%Higgses(k)%mu/analyses(i)%peaks(ii)%total_mu * &
& analyses(j)%peaks(jj)%Higgses(k)%mu/analyses(j)%peaks(jj)%total_mu * &
& dm_av_iii * dm_av_jjj
! endif
endif
endif
enddo
enddo
enddo
enddo
enddo
! title = "mass averaged covariance matrix"
!! if(domax.eq.1) call print_dble_matrix(cov_mh_av_max(1,:,:), title)
!! title = "covariance matrix for signal strength mh2"
! call print_dble_matrix(cov_mh_av(:,:), title)
!! title = "covariance matrix for signal strength mh3"
!! call print_dble_matrix(cov_mh_av(3,:,:), title)
end subroutine create_covariance_matrix_mh_av
!------------------------------------------------------------------------------------
subroutine correct_mu_uncertainty_of_peak(peak, table)
! The mu uncertainty as given in the mutable contains also systematic uncertainties for
! the luminosity and signal rate. These uncertainties are highly correlated to other
! analyses. Therefore, we subtract them here to obtain the intrinsic mu uncertainty of
! this peak. The correlated uncertainties enter later via the covariance matrix.
!------------------------------------------------------------------------------------
use usefulbits_hs, only : usescalefactor, output_level,symmetricerrors,&
& absolute_errors, THU_included!, withcorrexpsyst
implicit none
type(mupeak), intent(inout) :: peak
type(mutable), intent(in) :: table
! double precision, intent(in) :: dlumi ! Uncertainty of Luminosity (relative)
integer :: j
double precision :: dcsq, dmulow0sq, dmuup0sq, allsystsq, dmuaverage, dmuaverage0sq, mu
dcsq = 0
do j=1, peak%Nc
dcsq = dcsq + peak%channel_systSM(j)**2
enddo
if(absolute_errors) then
mu=peak%mu_original
else
mu=peak%mu
endif
! if(.not.symmetricerrors) then
if(THU_included) then
! if(withcorrexpsyst) then
! allsystsq = 0.0D0
! do j=lbound(table%correxpsyst,dim=1),ubound(table%correxpsyst,dim=1)
! allsystsq = allsystsq + table%correxpsyst(j)**2
! enddo
! dmulow0sq = (peak%dmulow)**2-(allsystsq + dcsq)*mu**2
! dmuup0sq = (peak%dmuup)**2-(allsystsq + dcsq)*mu**2
! else
dmulow0sq = (peak%dmulow)**2-(table%dlumi*mu)**2-dcsq*mu**2
dmuup0sq = (peak%dmuup)**2-(table%dlumi*mu)**2-dcsq*mu**2
! endif
else
!- In the case of future projections we usually use measurements
!- without theoretical uncertainty included:
dmulow0sq = (peak%dmulow)**2
dmuup0sq = (peak%dmuup)**2
endif
if(usescalefactor) then
dmulow0sq = peak%scale_mu**2*dmulow0sq
dmuup0sq = peak%scale_mu**2*dmuup0sq
endif
if(.not.symmetricerrors) then
peak%dmulow0sq = dmulow0sq
peak%dmuup0sq = dmuup0sq
else
if(peak%dmulow0sq.lt.0.0d0.or.peak%dmuup0sq.lt.0.0d0) then
write(*,*) "WARNING: squared intrinsic mu uncertainty is negative!"
endif
peak%dmulow0sq = (sqrt(abs(dmulow0sq))+sqrt(abs(dmuup0sq)))**2/4.0d0
peak%dmuup0sq = (sqrt(abs(dmulow0sq))+sqrt(abs(dmuup0sq)))**2/4.0d0
endif
! else
! dmuaverage = (peak%dmulow+peak%dmuup)/2.
! if(withcorrexpsyst) then
! allsystsq = 0.0D0
! do j=lbound(table%correxpsyst,dim=1),ubound(table%correxpsyst,dim=1)
! allsystsq = allsystsq + table%correxpsyst(j)**2
! enddo
! dmuaverage0sq = (dmuaverage)**2-(allsystsq + dcsq)*peak%mu**2
! else
! dmuaverage0sq = (dmuaverage)**2-(table%dlumi*peak%mu)**2-dcsq*peak%mu**2
! endif
! if(usescalefactor) then
! dmuaverage0sq = peak%scale_mu**2*dmuaverage0sq
! endif
! peak%dmulow0sq = dmuaverage0sq
! peak%dmuup0sq = dmuaverage0sq
! endif
! if(output_level.ne.0) then
if(peak%dmulow0sq.lt.0.0D0) then
write(*,*) "WARNING: Negative intrinsic (lower) error squared for observable ID = ",&
peak%ID,", with value ",peak%dmulow0sq
endif
if(peak%dmuup0sq.lt.0.0D0) then
write(*,*) "WARNING: Negative intrinsic (upper) error squared for observable ID = ",&
peak%ID,", with value ",peak%dmuup0sq
endif
! endif
!! write(*,*) "Original / Corrected uncertainties (low): ",peak%dmulow, sqrt(dmulow0sq)
!! write(*,*) "Original / Corrected uncertainties (up): ",peak%dmuup, sqrt(dmuup0sq)
end subroutine correct_mu_uncertainty_of_peak
!------------------------------------------------------------------------------------
subroutine create_covariance_matrix_mu(domax)
!------------------------------------------------------------------------------------
use usefulbits_hs, only : withcorrexpsyst, absolute_errors, corrlist
use expt_syst, only : get_expt_syst_corr_for_peaks
implicit none
integer, intent(in) :: domax ! if 1, then use predicted mu == 0
double precision :: dratesq, dmu0sq, s1, s2, mu_iii, mu_jjj, corrsyst, corrsystSM
double precision :: obs1dmu0sq,obs2dmu0sq
integer :: Npeaks
integer :: i,ii,iii,j,jj,jjj,k
character(LEN=50) :: title
logical :: corr
integer csqmax
! write(*,*) "Creating mu covariance matrix..."
!---TRY TO EVALUATE THE MAX CHISQ WITHOUT CORRELATIONS---!
if(domax.eq.1) then
csqmax = 1
corr=correlations_mu
elseif(domax.eq.2) then
csqmax = 1
corr=.False.
else
csqmax = 0
corr=correlations_mu
endif
!--------------------------------------------------------!
Npeaks = 0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
Npeaks = Npeaks + analyses(i)%Npeaks
enddo
allocate(cov(Npeaks,Npeaks))
iii=0
!--Loop twice over all peaks to construct matrix
do i=1, size(analyses)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
if(absolute_errors) then
mu_iii=analyses(i)%peaks(ii)%mu_original
else
mu_iii=analyses(i)%peaks(ii)%mu
endif
jjj=0
do j=1, size(analyses)
do jj=lbound(analyses(j)%peaks,dim=1),ubound(analyses(j)%peaks,dim=1)
jjj=jjj+1
if(absolute_errors) then
mu_jjj=analyses(j)%peaks(jj)%mu_original
else
mu_jjj=analyses(j)%peaks(jj)%mu
endif
if(usescalefactor) then
s1 = analyses(i)%peaks(ii)%scale_mu
s2 = analyses(j)%peaks(jj)%scale_mu
else
s1 = 1.0D0
s2 = 1.0D0
endif
cov(iii,jjj)=0.0D0
if(corr.or.(.not.corr.and.iii.eq.jjj)) then
call get_rate_uncertainties_sq_peaks(dratesq,analyses(i)%peaks(ii),&
& analyses(j)%peaks(jj),analyses(i)%table%collider, analyses(i)%table%energy,&
& analyses(j)%table%collider, analyses(j)%table%energy)
! write(*,*) "... done with getting rate uncertainties..."
if(anticorrmu) then
!-----Treat luminosity uncertainty as correlated systematic error if same collaboration:
if(analyses(i)%table%collaboration.eq.analyses(j)%table%collaboration) then
cov(iii,jjj)=cov(iii,jjj)+(s1*analyses(i)%table%dlumi*s2*analyses(j)%table%dlumi)&
& *(mu_iii*mu_jjj)
endif
corrsyst=0.0D0
!------Include correlated experimental systematic uncertainties (TS 2013-11-21)
if(withcorrexpsyst) then
! write(*,*) "... getting exp syst corr... "
if(iii.eq.jjj) then
call get_expt_syst_corr_for_peaks(corrsystSM, analyses(i)%peaks(ii),&
& mu_iii, analyses(j)%peaks(jj),mu_jjj, 0)
cov(iii,jjj)=cov(iii,jjj) - corrsystSM
endif
call get_expt_syst_corr_for_peaks(corrsyst, analyses(i)%peaks(ii),&
& mu_iii, analyses(j)%peaks(jj),mu_jjj, 1)
cov(iii,jjj)=cov(iii,jjj) + corrsyst
endif
! write(*,*) "... done!"
!------
if(useSMweights) then
cov(iii,jjj)=cov(iii,jjj)+ &
& (dratesq)*(analyses(i)%peaks(ii)%mu*analyses(j)%peaks(jj)%mu)
else
cov(iii,jjj)=cov(iii,jjj)+ &
& (dratesq)*(analyses(i)%peaks(ii)%total_mu*analyses(j)%peaks(jj)%total_mu)
endif
! write(*,*) "... done with mode anticorrmu=True..."
else ! anticorrmu=.False.
!-----Treat luminosity uncertainty as correlated systematic error if same collaboration:
if(analyses(i)%table%collaboration.eq.analyses(j)%table%collaboration) then
cov(iii,jjj)=cov(iii,jjj)+(s1*analyses(i)%table%dlumi*s2*analyses(j)%table%dlumi)&
& *abs(mu_iii*mu_jjj)
endif
if(useSMweights) then
cov(iii,jjj)=cov(iii,jjj)+ &
& (dratesq)*(analyses(i)%peaks(ii)%mu*analyses(j)%peaks(jj)%mu)
else
cov(iii,jjj)=cov(iii,jjj)+ &
& (dratesq)*(analyses(i)%peaks(ii)%total_mu*analyses(j)%peaks(jj)%total_mu)
endif
! write(*,*) "... done with mode anticorrmu=False..."
endif
endif
!----Add the intrinsic (uncorrelated) uncertainty of this peak to the diagonal elements:
if(iii.eq.jjj) then
call get_dmu0sq_peak(dmu0sq,analyses(i)%peaks(ii),csqmax)
cov(iii,jjj) = cov(iii,jjj) + dmu0sq
endif
!----NEW: Replace covariance matrix elements by official numbers if provided!
do k= lbound(corrlist,dim=1),ubound(corrlist,dim=1)
if((corrlist(k)%obsID1==analyses(i)%peaks(ii)%id.and.&
& corrlist(k)%obsID2==analyses(j)%peaks(jj)%id).or.&
& (corrlist(k)%obsID2==analyses(i)%peaks(ii)%id.and.&
& corrlist(k)%obsID1==analyses(j)%peaks(jj)%id)) then
call get_dmu0sq_peak(obs1dmu0sq,analyses(i)%peaks(ii),csqmax)
call get_dmu0sq_peak(obs2dmu0sq,analyses(j)%peaks(jj),csqmax)
cov(iii,jjj) = corrlist(k)%corr*sqrt(obs1dmu0sq)*sqrt(obs2dmu0sq)
endif
enddo
! write(*,*) iii,jjj, cov(iii,jjj)
enddo
enddo
enddo
enddo
! write(*,*) "... done!"
!! write(*,*) "signal strength covariance matrix:"
!! do iii=lbound(cov,dim=1),ubound(cov,dim=1)
!! write(*,*) "(",iii,",",iii,") = ",cov(iii,iii)
!! enddo
end subroutine create_covariance_matrix_mu
!------------------------------------------------------------------------------------
subroutine get_rate_uncertainties_sq_peaks_old(dratesq, peak1, peak2)
! Returns the sum of the squared theoretical uncertainties of the common
! production and decay rates of the two peak observables.
!------------------------------------------------------------------------------------
use usefulbits_HS, only : mupeak, delta_rate, useSMweights
type(mupeak), intent(in) :: peak1, peak2
double precision, intent(out) :: dratesq
integer :: i,j,p1,d1,p2,d2 !id1,id2
double precision :: res
res=0.0D0
do i=1,peak1%Nc
do j=1,peak2%Nc
p1 = peak1%channel_p_id(i)
d1 = peak1%channel_d_id(i)
p2 = peak2%channel_p_id(j)
d2 = peak2%channel_d_id(j)
! id1 = peak1%channel_id(i)
! p1 = int((id1-modulo(id1,10))/dble(10))
! d1 = modulo(id1,10)
! id2 = peak2%channel_id(j)
! p2 = int((id2-modulo(id2,10))/dble(10))
! d2 = modulo(id2,10)
! if(p1.eq.p2) res=res+delta_rate%dCS(p1)**2*peak1%channel_w(i)*peak2%channel_w(j)
! if(d1.eq.d2) res=res+delta_rate%dBR(d1)**2*peak1%channel_w(i)*peak2%channel_w(j)
if(p1.eq.p2) then
if(useSMweights) then
res=res+delta_rate%dCS(p1)**2*peak1%channel_w(i)*peak2%channel_w(j)
else
res=res+delta_rate%dCS(p1)**2*peak1%channel_w_model(i)*peak2%channel_w_model(j)
endif
endif
if(d1.eq.d2) then
if(useSMweights) then
res=res+delta_rate%dBR(d1)**2*peak1%channel_w(i)*peak2%channel_w(j)
else
res=res+delta_rate%dBR(d1)**2*peak1%channel_w_model(i)*peak2%channel_w_model(j)
endif
endif
enddo
enddo
dratesq=res
end subroutine get_rate_uncertainties_sq_peaks_old
!------------------------------------------------------------------------------------
subroutine get_rate_uncertainties_sq_peaks(dratesq, peak1, peak2, collider1, &
energy1, collider2, energy2)
! Returns the sum of the squared theoretical uncertainties of the common
! production and decay rates of the two peak observables.
!------------------------------------------------------------------------------------
use usefulbits_HS, only : mupeak, delta_rate, useSMweights
use usefulbits, only : small
type(mupeak), intent(in) :: peak1, peak2
character(LEN=*), intent(in) :: collider1, collider2
double precision, intent(in) :: energy1, energy2
double precision, intent(out) :: dratesq
integer :: i,j,id1,p1,d1,id2,p2,d2
double precision :: res,drcov1,drcov2,drsign !, delta
res=0.0D0
! write(*,*) "... getting rate uncertainties..."
! delta=0.0D0
do i=1,peak1%Nc
do j=1,peak2%Nc
p1 = peak1%channel_p_id(i)
d1 = peak1%channel_d_id(i)
p2 = peak2%channel_p_id(j)
d2 = peak2%channel_d_id(j)
! write(*,*) p1, p2, d1, d2
! id1 = peak1%channel_id(i)
! p1 = int((id1-modulo(id1,10))/dble(10))
! d1 = modulo(id1,10)
! id2 = peak2%channel_id(j)
! p2 = int((id2-modulo(id2,10))/dble(10))
! d2 = modulo(id2,10)
! if(p1.eq.p2) res=res+delta_rate%dCS(p1)**2*peak1%channel_w(i)*peak2%channel_w(j)
! if(d1.eq.d2) res=res+delta_rate%dBR(d1)**2*peak1%channel_w(i)*peak2%channel_w(j)
if((p1.gt.0).and.(p2.gt.0)) then
if(collider1.ne.'ILC'.and.collider2.ne.'ILC') then
if(delta_rate%CScov_ok.and.delta_rate%usecov) then
!-- (TS 29/03/2017) Select the correct covariance matrix for the XS:
if(abs(energy1-13.0d0).lt.small) then
drcov1=delta_rate%CS13cov(p1,p2)
else
drcov1=delta_rate%CScov(p1,p2)
endif
drsign = sign(1.0d0,drcov1)
if(abs(energy2-13.0d0).lt.small) then
drcov2=delta_rate%CS13cov(p1,p2)
drsign = sign(1.0d0,drcov2) ! Only overwrite sign when second peak is 13 TeV observable
else
drcov2=delta_rate%CScov(p1,p2)
endif
! write(*,*) "done with getting the covariance matrix elements..."
!--
if(useSMweights) then
! res=res+delta_rate%CScov(p1,p2)*peak1%channel_w(i)*peak2%channel_w(j)
res=res+drsign*sqrt(abs(drcov1*drcov2))*peak1%channel_w(i)*peak2%channel_w(j)
else
! res=res+delta_rate%CScov(p1,p2)*peak1%channel_w_model(i)*peak2%channel_w_model(j)
res=res+drsign*sqrt(abs(drcov1*drcov2))*peak1%channel_w_model(i)*peak2%channel_w_model(j)
endif
else
if(p1.eq.p2) then
if(useSMweights) then
res=res+delta_rate%dCS(p1)**2*peak1%channel_w(i)*peak2%channel_w(j)
else
res=res+delta_rate%dCS(p1)**2*peak1%channel_w_model(i)*peak2%channel_w_model(j)
endif
endif
endif
else if(collider1.eq.'ILC'.and.collider2.eq.'ILC') then
if(p1.eq.p2) then
if(useSMweights) then
res=res+delta_rate%dCS_ILC(p1)**2*peak1%channel_w(i)*peak2%channel_w(j)
else
res=res+delta_rate%dCS_ILC(p1)**2*peak1%channel_w_model(i)*peak2%channel_w_model(j)
endif
endif
endif
endif
! if(collider1.ne.'ILC'.and.collider2.ne.'ILC') then
! delta=delta_rate%dCS(p1)
! else
!---Set the theoretical uncertainty of production mode to zero if collider==ILC
! delta=0.0D0
! endif
! if(useSMweights) then
! res=res+delta**2*peak1%channel_w(i)*peak2%channel_w(j)
! else
! res=res+delta**2*peak1%channel_w_model(i)*peak2%channel_w_model(j)
! endif
! endif
! write(*,*) "...getting decay rate uncertainties..."
if((d1.gt.0).and.(d2.gt.0)) then
if(delta_rate%BRcov_ok.and.delta_rate%usecov) then
if(useSMweights) then
res=res+delta_rate%BRcov(d1,d2)*peak1%channel_w(i)*peak2%channel_w(j)
else
res=res+delta_rate%BRcov(d1,d2)*peak1%channel_w_model(i)*peak2%channel_w_model(j)
endif
else
if(d1.eq.d2) then
if(useSMweights) then
res=res+delta_rate%dBR(d1)**2*peak1%channel_w(i)*peak2%channel_w(j)
else
res=res+delta_rate%dBR(d1)**2*peak1%channel_w_model(i)*peak2%channel_w_model(j)
endif
endif
endif
endif
! write(*,*) "...done!"
enddo
enddo
dratesq=res
end subroutine get_rate_uncertainties_sq_peaks
!------------------------------------------------------------------------------------
subroutine get_cov_mu(matrix)
!------------------------------------------------------------------------------------
implicit none
double precision, dimension(:,:), intent(out) :: matrix
if(allocated(cov)) then
if(size(cov,dim=1).eq.size(matrix,dim=1).and.size(cov,dim=2).eq.size(matrix,dim=2)) then
! allocate(matrix(size(cov,dim=1),size(cov,dim=2)))
matrix = cov
else
write(*,*) "WARNING in subroutine get_cov_mu: different dimensions."
endif
else
write(*,*) "WARNING in subroutine get_cov_mu: cov not allocated."
endif
end subroutine get_cov_mu
!------------------------------------------------------------------------------------
subroutine get_cov_mh(Hindex,matrix)
!------------------------------------------------------------------------------------
implicit none
double precision, dimension(:,:), intent(out) :: matrix
integer, intent(in) :: Hindex
if(allocated(cov_mhneut)) then
if(size(cov_mhneut,dim=2).eq.size(matrix,dim=1)&
& .and.size(cov_mhneut,dim=3).eq.size(matrix,dim=2)) then
if(Hindex.ge.lbound(cov_mhneut,dim=1).and.Hindex.le.ubound(cov_mhneut,dim=1)) then
matrix = cov_mhneut(Hindex,:,:)
else
write(*,*) "WARNING in subroutine get_cov_mh: Hindex not in range."
endif
else
write(*,*) "WARNING in subroutine get_cov_mh: different dimensions."
endif
else
write(*,*) "WARNING in subroutine get_cov_mh: cov not allocated."
endif
end subroutine get_cov_mh
!------------------------------------------------------------------------------------
subroutine print_cov_mu_to_file
use usefulbits, only : file_id_common3
implicit none
character(LEN=20):: formatstring
open(file_id_common3, file='cov_mu.txt', form='formatted')
write(formatstring,'(A1,I2,A7)') '(',size(cov,dim=2),'F20.10)'
do i=lbound(cov,dim=1),ubound(cov,dim=1)
write(file_id_common3, formatstring) cov(i,:)
enddo
close(file_id_common3)
end subroutine print_cov_mu_to_file
!------------------------------------------------------------------------------------
subroutine print_corr_mu_to_file
use usefulbits, only : file_id_common3
implicit none
character(LEN=20):: formatstring
open(file_id_common3, file='corr_mu.txt', form='formatted')
write(formatstring,'(A1,I2,A7)') '(',size(cov,dim=2),'F20.10)'
do i=lbound(cov,dim=1),ubound(cov,dim=1)
! TS fix 14/08/2013: Took square root of this!
write(file_id_common3, formatstring) (cov(i,j)/sqrt(cov(i,i)*cov(j,j)), &
& j=lbound(cov,dim=2),ubound(cov,dim=2))
enddo
close(file_id_common3)
end subroutine print_corr_mu_to_file
!------------------------------------------------------------------------------------
subroutine print_inverse_cov_mu_to_file
use usefulbits, only : file_id_common3
implicit none
character(LEN=20):: formatstring
double precision, allocatable :: invcov(:,:)
allocate(invcov(size(cov,dim=1),size(cov,dim=2)))
call invmatrix(cov,invcov)
open(file_id_common3, file='inverse_cov_mu.txt', form='formatted')
write(formatstring,'(A1,I2,A7)') '(',size(invcov,dim=2),'F20.10)'
do i=lbound(invcov,dim=1),ubound(invcov,dim=1)
write(file_id_common3, formatstring) invcov(i,:)
enddo
close(file_id_common3)
open(file_id_common3, file='mu_vector.txt', form='formatted')
do i=lbound(mu_vector,dim=1),ubound(mu_vector,dim=1)
write(file_id_common3, '(1F20.10)') mu_vector(i)
enddo
close(file_id_common3)
end subroutine print_inverse_cov_mu_to_file
!------------------------------------------------------------------------------------
subroutine print_inverse_cov_mh_to_file(Hindex)
use usefulbits, only : file_id_common3
implicit none
character(LEN=20):: formatstring, filename
integer, intent(in) :: Hindex
double precision, allocatable :: invcov(:,:)
allocate(invcov(size(cov_mhneut,dim=2),size(cov_mhneut,dim=3)))
if(useaveragemass) then
call invmatrix(cov_mh_av(:,:),invcov)
open(file_id_common3, file='inverse_cov_mh_average.txt', form='formatted')
write(formatstring,'(A1,I2,A7)') '(',size(invcov,dim=2),'F20.10)'
do i=lbound(invcov,dim=1),ubound(invcov,dim=1)
write(file_id_common3, formatstring) invcov(i,:)
enddo
close(file_id_common3)
else
call invmatrix(cov_mhneut(Hindex,:,:),invcov)
write(filename,'(A14,I1,A4)') 'inverse_cov_mh',Hindex,'.txt'
open(file_id_common3, file=trim(adjustl(filename)), form='formatted')
write(formatstring,'(A1,I2,A7)') '(',size(invcov,dim=2),'F20.10)'
do i=lbound(invcov,dim=1),ubound(invcov,dim=1)
write(file_id_common3, formatstring) invcov(i,:)
enddo
close(file_id_common3)
endif
end subroutine print_inverse_cov_mh_to_file
!------------------------------------------------------------------------------------
subroutine print_cov_mh_to_file(Hindex)
use usefulbits, only : file_id_common3
implicit none
character(LEN=20):: formatstring, filename
integer, intent(in) :: Hindex
if(useaveragemass) then
write(filename,'(A10)') 'cov_mh.txt'
open(file_id_common3, file=trim(adjustl(filename)), form='formatted')
write(formatstring,'(A1,I2,A7)') '(',size(cov_mh_av,dim=2),'F20.10)'
do i=lbound(cov_mh_av,dim=1),ubound(cov_mh_av,dim=1)
write(file_id_common3, formatstring) cov_mh_av(i,:)
enddo
close(file_id_common3)
else
write(filename,'(A6,I1,A4)') 'cov_mh',Hindex,'.txt'
open(file_id_common3, file=trim(adjustl(filename)), form='formatted')
write(formatstring,'(A1,I2,A7)') '(',size(cov_mhneut,dim=3),'F20.10)'
do i=lbound(cov_mhneut,dim=2),ubound(cov_mhneut,dim=2)
write(file_id_common3, formatstring) cov_mhneut(Hindex,i,:)
enddo
close(file_id_common3)
endif
end subroutine print_cov_mh_to_file
!------------------------------------------------------------------------------------
subroutine print_peakinformation
!------------------------------------------------------------------------------------
! use usefulbits_HS, only : peaklist
implicit none
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do j=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
write(*,*)
write(*,*)'#*************************************************************************#'
write(*,'(A,I3,A,I3,A)') ' # Analysis ',i, &
& ' Peak ',j,' #'
write(*,*)'#*************************************************************************#'
write(*,'(A25,1I10)') 'ID =', analyses(i)%id
write(*,'(A25,4X,A3)') 'Collaboration =', analyses(i)%table%collaboration
write(*,'(A25,1F10.2)') 'Energy =', analyses(i)%table%energy
write(*,'(A25,4X,A100)') 'Reference =', analyses(i)%table%label
write(*,'(A25,4X,A100)') 'Description =', analyses(i)%table%desc
write(*,'(A25,1F10.3)') 'mass resolution =',analyses(i)%table%deltam
write(*,'(A25,1F10.3)') 'peak mass =',analyses(i)%peaks(j)%mpeak
write(*,'(A25,1F10.4)') 'peak mu =',analyses(i)%peaks(j)%mu
write(*,'(A25,2F10.4)') 'cyan band(low,high) =',analyses(i)%peaks(j)%dmulow, &
& analyses(i)%peaks(j)%dmuup
! write(*,'(A25,2F10.4)') 'dmu0 (low,high) =',analyses(i)%peaks(j)%dmulow0, &
!& analyses(i)%peaks(j)%dmuup0
write(*,'(A25,4X,$)') 'Higgs combination ='
do k=lbound(analyses(i)%peaks(j)%Higgs_comb,dim=1), &
& ubound(analyses(i)%peaks(j)%Higgs_comb,dim=1)
write(*,'(1I3,$)') analyses(i)%peaks(j)%Higgs_comb(k)
enddo
write(*,*)
write(*,'(A25,7X,1I3)') 'Dominant Higgs =',analyses(i)%peaks(j)%domH
write(*,'(A25,1F10.4)'), 'Total pred. mu =',analyses(i)%peaks(j)%total_mu
write(*,'(A25,1F15.9)'), 'Chisq for mu =',analyses(i)%peaks(j)%chisq_mu
write(*,'(A25,1F15.9)'), 'Chisq for mh =',analyses(i)%peaks(j)%chisq_mh
write(*,'(A25,1F15.9)'), 'Chisq (total) =',analyses(i)%peaks(j)%chisq_tot
write(*,'(A25,1F15.9)'), 'Chisq (max) =',analyses(i)%peaks(j)%chisq_max
write(*,*)'#------------------------ Channel information ----------------------------#'
write(*,*) ' p,d-ID prod. decay mu weight syst.err. '
write(*,*)'#-------------------------------------------------------------------------#'
do k=1, analyses(i)%peaks(j)%Nc
write(*,'(2I5,5X,2A,3F15.6)') analyses(i)%peaks(j)%channel_p_id(k),&
& analyses(i)%peaks(j)%channel_d_id(k),&
& analyses(i)%table%channel_description(k,:),&
& analyses(i)%peaks(j)%channel_mu(k),analyses(i)%peaks(j)%channel_w_model(k),&
& analyses(i)%peaks(j)%channel_syst(k)
enddo
write(*,*)'#-------------------------------------------------------------------------#'
enddo
enddo
end subroutine print_peakinformation
!------------------------------------------------------------------------------------
subroutine print_peakinformation_essentials
!------------------------------------------------------------------------------------
!x use usefulbits_HS, only : peaklist
implicit none
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do j=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
write(*,*)
write(*,*)'#*************************************************************************#'
write(*,'(A,I3,A,I3,A)') ' # Analysis ',i, &
& ' Peak ',j,' #'
write(*,*)'#*************************************************************************#'
write(*,'(A25,1I10)') 'ID =', analyses(i)%id
write(*,'(A25,7X,A3)') 'Collaboration =', analyses(i)%table%collaboration
write(*,'(A25,4X,F6.2)') 'cms energy =', analyses(i)%table%energy
write(*,'(A25,4X,A100)') 'Reference =', analyses(i)%table%label
write(*,'(A25,4X,A100)') 'Description =', analyses(i)%table%desc
write(*,'(A25,1F10.2)') 'mass resolution =',analyses(i)%table%deltam
write(*,'(A25,1F10.2)') 'peak mass =',analyses(i)%peaks(j)%mpeak
write(*,'(A25,1F10.4)') 'peak mu =',analyses(i)%peaks(j)%mu
write(*,'(A25,2F10.4)') 'cyan band(low,high) =',analyses(i)%peaks(j)%dmulow, &
& analyses(i)%peaks(j)%dmuup
write(*,*)'#------------------------ Channel information ----------------------------#'
write(*,*)' p,d-ID prod. decay efficiency'
write(*,*)'#-------------------------------------------------------------------------#'
do k=1, analyses(i)%peaks(j)%Nc
write(*,'(2I5,5X,2A,1F15.6)') analyses(i)%peaks(j)%channel_p_id(k), &
& analyses(i)%peaks(j)%channel_d_id(k),&
& analyses(i)%table%channel_description(k,:),analyses(i)%table%channel_eff(k)
enddo
write(*,*)'#-------------------------------------------------------------------------#'
enddo
enddo
end subroutine print_peakinformation_essentials
!------------------------------------------------------------------------------------
subroutine print_peaks_to_file
!------------------------------------------------------------------------------------
use usefulbits, only : file_id_common3
use usefulbits_hs, only : StrCompress
implicit none
character(LEN=100) :: formatspec
integer :: kk
kk=0
formatspec='(I3,7X,I10,1X,F6.2,1X,4F8.4,1X,A3,1X,F6.2,1X,F6.2,1X,I3,1X,A,5X,A)'
open(file_id_common3,file="peak_information.txt")
write(file_id_common3,*) "#HiggsSignals-"//trim(adjustl(HSvers))// &
& " with experimental dataset '"//trim(adjustl(Exptdir))//"'"
write(file_id_common3,*) "#Number Analysis-ID mh_obs mu_obs dmu_low dmu_high ", &
& "dmh_exp collaboration energy luminosity description reference"
write(file_id_common3,*) "#"
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do j=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
kk=kk+1
write(file_id_common3,formatspec)kk,analyses(i)%id,analyses(i)%peaks(j)%mpeak, &
& analyses(i)%peaks(j)%mu, analyses(i)%peaks(j)%dmulow,analyses(i)%peaks(j)%dmuup, &
& analyses(i)%table%deltam,analyses(i)%table%collaboration, analyses(i)%table%energy, &
& analyses(i)%table%lumi, analyses(i)%table%mhchisq, &
& trim(strcompress(analyses(i)%table%desc)), analyses(i)%table%label
enddo
enddo
close(file_id_common3)
end subroutine print_peaks_to_file
!------------------------------------------------------------------------------------
subroutine print_peaks_to_LaTeX
!------------------------------------------------------------------------------------
use usefulbits, only : file_id_common3
use usefulbits_hs, only : StrCompress
implicit none
character(LEN=100) :: formatspec
integer :: kk, N, ii, id, p
double precision :: weights(5) = (/ 0.0D0, 0.0D0,0.0D0,0.0D0,0.0D0 /)
kk=0
open(file_id_common3,file="peak_information.tex")
write(file_id_common3,*) "\begin{tabular}{lcrrrrr}"
write(file_id_common3,*) "\hline"
write(file_id_common3,*) "Analysis & Signal strength & \multicolumn{5}{c}{Signal contamination [in \%]} \\"
write(file_id_common3,*) "& & ggH & VBF & WH & ZH & $t\bar{t}H$ \\"
write(file_id_common3,*) "\hline"
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do j=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
kk=kk+1
N = analyses(i)%peaks(j)%Nc
weights = (/ 0.0D0, 0.0D0,0.0D0,0.0D0,0.0D0 /)
do ii=1,N
! id = analyses(i)%peaks(j)%channel_id(ii)
! p = int((id-modulo(id,10))/dble(10))
p = analyses(i)%peaks(j)%channel_p_id(ii)
if(p.le.5) then
weights(p) = analyses(i)%peaks(j)%channel_w_model(ii)
else
write(*,*) "Warning: print_peaks_to_LaTeX only outputs information for the five main production channels!"
endif
enddo
! write(formatspec,"(A,I1,A,I1,A)") '(A3,1X,A,A,A,A,A,F6.2,A,F6.2,A,F6.2,A,F6.1,A,F6.1,A,F6.1,A,F6.1,A,F6.1,A,',N,'I3)'
write(formatspec,"(A,I1,A,I1,A)") '(A3,1X,A,A,A,A,A,F6.2,A,F6.2,A,F6.2,A,F6.1,A,F6.1,A,F6.1,A,F6.1,A,F6.1,A)'
write(file_id_common3,formatspec) analyses(i)%table%collaboration, &
& "$",trim(strcompress(analyses(i)%table%desc)), "$~\cite{", &
& trim(strcompress(analyses(i)%table%label)),"} & $", &
& analyses(i)%peaks(j)%mu, "\substack{+",analyses(i)%peaks(j)%dmuup,"\\ -",&
& abs(analyses(i)%peaks(j)%dmulow),"}$ & $",100*weights(1),"$ & $",100*weights(2),&
& "$ & $",100*weights(3),"$ & $",100*weights(4),"$ & $",100*weights(5),"$\\"
enddo
enddo
write(file_id_common3,*) "\hline"
write(file_id_common3,*) "\end{tabular}"
end subroutine print_peaks_to_LaTeX
!------------------------------------------------------------------------------------
subroutine print_peaks_signal_rates_to_file
!------------------------------------------------------------------------------------
use usefulbits, only : file_id_common3
use usefulbits_hs, only : HSres
implicit none
character(LEN=100) :: formatspec,formatspec2
integer :: kk
double precision :: mh_pull, mu_pull, dmu
kk=0
formatspec='(I3,7X,I10,1X,4F8.2,1X,6F10.4)'
formatspec2='(I3,7X,I10,1X,2F8.2,1X,A7,1X,A7,1X,A7,1X,5F10.4)'
open(file_id_common3,file="peak_massesandrates.txt")
write(file_id_common3,*) "#HiggsSignals-"//trim(adjustl(HSvers))// &
& " with experimental dataset '"//trim(adjustl(Exptdir))//"'"
write(file_id_common3,*) "#pull = (predicted - observed)/(gaussian uncertainty)"
write(file_id_common3,*) "#Number Analysis-ID mh_obs dmh_exp mh_pred dmh_theo mh_pull",&
& " mu_obs dmu_low dmu_high mu_pred mu_pull"
write(file_id_common3,*) "#"
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do j=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
kk=kk+1
if(analyses(i)%peaks(j)%domH.ne.0) then
mh_pull = (analyses(i)%peaks(j)%Higgses(analyses(i)%peaks(j)%domH)%m - &
& analyses(i)%peaks(j)%mpeak)/ &
& sqrt(analyses(i)%table%deltam**2+ &
& analyses(i)%peaks(j)%Higgses(analyses(i)%peaks(j)%domH)%dm**2)
endif
call get_dmu_peak(dmu,analyses(i)%peaks(j))
mu_pull = (analyses(i)%peaks(j)%total_mu - analyses(i)%peaks(j)%mu)/dmu
if(analyses(i)%peaks(j)%domH.ne.0) then
write(file_id_common3,formatspec)kk,analyses(i)%id,analyses(i)%peaks(j)%mpeak, &
& analyses(i)%table%deltam, analyses(i)%peaks(j)%Higgses(analyses(i)%peaks(j)%domH)%m, &
& analyses(i)%peaks(j)%Higgses(analyses(i)%peaks(j)%domH)%dm, mh_pull, &
& analyses(i)%peaks(j)%mu, analyses(i)%peaks(j)%dmulow,analyses(i)%peaks(j)%dmuup, &
& analyses(i)%peaks(j)%total_mu, mu_pull
else
write(file_id_common3,formatspec2)kk,analyses(i)%id,analyses(i)%peaks(j)%mpeak, &
& analyses(i)%table%deltam, 'NAN','NAN','NAN', &
& analyses(i)%peaks(j)%mu, analyses(i)%peaks(j)%dmulow,analyses(i)%peaks(j)%dmuup, &
& analyses(i)%peaks(j)%total_mu, mu_pull
endif
enddo
enddo
close(file_id_common3)
end subroutine print_peaks_signal_rates_to_file
!--------------------------------------------------------------------
subroutine get_peakchi2(obsID, csqmu, csqmh, csqmax, csqtot)
!--------------------------------------------------------------------
implicit none
integer, intent(in) :: obsID
double precision, intent(out) :: csqmu, csqmh, csqmax, csqtot
integer :: i, j
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do j=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
if(obsID.eq.analyses(i)%peaks(j)%id) then
csqmu = analyses(i)%peaks(j)%chisq_mu
csqmh = analyses(i)%peaks(j)%chisq_mh
csqmax = analyses(i)%peaks(j)%chisq_max
csqtot = analyses(i)%peaks(j)%chisq_tot
endif
enddo
enddo
end subroutine get_peakchi2
!------------------------------------------------------------------------------------
subroutine get_masschi2_from_separation(csq)
!------------------------------------------------------------------------------------
implicit none
double precision, intent(out) :: csq
integer :: i, ii, iii
! write(*,*) "Calling get_masschi2_from_separation."
csq =0.0D0
iii=0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
if(analyses(i)%table%mhchisq.eq.1) then
csq = csq + csq_mass_separation_weighted( &
& analyses(i)%peaks(ii)%Higgs_comb, analyses(i)%peaks(ii))
! write(*,*) 'analyses(',i,')%peaks(',ii,')%Higgs_comb = ',analyses(i)%peaks(ii)%Higgs_comb
endif
enddo
enddo
! write(*,*) 'csq_sep =', csq
end subroutine get_masschi2_from_separation
!------------------------------------------------------------------------------------
subroutine add_peaks_to_HSresults(r)
!------------------------------------------------------------------------------------
! use usefulbits_hs, only : HSresults, peaklist
implicit none
type(HSresults), intent(out) :: r
integer :: i,j, iii
if(allocated(r%obsID)) deallocate(r%obsID)
if(allocated(r%mupred)) deallocate(r%mupred)
if(allocated(r%domH)) deallocate(r%domH)
if(allocated(r%nH)) deallocate(r%nH)
!-The number of peaks should maybe be saved in a global usefulbits_HS variable in order
! to avoid multiple loops over the peaklist.
iii=0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do j=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
enddo
enddo
allocate(r%mupred(iii), r%domH(iii), r%nH(iii), r%obsID(iii))
iii=0
do i=lbound(analyses,dim=1),ubound(analyses,dim=1)
do j=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
r%mupred(iii)=analyses(i)%peaks(j)%total_mu
r%domH(iii)=analyses(i)%peaks(j)%domH
r%nH(iii)=analyses(i)%peaks(j)%NHiggs_comb
r%obsID(iii)=analyses(i)%peaks(j)%id
enddo
enddo
! write(*,*) "End of subroutine add_peaks_to_HSresults."
end subroutine add_peaks_to_HSresults
!------------------------------------------------------------------------------------
subroutine get_dmu0sq_peak(dmu0sq,peak,domax)
!------------------------------------------------------------------------------------
use usefulbits_HS, only : mupeak, symmetricerrors, absolute_errors
implicit none
integer, intent(in) :: domax ! if 1, then use predicted mu == 0
double precision, intent(out) :: dmu0sq
double precision :: pred_mu, mu
type(mupeak), intent(in) :: peak
! TESTING:
! if(absolute_errors) then
! mu=peak%mu_original
! else
mu=peak%mu
! endif
if(domax.eq.1) then
pred_mu = 0.0D0
else
pred_mu = peak%total_mu
endif
if(.not.symmetricerrors) then
if(pred_mu.le.mu) then
dmu0sq = peak%dmulow0sq
else if(pred_mu.gt.mu) then
dmu0sq = peak%dmuup0sq
endif
else
if(peak%dmulow0sq.lt.0.0d0.or.peak%dmuup0sq.lt.0.0d0) then
write(*,*) "WARNING: squared intrinsic mu uncertainty is negative!"
dmu0sq= (sqrt(abs(peak%dmulow0sq))+sqrt(abs(peak%dmuup0sq)))**2/4.
else
dmu0sq = (sqrt(peak%dmulow0sq)+sqrt(peak%dmuup0sq))**2/4.
endif
endif
!! write(*,*) 'DEBUG: ',peak%dmulow0sq, peak%dmuup0sq, (sqrt(peak%dmulow0sq)+sqrt(peak%dmuup0sq))**2/4.
end subroutine get_dmu0sq_peak
!------------------------------------------------------------------------------------
subroutine get_dmu_peak(dmu,peak)
!------------------------------------------------------------------------------------
use usefulbits_HS, only : mupeak
implicit none
double precision, intent(out) :: dmu
double precision :: pred_mu
type(mupeak), intent(in) :: peak
pred_mu = peak%total_mu
if(pred_mu.le.peak%mu) then
dmu = peak%dmulow
else if(pred_mu.gt.peak%mu) then
dmu = peak%dmuup
endif
end subroutine get_dmu_peak
!------------------------------------------------------------------------------------
subroutine calc_pc_chisq(pc_chisq,peak,mhchisqflag,Higgses,Higgs_dom,indices_in,iterstep)
! This subroutine calculates the chisq value for a given Higgs combination assigned
! to one peak.
! Parameters:
!
! pc_chisq: Return value (double precision)
! peak: Peak observable the Higgs bosons are assigned to (type mupeak)
! Higgses: neutral Higgs bosons considered for the assignment (type neutHiggs(:))
! Hdom: dominantly contribution Higgs boson (int)
! indices_in: Higgs boson combination the chi squared value is evaluated for (int(:))
! iterstep: Iteration-step of Higgs-to-peak assignment
!------------------------------------------------------------------------------------
implicit none
type(mupeak), intent(in) :: peak
type(neutHiggs), dimension(:), intent(in) :: Higgses(:)
! integer, allocatable, intent(out) :: indices_best(:)
! integer, intent(in), optional :: Nindices_in
integer, dimension(:), intent(in) :: indices_in(:)
integer, intent(in) :: mhchisqflag, iterstep
integer, intent(out) :: Higgs_dom
double precision, intent(out) :: pc_chisq
!--Internal parameters:
double precision :: mutot,dmu,csq0,csq_mh_tot,csq_tot,csq_tot_tmp,csq_mh_tmp,mumax
double precision :: deltam
integer :: nH
double precision :: m, dm
call check_pdf(pdf)
nH=size(Higgses)
!--Calculate the maximal chisq value for this peak
csq0 = csq_mu(0.0D0,peak%mu,peak%dmuup,peak%dmulow)
mumax = -1.0D6
mutot = 0.0D0
csq_mh_tot=0.0D0
Higgs_dom=0
! Calculate mutot and find dominant Higgs
do i=lbound(indices_in,dim=1),ubound(indices_in,dim=1)
if(indices_in(i).ne.0) then
mutot = mutot + Higgses(indices_in(i))%mu
if(Higgses(indices_in(i))%mu.gt.mumax) then
mumax = Higgses(indices_in(i))%mu
Higgs_dom = indices_in(i)
endif
endif
enddo
if(allocated(cov_mhneut_max).and.iterstep.eq.1) then
!-In the first iterated step, use a Higgs mass covariance matrix, where all Higgs bosons
!-are assumed to be assigned.
! write(*,*) "Warning!! called csq_mh_with_max_corr!"
csq_mh_tot = csq_mh_with_max_corr(indices_in, peak%internalnumber)
elseif(allocated(cov_mhneut).and.iterstep.gt.1) then
!-In the second (and succeeding) iterated steps, use a the Higgs mass covariance matrix
!-based on the the previous Higgs-to-peaks assignment.
! write(*,*) "Warning!! called csq_mh_with_corr!"
csq_mh_tot = csq_mh_with_corr(indices_in, peak%internalnumber)
else
if(useaveragemass) then
call get_average_mass_for_peak(indices_in, peak, m, dm)
if(mhchisqflag.eq.1) then
deltam = peak%dm
csq_mh_tot = csq_mh(m, peak%mpeak, dm, peak%dm)
else
csq_mh_tot = 0.0D0
endif
else
do i=lbound(indices_in,dim=1),ubound(indices_in,dim=1)
if(indices_in(i).ne.0) then
if(mhchisqflag.eq.1) then
deltam = peak%dm
csq_mh_tmp = csq_mh(Higgses(indices_in(i))%m, peak%mpeak, &
& Higgses(indices_in(i))%dm,deltam)
else
csq_mh_tmp = 0.0D0
endif
csq_mh_tot = csq_mh_tot + csq_mh_tmp
endif
enddo
endif
endif
if(allocated(cov)) then
csq_tot = csq_mh_tot + csq_mu_with_corr(mutot, peak%internalnumber)
else
csq_tot = csq_mh_tot + csq_mu(mutot, peak%mu, peak%dmuup, peak%dmulow)
endif
pc_chisq = csq_tot
end subroutine calc_pc_chisq
!---------------------------------------------------------------------------
function csq_mh_with_max_corr(indices_in, peaknumber)
!---------------------------------------------------------------------------
integer, dimension(:), intent(in) :: indices_in(:)
integer, intent(in) :: peaknumber
double precision :: csq_mh_with_max_corr
double precision, allocatable :: csq_mh_per_Higgs(:)
integer :: i, ii, iii, k, nH, N, Hindex
double precision, allocatable :: v(:,:), invcov(:,:), v2(:)
nH = size(cov_mhneut,dim=1)
N = size(cov_mhneut,dim=2)
allocate(v(nH,N), v2(N), csq_mh_per_Higgs(nH))
do k=1,nH
iii=0
do i=1, size(analyses)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
v(k,iii) = analyses(i)%peaks(ii)%Higgses(k)%m - analyses(i)%peaks(ii)%mpeak
if(iii.eq.peaknumber) v(k,iii) = 0.0D0 ! Will be filled later...
enddo
enddo
enddo
do k=1,nH
iii=0
do i=1, size(analyses)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
if(iii.eq.peaknumber) then
Hindex=indices_in(k)
if(Hindex.ne.0) then
v(Hindex,iii) = analyses(i)%peaks(ii)%Higgses(k)%m - analyses(i)%peaks(ii)%mpeak
endif
endif
enddo
enddo
enddo
do k=1,nH !-n.b.: this loops now over Hindex
call invmatrix(cov_mhneut_max(k,:,:),invcov)
call matmult(invcov,v(k,:),v2,N,1)
csq_mh_per_Higgs(k) = v(k,peaknumber)*v2(peaknumber)
enddo
csq_mh_with_max_corr = sum(csq_mh_per_Higgs)
deallocate(v,v2,csq_mh_per_Higgs)
end function csq_mh_with_max_corr
!---------------------------------------------------------------------------
function csq_mh_with_corr(indices_in, peaknumber)
!---------------------------------------------------------------------------
integer, dimension(:), intent(in) :: indices_in(:)
integer, intent(in) :: peaknumber
double precision :: csq_mh_with_corr
double precision, allocatable :: csq_mh_per_Higgs(:)
integer :: i, ii, iii, k, nH, N, Hindex
double precision, allocatable :: v(:,:), invcov(:,:), v2(:)
nH = size(cov_mhneut,dim=1)
N = size(cov_mhneut,dim=2)
allocate(v(nH,N), v2(N), csq_mh_per_Higgs(nH))
!-First, fill the vectors with zeros:
do k=1,nH
do i=1,N
v(k,i) = 0.0D0
enddo
enddo
do k=1,nH
iii=0
do i=1, size(analyses)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
Hindex = analyses(i)%peaks(ii)%Higgs_comb(k)
if(iii.eq.peaknumber) Hindex=indices_in(k)
if(Hindex.ne.0) then
v(Hindex,iii) = analyses(i)%peaks(ii)%Higgses(Hindex)%m - &
& analyses(i)%peaks(ii)%mpeak
endif
enddo
enddo
enddo
do k=1,nH !-n.b.: this loops now over Hindex
call invmatrix(cov_mhneut(k,:,:),invcov)
call matmult(invcov,v(k,:),v2,N,1)
csq_mh_per_Higgs(k) = v(k,peaknumber)*v2(peaknumber)
enddo
csq_mh_with_corr = sum(csq_mh_per_Higgs)
deallocate(v,v2,csq_mh_per_Higgs)
end function csq_mh_with_corr
!------------------------------------------------------------------------------------
function csq_mu_with_corr(mu, peaknumber)
!------------------------------------------------------------------------------------
! use usefulbits_hs, only : peaklist, cov
use numerics, only : invmatrix, matmult
integer, intent(in) :: peaknumber
double precision, intent(in) :: mu
integer :: i, ii, iii, N
double precision, allocatable :: v(:), vmat(:,:), invcov(:,:), v2(:)
double precision :: csq_mu_with_corr
if(allocated(cov)) deallocate(cov)
call create_covariance_matrix_mu(0)
N = size(cov,dim=1)
allocate(v(N), vmat(N,1),invcov(N,N), v2(N))
!-First construct the vector (mupred - muobs)_iii
iii=0
do i=1, size(analyses)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
v(iii) = analyses(i)%peaks(ii)%total_mu - analyses(i)%peaks(ii)%mu
if(iii.eq.peaknumber) v(iii) = mu - analyses(i)%peaks(ii)%mu
vmat(iii,1) = v(iii)
enddo
enddo
call invmatrix(cov,invcov)
call matmult(invcov,vmat,v2,N,1)
csq_mu_with_corr = v(peaknumber)*v2(peaknumber)
deallocate(v,vmat,invcov,v2)
end function csq_mu_with_corr
!------------------------------------------------------------------------------------
subroutine check_pdf(pdf)
!------------------------------------------------------------------------------------
implicit none
integer, intent(inout) :: pdf
if(.not.((pdf.eq.1).or.(pdf.eq.2).or.(pdf.eq.3))) then
write(*,*) 'WARNING: pdf not properly specified. Will be set to pdf=2 (gaussian-shape)'
pdf=2
endif
end subroutine check_pdf
!------------------------------------------------------------------------------------
function csq_mu(x, x0, dx_up, dx_low)
!- x: model predicted value
!- x0: observed value
!- dx_up: difference between observed and upper 1sigma band (always positive)
!- dx_low: difference between observed and lower 1sigma band (always positive)
!------------------------------------------------------------------------------------
use usefulbits_hs, only : symmetricerrors
implicit none
double precision, intent(in) :: x, x0, dx_up, dx_low
double precision :: csq_mu, dx
if(.not.symmetricerrors) then
if(x.ge.x0) then
dx = dx_up
else
dx = dx_low
endif
else
dx = (abs(dx_up)+abs(dx_low))/2.
endif
csq_mu=chisq(x, x0, dx)
end function csq_mu
!------------------------------------------------------------------------------------
function csq_mh(x,x0,dx1,dx2)
!------------------------------------------------------------------------------------
implicit none
double precision, intent(in) :: x, x0, dx1, dx2
double precision :: csq_mh, dx
if(pdf.eq.1) then ! box pdf
dx = dx1 + dx2 ! Add exp. and th. uncertainties linearly
if(x.ge.(x0-dx).and.x.le.(x0+dx)) then
csq_mh = 0.0D0
else
csq_mh = 100000.0D0 !Large number
endif
else if(pdf.eq.2) then ! gaussian pdf
dx = sqrt(dx1**2+dx2**2) ! Add uncertainties in quadrature
csq_mh = chisq(x,x0,dx)
!---------------------------- Have to verify boxgaussian...
else if(pdf.eq.3) then ! box+gaussian pdf
if(x.ge.(x0-dx1).and.x.le.(x0+dx1)) then
csq_mh = 0.0D0
else if(x.ge.(x0+dx1)) then
csq_mh = chisq(x,x0+dx1,dx2)
else if(x.le.(x0-dx1)) then
csq_mh = chisq(x,x0-dx1,dx2)
endif
endif
end function csq_mh
!------------------------------------------------------------------------------------
function csq_mass_separation_weighted(indices_in, peak)
!---------------------------------------------------------------------------
use usefulbits, only : vsmall
implicit none
integer, dimension(:), intent(in) :: indices_in(:)
type(mupeak), intent(in) :: peak
double precision :: csq_mass_separation_weighted
double precision :: mutotal,csq,csq_mh_tmp, m, dm
integer :: i,k,NHiggs
!------------------------------------------------------------------------------------
NHiggs = 0
mutotal = 0.0D0
do k=lbound(indices_in,dim=1),ubound(indices_in,dim=1)
i = indices_in(k)
if(i.ne.0) then
mutotal = mutotal + peak%Higgses(i)%mu
NHiggs=NHiggs+1
endif
enddo
call get_average_mass_for_peak(indices_in, peak, m, dm)
csq = 0.0D0
if(abs(mutotal).gt.vsmall.and.NHiggs.gt.1) then
do k=lbound(indices_in,dim=1),ubound(indices_in,dim=1)
i = indices_in(k)
csq_mh_tmp = 0.0D0
if(i.ne.0) then
if(pdf.eq.1) then ! box pdf
if(peak%Higgses(i)%m.ge.(m-peak%Higgses(i)%dm-peak%dm).and. &
& peak%Higgses(i)%m.le.(m+peak%Higgses(i)%dm+peak%dm)) then
csq_mh_tmp = 0.0D0
else
csq_mh_tmp = 100000.0D0 !Large number
endif
else if(pdf.eq.2) then
csq_mh_tmp = chisq(peak%Higgses(i)%m,m,sqrt(peak%dm**2+peak%Higgses(i)%dm**2))
! write(*,*) "m, m_av, dm = ",peak%Higgses(i)%m,m,sqrt(peak%dm**2+peak%Higgses(i)%dm**2)
! write(*,*) "i, csq_mh_tmp = ", i , csq_mh_tmp
else if(pdf.eq.3) then
if(peak%Higgses(i)%m.ge.(m-peak%Higgses(i)%dm).and. &
& peak%Higgses(i)%m.le.(m+peak%Higgses(i)%dm)) then
csq_mh_tmp = 0.0D0
else if(peak%Higgses(i)%m.gt.m+peak%Higgses(i)%dm) then
csq_mh_tmp = chisq(peak%Higgses(i)%m,m+peak%Higgses(i)%dm,peak%dm)
else if(peak%Higgses(i)%m.lt.m-peak%Higgses(i)%dm) then
csq_mh_tmp = chisq(peak%Higgses(i)%m,m-peak%Higgses(i)%dm,peak%dm)
endif
else
stop "Error: Unknown pdf!"
endif
csq = csq + abs(peak%Higgses(i)%mu/mutotal)*csq_mh_tmp
endif
enddo
endif
csq_mass_separation_weighted = csq
end function csq_mass_separation_weighted
!------------------------------------------------------------------------------------
function chisq(x,x0,dx)
!------------------------------------------------------------------------------------
implicit none
double precision, intent(in) :: x,x0,dx
double precision :: chisq
if(dx.ne.0) then
chisq=(x-x0)**2/dx**2
else
write(*,*) 'WARNING, dx = 0'
chisq=100000.
endif
end function chisq
!------------------------------------------------------------------------------------
subroutine get_ncomb(ncomb, indices_truncated, indices_best)
!------------------------------------------------------------------------------------
implicit none
integer, dimension(:), intent(in) :: indices_best(:)
integer, allocatable, intent(out) :: indices_truncated(:)
integer, intent(out) :: ncomb
integer :: i,j
ncomb=0
do i=lbound(indices_best,dim=1),ubound(indices_best,dim=1)
if(indices_best(i).ne.0) ncomb=ncomb+1
enddo
allocate(indices_truncated(ncomb))
j=1
do i=lbound(indices_best,dim=1),ubound(indices_best,dim=1)
if(indices_best(i).ne.0) then
indices_truncated(j)=indices_best(i)
j=j+1
endif
enddo
end subroutine get_ncomb
!------------------------------------------------------------------------------------
subroutine get_weights_at_peak( peak, mutab )
! This subroutines fills the channels weights array of the peak object with the
! Standard Model weights obtained at the peaks position.
!------------------------------------------------------------------------------------
use usefulbits, only : div, small
! use theory_XS_SM_functions
use usefulbits_HS, only : mutable
type(mupeak), intent(inout) :: peak
type(mutable), intent(in) :: mutab
integer :: i, id, p, d
double precision :: SMrate, mass
double precision :: SMCS_lhc7_gg_H,SMCS_lhc7_bb_H,SMCS_lhc7_vbf_H,SMCS_lhc7_HW, &
& SMCS_lhc7_HZ, SMCS_lhc7_ttH, SMCS_lhc8_gg_H,SMCS_lhc8_bb_H,SMCS_lhc8_vbf_H, &
& SMCS_lhc8_HW, SMCS_lhc8_HZ, SMCS_lhc8_ttH, SMCS_lhc13_gg_H,SMCS_lhc13_bb_H, &
& SMCS_lhc13_vbf_H, SMCS_lhc13_HW, SMCS_lhc13_HZ, SMCS_lhc13_ttH, SMCS_tev_gg_H, &
& SMCS_tev_bb_H, SMCS_tev_vbf_H, SMCS_tev_HW, SMCS_tev_HZ, SMCS_tev_ttH, &
& SMBR_Hgamgam,SMBR_HWW,SMBR_HZZ, SMBR_Htautau, SMBR_Hbb,SMBR_HZgam,SMBR_Hcc, &
& SMBR_Hmumu,SMBR_Hgg
! Check experiment and energy flag to choose the relevant dataset
mass = peak%mpeak
do i=1,mutab%Nc
p = mutab%channel_p_id(i)
d = mutab%channel_d_id(i)
!
! id = mutab%channel_id(i)
! p = int((id-modulo(id,10))/dble(10))
! d = modulo(id,10)
!--Do the production rate for the relevant experiment and cms-energy
if(mutab%collider.eq.'LHC') then
if(abs(mutab%energy-7.0D0).le.small) then
if(p.eq.1) then
SMrate=SMCS_lhc7_gg_H(mass)+SMCS_lhc7_bb_H(mass)
else if(p.eq.2) then
SMrate=SMCS_lhc7_vbf_H(mass)
else if(p.eq.3) then
SMrate=SMCS_lhc7_HW(mass)
else if(p.eq.4) then
SMrate=SMCS_lhc7_HZ(mass)
else if(p.eq.5) then
SMrate=SMCS_lhc7_ttH(mass)
endif
else if(abs(mutab%energy-8.0D0).le.small) then
if(p.eq.1) then
SMrate=SMCS_lhc8_gg_H(mass)+SMCS_lhc8_bb_H(mass)
else if(p.eq.2) then
SMrate=SMCS_lhc8_vbf_H(mass)
else if(p.eq.3) then
SMrate=SMCS_lhc8_HW(mass)
else if(p.eq.4) then
SMrate=SMCS_lhc8_HZ(mass)
else if(p.eq.5) then
SMrate=SMCS_lhc8_ttH(mass)
endif
else if(abs(mutab%energy-13.0D0).le.small) then
if(p.eq.1) then
SMrate=SMCS_lhc13_gg_H(mass)+SMCS_lhc13_bb_H(mass)
else if(p.eq.2) then
SMrate=SMCS_lhc13_vbf_H(mass)
else if(p.eq.3) then
SMrate=SMCS_lhc13_HW(mass)
else if(p.eq.4) then
SMrate=SMCS_lhc13_HZ(mass)
else if(p.eq.5) then
SMrate=SMCS_lhc13_ttH(mass)
endif
endif
else if(mutab%collider.eq.'TEV') then
if(p.eq.1) then
SMrate=SMCS_tev_gg_H(mass)+SMCS_tev_bb_H(mass)
else if(p.eq.2) then
SMrate=SMCS_tev_vbf_H(mass)
else if(p.eq.3) then
SMrate=SMCS_tev_HW(mass)
else if(p.eq.4) then
SMrate=SMCS_tev_HZ(mass)
else if(p.eq.5) then
SMrate=SMCS_tev_ttH(mass)
endif
endif
!--Multiply now by the decay rate
if(d.eq.1) then
SMrate=SMrate*SMBR_Hgamgam(mass)
else if(d.eq.2) then
SMrate=SMrate*SMBR_HWW(mass)
else if(d.eq.3) then
SMrate=SMrate*SMBR_HZZ(mass)
else if(d.eq.4) then
SMrate=SMrate*SMBR_Htautau(mass)
else if(d.eq.5) then
SMrate=SMrate*SMBR_Hbb(mass)
else if(d.eq.6) then
SMrate=SMrate*SMBR_HZgam(mass)
else if(d.eq.7) then
SMrate=SMrate*SMBR_Hcc(mass)
else if(d.eq.8) then
SMrate=SMrate*SMBR_Hmumu(mass)
else if(d.eq.9) then
SMrate=SMrate*SMBR_Hgg(mass)
endif
peak%channel_w(i)=peak%channel_eff(i)*SMrate
enddo
SMrate=sum(peak%channel_w(:))
do i=1,mutab%Nc
peak%channel_w(i)=div(peak%channel_w(i),SMrate,0.0D0,1.0D9)
enddo
end subroutine get_weights_at_peak
!---------------------------------------------------------------------------
subroutine get_average_mass(indices_in, peaknumber, m, dm)
!---------------------------------------------------------------------------
integer, dimension(:), intent(in) :: indices_in(:)
integer, intent(in) :: peaknumber
double precision, intent(out) :: m, dm
integer :: i, ii, iii, k, nH, N, Hindex
double precision :: num1, num2, denom
nH = size(indices_in,dim=1)
num1 = 0.0D0
num2 = 0.0D0
denom = 0.0D0
iii=0
do i=1, size(analyses)
do ii=lbound(analyses(i)%peaks,dim=1),ubound(analyses(i)%peaks,dim=1)
iii=iii+1
if(iii.eq.peaknumber) then
call get_average_mass_for_peak(indices_in, analyses(i)%peaks(ii), m, dm)
endif
enddo
enddo
if(denom.ne.0.0D0) then
m = num1 / denom
dm = num2 / denom
else
m = 0.0D0
dm = 0.0D0
endif
end subroutine get_average_mass
!---------------------------------------------------------------------------
subroutine get_average_mass_for_peak(indices_in, peak, m, dm)
!---------------------------------------------------------------------------
integer, dimension(:), intent(in) :: indices_in(:)
type(mupeak), intent(in) :: peak
double precision, intent(out) :: m, dm
integer :: i, ii, iii, k, nH, N, Hindex
double precision :: num1, num2, denom
nH = size(indices_in,dim=1)
num1 = 0.0D0
num2 = 0.0D0
denom = 0.0D0
do k=1,nH
Hindex=indices_in(k)
if(Hindex.ne.0) then
num1 = num1 + peak%Higgses(Hindex)%mu * &
& peak%Higgses(Hindex)%m
num2 = num2 + peak%Higgses(Hindex)%mu * &
& peak%Higgses(Hindex)%dm
denom = denom + peak%Higgses(Hindex)%mu
endif
enddo
if(denom.ne.0.0D0) then
m = num1 / denom
dm = num2 / denom
else
m = 0.0D0
dm = 0.0D0
endif
end subroutine get_average_mass_for_peak
!------------------------------------------------------------------------------------
end module pc_chisq
!------------------------------------------------------------------------------------
\ No newline at end of file
Index: trunk/webversion/install_webversion_hepforge.bat
===================================================================
--- trunk/webversion/install_webversion_hepforge.bat (revision 593)
+++ trunk/webversion/install_webversion_hepforge.bat (revision 594)
@@ -1,127 +1,127 @@
#!/bin/bash
# installs fortran, perl and html file for HiggsBounds webversion on HepForge
# NOTE: MUST FOLLOW INSTRUCTIONS ON updateingHBpackage.html FIRST!!!!
# -first argument is the version number
# -second argument optional, if set to "short", then will not recompile
# and install the fortran (useful while developing and testing webpages and cgi scripts)
# E.g.
# ./install_webversion_for_laptop.bat 2.0.0 short
vers=$1
if [[ $vers == "" ]]
then
echo 'Need to specify version number as argument'
exit
fi
-projectfolder="/hepforge/home/higgsbounds/"
+projectfolder="/hepforge/projects/higgsbounds/"
startfolder=$projectfolder"HBWebsiteSRC/HB-"$vers"/webversion"
#first check I'm running this from the correct folder:
currentfolder=$PWD
if [[ $startfolder != $currentfolder ]]
then
echo 'pwd is not' $startfolder
# exit
startfolder=$currentfolder
fi
# unless $2 is 'short', will pack up HiggsBounds, cpoy it over and install it
# with appropriate settings for website
if [[ $2 == "short" ]]
then
echo 'option "short" specified: Not recompiling HiggsBounds'
else
#----------------------------------------
#install fortran programs for website:
#first unpack package:
cd $projectfolder"/HBWebsiteSRC/HB-"$vers
cp $projectfolder"/downloads/HiggsBounds-"$vers".tar.gz" .
gunzip -c HiggsBounds-"$vers".tar.gz | tar xvf -
cp -r HiggsBounds-"$vers" HiggsBounds
rm -r HiggsBounds-"$vers"
cd $projectfolder"/HBWebsiteSRC/HB-"$vers"/HiggsBounds/"
cp configure configure_myorig
sed -e "s/F90FLAGS = -fbounds-check/F90FLAGS = -fbounds-check -DWEBVERSION/g" configure_myorig > configure
./configure
make HBweb
mv HiggsBounds $projectfolder"HBWebsiteExe"
mv extract_SM_results_for_web $projectfolder"HBWebsiteExe"
#cd ../
#rm -r HiggsBounds-f77
cd $startfolder
#----------------------------------------
fi
# creates the file HiggsBounds_debug.html by uncommenting a section in HiggsBounds.html and then
# specifying debugmode=T in each form on the page
sed -e "s///g" \
-e "s///-->/g" \
-e 's///g' index.html > index_debug.html
# creates the file downloads_detailed.html by uncommenting a section in downloads.html and then
sed -e "s///g" \
-e 's/downloads_detailed.html">show history/downloads.html">hide history/g' downloads.html > downloads_detailed.html
# list of cgi files that need to be copied across
cgifiles="callHiggsBounds.cgi \
HB_BRSM.cgi \
GetinputfromFH.pm \
HiggsBounds_input.cgi \
DrawTables.pm \
Examples.pm \
Gettestdata.pm"
# html files that need to be copied
htmlfiles="downloads.html \
downloads_detailed.html \
HBstyle.css \
privacypolicy.html \
index_debug.html \
index.html"
#
# other files that need to be copied
includefiles="HiggsBounds-logo-small.jpg"
extrafiles="sample_fhucc_mhmax.txt \
sample_fhucc_cpx.txt \
minipaper.tex \
minipaper.bib \
minipaper.bbl \
minipaper.pdf"
for f in $cgifiles ; do
# sudo -u higgsbounds cp "$f" $projectfolder"public_html/cgi-bin/"$f
cp "$f" $projectfolder"public_html/cgi-bin/"$f
done
for f in $htmlfiles ; do
# sudo -u higgsbounds cp "$f" $projectfolder"public_html/"$f
cp "$f" $projectfolder"public_html/"$f
done
for f in $includefiles ; do
# sudo -u higgsbounds cp "$f" $projectfolder"public_html/include/"$f
cp "$f" $projectfolder"public_html/include/"$f
done
for f in $extrafiles ; do
# sudo -u higgsbounds cp "$f" $projectfolder"public_html/extra/"$f
cp "$f" $projectfolder"public_html/extra/"$f
done
rm index_debug.html
rm downloads_detailed.html
echo 'All done!'
Index: trunk/webversion/downloads.html
===================================================================
--- trunk/webversion/downloads.html (revision 593)
+++ trunk/webversion/downloads.html (revision 594)
@@ -1,483 +1,483 @@
HiggsBounds and HiggsSignals
HiggsBounds
Downloads
You can download the latest beta version of HiggsBounds-5 here (HiggsBounds-5.3.0beta.tar.gz). Important changes in the input framework for HiggsBounds-5 are documented here (draft version). The last pre-13-TeV-LHC HiggsBounds version (4.3.1) is found here: HiggsBounds-4.3.1.tar.gz . HiggsBounds is using Fortran 90/2003. As always, please contact us if you have any problems with the installation. ( show history )
Further information can be found in the following references:
In particular, consult the latest version of the HiggsBounds 4.x.x manual. We are currently working on an updated HiggsBounds 5 manual!
If you download the code, we recommend that you sign up to the HiggsBounds-announce mailing list, in order to be informed when new releases are available.
If you have any questions, comments, bug reports or feature requests please let us know. Contact Tim.
Referencing HiggsBounds
If you use HiggsBounds, please cite the references listed above.
HiggsBounds incorporates many results from experimental searches and SM calculations. To make it quicker for users to access these references, we provide a list as a .bib file and a .bbl file. (This example .tex file cites each of these sources once, creating this .pdf file).
Quick start guide
unpack the .tar.gz file
cd to the HiggsBounds directory
./configure
make
run the program HiggsBounds using the command-line options
The HiggsBounds package also contains simple example programs showing the use of the HiggsBounds subroutines, including programs demonstrating the use of HiggsBounds in conjunction with FeynHiggs.
The LEP exclusion chi-squared extension
For the model-independent LEP Higgs searches the full information on CLs and CLsb have been made available to the HiggsBounds team, such that we can derive a chi-squared measure (assuming the Gaussian limit) for the LEP exclusion. For more information, see the HiggsBounds 4.x.x manual.
In order to enable the LEP chi-squared extension, please download csboutput_trans_binary.tar.gz, which contains the necessary experimental tables, and follow the descriptions in the HiggsBounds manual.
Note that the LEP chi-squared extension is only supported for the usage of HiggsBounds via the Fortran subroutines/library.
HiggsSignals
Downloads
You can download the beta version of HiggsSignals-2 here (HiggsSignals-2.2.2beta.tar.gz). HiggsSignals is using Fortran 90/2003. HiggsSignals-2 needs to be linked to the HiggsBounds version 5 library. The latest pre-13-TeV-LHC HiggsSignals version (1.4.0) can be found here: HiggsSignals-1.4.0.tar.gz . As always, please contact us if you have any problems with the installation. ( show history )
We are currently working on an updated HiggsSignals 2 manual!
Please consult the latest version of the HiggsSignals 1.x.x manual. Further information on the program and related issues can be found in
arXiv:1310.4039 (Short introduction to the program with examples)
arXiv:1403.1582 (Detailed Higgs coupling study; validation of implementation of experimental data, details on statistical HiggsSignals output, including Toy studies.)
If you have any questions, comments, bug reports or feature requests please let us know. Contact Tim.
Referencing HiggsSignals
If you use HiggsSignals, please cite the HiggsSignals as well as HiggsBounds references listed above. Furthermore, please do not forget to include citations to the experimental measurements, which are used as observables in your project.
Quick start guide
unpack the .tar.gz file
cd to the HiggsSignals directory
please check/edit configure for the correct link to the HiggsBounds library and compiler settings.
you can now directly run the bash script ./run_tests.bat. (Note: The script uses gnuplot to create results from test runs.)
We provide various example programs, where many features are demonstrated. Also, they show how to use HiggsSignals together with FeynHiggs and HiggsBounds.