Fork me on GitHub

Changes in / [a3261d7:13331dc] in git


Ignore:
Files:
35 added
10 deleted
215 edited

Legend:

Unmodified
Added
Removed
  • Makefile

    ra3261d7 r13331dc  
    8989DISPLAYLIB = libDelphesDisplay.lib
    9090
    91 VERSION = $(shell cat VERSION)
     91VERSION = x.y.z
    9292DISTDIR = Delphes-$(VERSION)
    9393DISTTAR = $(DISTDIR).tar.gz
     
    648648tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf): \
    649649        external/Hector/H_VerticalQuadrupole.$(SrcSuf)
     650tmp/external/TrackCovariance/AcceptanceClx.$(ObjSuf): \
     651        external/TrackCovariance/AcceptanceClx.$(SrcSuf)
    650652tmp/external/TrackCovariance/ObsTrk.$(ObjSuf): \
    651653        external/TrackCovariance/ObsTrk.$(SrcSuf)
     
    656658tmp/external/TrackCovariance/SolTrack.$(ObjSuf): \
    657659        external/TrackCovariance/SolTrack.$(SrcSuf)
     660tmp/external/TrackCovariance/TrkUtil.$(ObjSuf): \
     661        external/TrackCovariance/TrkUtil.$(SrcSuf)
     662tmp/external/TrackCovariance/VertexFit.$(ObjSuf): \
     663        external/TrackCovariance/VertexFit.$(SrcSuf)
    658664tmp/modules/AngularSmearing.$(ObjSuf): \
    659665        modules/AngularSmearing.$(SrcSuf) \
     
    11581164        tmp/external/Hector/H_VerticalKicker.$(ObjSuf) \
    11591165        tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf) \
     1166        tmp/external/TrackCovariance/AcceptanceClx.$(ObjSuf) \
    11601167        tmp/external/TrackCovariance/ObsTrk.$(ObjSuf) \
    11611168        tmp/external/TrackCovariance/SolGeom.$(ObjSuf) \
    11621169        tmp/external/TrackCovariance/SolGridCov.$(ObjSuf) \
    11631170        tmp/external/TrackCovariance/SolTrack.$(ObjSuf) \
     1171        tmp/external/TrackCovariance/TrkUtil.$(ObjSuf) \
     1172        tmp/external/TrackCovariance/VertexFit.$(ObjSuf) \
    11641173        tmp/modules/AngularSmearing.$(ObjSuf) \
    11651174        tmp/modules/BTagging.$(ObjSuf) \
     
    24342443        @echo ">> Building $(DISTTAR)"
    24352444        @mkdir -p $(DISTDIR)
    2436         @cp -a AUTHORS CHANGELOG CMakeLists.txt COPYING DelphesEnv.sh LICENSE NOTICE README README_4LHCb VERSION Makefile MinBias.pileup configure cards classes converters display doc examples external modules python readers validation $(DISTDIR)
     2445        @cp -a AUTHORS CHANGELOG CMakeLists.txt COPYING DelphesEnv.sh LICENSE NOTICE README README_4LHCb Makefile MinBias.pileup configure cards classes converters display doc examples external modules python readers validation $(DISTDIR)
    24372446        @find $(DISTDIR) -depth -name .\* -exec rm -rf {} \;
    24382447        @tar -czf $(DISTTAR) $(DISTDIR)
  • README.md

    ra3261d7 r13331dc  
    1 [![CircleCI](https://circleci.com/gh/delphes/delphes.svg?style=shield)](https://circleci.com/gh/delphes/delphes) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3735069.svg)](https://doi.org/10.5281/zenodo.3735069)
     1[![CI](https://github.com/delphes/delphes/actions/workflows/ci.yml/badge.svg)](https://github.com/delphes/delphes/actions/workflows/ci.yml) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.821635.svg)](https://doi.org/10.5281/zenodo.821635)
    22
    33Delphes
  • cards/FCC/FCChh.tcl

    ra3261d7 r13331dc  
    44#  Main authors:  Michele Selvaggi (CERN)
    55#
    6 #  Released on: Dec. 1st, 2017
     6#  Released on: October 14th, 2020
     7#
     8#  - fix muon resolution at high pT
     9#  - updated btagging, tau tagging and photon ID
     10#
    711#
    812#  Configuration: FCC-hh baseline detector
     
    10491053  (abs(eta) <= 2.5) * (pt > 1.0 && pt < 5.0)  * (0.70) +
    10501054  (abs(eta) <= 2.5) * (pt > 5.0 && pt < 10.0) * (0.85) +
    1051   (abs(eta) <= 2.5) * (pt > 10.0)             * (0.95) +
     1055  (abs(eta) <= 2.5) * (pt > 10.0)             * (0.90) +
    10521056   
    10531057  (abs(eta) > 2.5 && abs(eta) <= 4.0) * (pt > 1.0 && pt < 5.0)  * (0.60) +
     
    11381142  (abs(eta) < 2.5)                   * (pt > 500.0 && pt < 15000.0) * (0.01)*(1.0 - pt/15000.) + \
    11391143  (abs(eta) < 2.5)                   * (pt > 15000.0)               * (0.00) + \
    1140   (abs(eta) > 2.5 && abs(eta) < 4.0) * (pt > 10.0 && pt < 500)      * (0.0075) + \
    1141   (abs(eta) > 2.5 && abs(eta) < 4.0) * (pt > 500.0 && pt < 15000.0) * (0.0075)*(1.0 - pt/15000.) + \
     1144  (abs(eta) > 2.5 && abs(eta) < 4.0) * (pt > 10.0 && pt < 500)      * (0.01) + \
     1145  (abs(eta) > 2.5 && abs(eta) < 4.0) * (pt > 500.0 && pt < 15000.0) * (0.01)*(1.0 - pt/15000.) + \
    11421146  (abs(eta) < 2.5 && abs(eta) < 4.0) * (pt > 15000.0)               * (0.000) + \
    11431147  (abs(eta) > 4.0) * (0.00)}
     
    11461150
    11471151  (pt <= 10.0)                       * (0.00) +
    1148   (abs(eta) < 2.5)                   * (pt > 10.0 && pt < 500)      * (0.05) + \
    1149   (abs(eta) < 2.5)                   * (pt > 500.0 && pt < 15000.0) * (0.05)*(1.0 - pt/15000.) + \
     1152  (abs(eta) < 2.5)                   * (pt > 10.0 && pt < 500)      * (0.15) + \
     1153  (abs(eta) < 2.5)                   * (pt > 500.0 && pt < 15000.0) * (0.15)*(1.0 - pt/15000.) + \
    11501154  (abs(eta) < 2.5)                   * (pt > 15000.0)               * (0.000) + \
    1151   (abs(eta) > 2.5 && abs(eta) < 4.0) * (pt > 10.0 && pt < 500)      * (0.03) + \
    1152   (abs(eta) > 2.5 && abs(eta) < 4.0) * (pt > 500.0 && pt < 15000.0) * (0.03)*(1.0 - pt/15000.) + \
     1155  (abs(eta) > 2.5 && abs(eta) < 4.0) * (pt > 10.0 && pt < 500)      * (0.10) + \
     1156  (abs(eta) > 2.5 && abs(eta) < 4.0) * (pt > 500.0 && pt < 15000.0) * (0.10)*(1.0 - pt/15000.) + \
    11531157  (abs(eta) < 2.5 && abs(eta) < 4.0) * (pt > 15000.0)               * (0.000) + \
    11541158  (abs(eta) > 4.0) * (0.00)}
     
    11571161
    11581162  (pt <= 10.0)                                                       * (0.00) +
    1159   (abs(eta) < 2.5)                    * (pt > 10.0 && pt < 500)      * (0.85) +
    1160   (abs(eta) < 2.5)                    * (pt > 500.0 && pt < 15000.0) * (0.85)*(1.0 - pt/15000.) +
     1163  (abs(eta) < 2.5)                    * (pt > 10.0 && pt < 500)      * (0.82) +
     1164  (abs(eta) < 2.5)                    * (pt > 500.0 && pt < 15000.0) * (0.82)*(1.0 - pt/15000.) +
    11611165  (abs(eta) < 2.5)                    * (pt > 15000.0)               * (0.000) +
    11621166  (abs(eta) >= 2.5 && abs(eta) < 4.0) * (pt > 10.0 && pt < 500)      * (0.64) +
     
    12171221
    12181222  (pt <= 10.0)                                                       * (0.00) +
    1219   (abs(eta) < 2.5)                   * (pt > 10.0 && pt < 5000.0)    * (0.01) + \
    1220   (abs(eta) < 2.5)                   * (pt > 5000.0 && pt < 34000.0) * (0.01)  *(8./9. - pt/30000.) + \
     1223  (abs(eta) < 2.5)                   * (pt > 10.0 && pt < 5000.0)    * (0.02) + \
     1224  (abs(eta) < 2.5)                   * (pt > 5000.0 && pt < 34000.0) * (0.02)  *(8./9. - pt/30000.) + \
    12211225  (abs(eta) < 2.5)                   * (pt > 34000.0)                * (0.000) + \
    12221226  (abs(eta) > 2.5 && abs(eta) < 4.0) * (pt > 10.0 && pt < 5000.0)    * (0.0075) + \
     
    12281232
    12291233  (pt <= 10.0)                                                       * (0.00) +
    1230   (abs(eta) < 2.5)                   * (pt > 10.0 && pt < 5000.0)    * (0.005) + \
    1231   (abs(eta) < 2.5)                   * (pt > 5000.0 && pt < 34000.0) * (0.005)  *(8./9. - pt/30000.) + \
     1234  (abs(eta) < 2.5)                   * (pt > 10.0 && pt < 5000.0)    * (0.001) + \
     1235  (abs(eta) < 2.5)                   * (pt > 5000.0 && pt < 34000.0) * (0.001)  *(8./9. - pt/30000.) + \
    12321236  (abs(eta) < 2.5)                   * (pt > 34000.0)                * (0.000) + \
    1233   (abs(eta) > 2.5 && abs(eta) < 4.0) * (pt > 10.0 && pt < 5000.0)    * (0.00375) + \
    1234   (abs(eta) > 2.5 && abs(eta) < 4.0) * (pt > 5000.0 && pt < 34000.0) * (0.00375)*(8./9. - pt/30000.) + \
     1237  (abs(eta) > 2.5 && abs(eta) < 4.0) * (pt > 10.0 && pt < 5000.0)    * (0.001) + \
     1238  (abs(eta) > 2.5 && abs(eta) < 4.0) * (pt > 5000.0 && pt < 34000.0) * (0.001)*(8./9. - pt/30000.) + \
    12351239  (abs(eta) > 2.5 && abs(eta) < 4.0) * (pt > 34000.0)                * (0.00) + \
    12361240  (abs(eta) > 4.0)                   * (0.00)}
  • cards/FCC/muonMomentumResolutionVsP.tcl

    ra3261d7 r13331dc  
    1212set ResolutionFormula {
    1313 
    14 ( abs(eta) < 1.35 ) *
    15 
    16 (sqrt(0.0000364164 + (
    17    9.06262e-8 *pt^2* cosh(
    18      eta)^2 *(2.82074e-7/sin(2*atan(exp(-abs(eta))))^2 + (
    19       504.525 *(1/400000000 + (0.117945* 1/cosh(eta)^2)/(
    20          pt^2 *sin(2*atan(exp(-abs(eta))))^2)))/
    21       sin(2*atan(exp(-abs(eta))))^2) *sin(2*atan(exp(-abs(eta))))^2)/(
    22    0.00516429/sin(2*atan(exp(-abs(eta))))^2 + (
    23     96868.8 *(1/400000000 + (0.117945 * 1/cosh(eta)^2)/(
    24        pt^2 *sin(2*atan(exp(-abs(eta))))^2)))/
    25     sin(2*atan(exp(-abs(eta))))^2))
    26 
    27 ) +
     14
     15( abs(eta) < 1.35 ) *
     16
     17    (sqrt(0.0000364164 + (
     18                          3*9.06262e-8 *pt^2* cosh(
     19         eta)^2 *(2.82074e-7/sin(2*atan(exp(-abs(eta))))^2 + (
     20          504.525 *(1/400000000 + (0.117945* 1/cosh(eta)^2)/(
     21             pt^2 *sin(2*atan(exp(-abs(eta))))^2)))/
     22          sin(2*atan(exp(-abs(eta))))^2) *sin(2*atan(exp(-abs(eta))))^2)/(
     23       0.00516429/sin(2*atan(exp(-abs(eta))))^2 + (
     24        96868.8 *(1/400000000 + 5*(0.117945 * 1/cosh(eta)^2)/(
     25           pt^2 *sin(2*atan(exp(-abs(eta))))^2)))/
     26        sin(2*atan(exp(-abs(eta))))^2))
     27
     28    ) +
    2829 
    2930( abs(eta) > 1.35 && abs(eta) < 2.00) *
  • cards/ILCgen/ILCgen_BTagging_N.tcl

    ra3261d7 r13331dc  
    104104    source ILCgen/ILCgen_BTagging_50.tcl
    105105}
    106 
  • cards/ILCgen/ILCgen_BeamCalEfficiency.tcl

    ra3261d7 r13331dc  
    22# Based on IDR Figure 8.8a and Moritz Hebermehl PhD Thesis Figure 4.10
    33# A.F.Zarnecki,  June 2020
    4 
    5 # set EfficiencyFormula {efficiency formula as a function of eta and pt}
    64
    75set EfficiencyFormula {
  • cards/ILCgen/ILCgen_BeamCalF_Binning.tcl

    ra3261d7 r13331dc  
    22# corrected by A.F.Zarnecki
    33
    4 set pi [expr {acos(-1)}]
    5    
     4set pi [expr {acos(-1)} ]
     5
    66# BeamCal eta range 4.0 - 5.8 -> 2.099-0.347 =1.752deg
    77#
  • cards/ILCgen/ILCgen_BeamCalR_Binning.tcl

    ra3261d7 r13331dc  
    22# corrected by A.F.Zarnecki
    33
    4 set pi [expr {acos(-1)}]
    5    
     4set pi [expr {acos(-1)} ]
     5
    66# BeamCal eta range 4.0 - 5.8 -> 2.099-0.347 =1.752deg
    77#
  • cards/ILCgen/ILCgen_BeamCal_EnergyFractions.tcl

    ra3261d7 r13331dc  
    11#P.Sopicki
    2   # default energy fractions {abs(PDG code)} {fraction of energy deposited in BeamCal}
    32
    43  add EnergyFraction {0} {0.0}
     
    2019  add EnergyFraction {310} {0.3}
    2120  add EnergyFraction {3122} {0.3}
    22 
  • cards/ILCgen/ILCgen_BeamCal_Resolution.tcl

    ra3261d7 r13331dc  
    11# P.Sopicki, corrected by A.F.Zarnecki
    22# BeamCal resolution
    3 
    4 # set ResolutionFormula {resolution formula as a function of eta and energy}
    53
    64  set ResolutionFormula {
     
    86  (abs(eta) > 4.8 && abs(eta) <= 5.8) * sqrt(energy^2*0.03^2 + energy*0.45^2)
    97  }
    10 
  • cards/ILCgen/ILCgen_CTagging_N.tcl

    ra3261d7 r13331dc  
    104104    source ILCgen/ILCgen_CTagging_20.tcl
    105105}
    106 
  • cards/ILCgen/ILCgen_ChrgHadMomentumSmearing.tcl

    ra3261d7 r13331dc  
    66
    77set ResolutionFormula {
    8 
    9 (abs(eta) <= 2.0) *
    10   exp( -6.82012  - 0.284133*abs(eta) + 0.64585*eta*eta
     8  (abs(eta) <= 2.0) *
     9    exp( -6.82012  - 0.284133*abs(eta) + 0.64585*eta*eta
    1110     + (0.829675 -0.188197*abs(eta) +  0.106226 * eta*eta  - 1.0) * log(pt)
    1211     + (0.0766417-0.00435667*abs(eta) + 0.00174804*eta*eta) * log(pt)*log(pt))
    13 
    14 +
    15 
    16 (abs(eta) > 2.0 && abs(eta) <= 3.0) *
    17   exp(  -4.54609
     12  +
     13  (abs(eta) > 2.0 && abs(eta) <= 3.0) *
     14    exp(  -4.54609
    1815     + ( 0.87526 - 1.0) * log(pt)
    1916     + (-0.0800672 + 0.0891669 * abs(eta)) * log(pt)*log(pt))
    20 
    21 }
    22 
     17  }
  • cards/ILCgen/ILCgen_ChrgHadTrackingEff.tcl

    ra3261d7 r13331dc  
    44#  A.F.Zarnecki, June 12, 2020
    55
    6   set EfficiencyFormula {                                                    (pt <= 0.1)   * (0.00)  +
    7                                    (abs(eta) <= 1.83)     *      (pt > 0.1 && pt <= 0.2)   * (0.70)  +
    8                                    (abs(eta) <= 1.83)     *      (pt > 0.2 && pt <= 0.3)   * (0.93)  +
    9                                    (abs(eta) <= 1.83)     *      (pt > 0.3 && pt <= 0.7)   * (0.995) +
    10                                    (abs(eta) <= 1.83)     *      (pt > 0.7)                * (1.00)  +
    11                 (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.1 && pt <= 0.2)   * (0.697) +
    12                 (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.2 && pt <= 0.3)   * (0.925) +
    13                 (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.3 && pt <= 0.7)   * (0.99)  +
    14                 (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.7)                * (0.995) +
    15                 (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.1 && pt <= 0.2)   * (0.665) +
    16                 (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.2 && pt <= 0.3)   * (0.884) +
    17                 (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.3 && pt <= 0.7)   * (0.945) +
    18                 (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.7)                * (0.95)  +
    19                 (abs(eta) > 3.00)                         *      (pt > 0.1)                * (0.00)  }
     6set EfficiencyFormula {
     7                                                                 (pt <= 0.1)   * (0.00)  +
     8                       (abs(eta) <= 1.83)     *      (pt > 0.1 && pt <= 0.2)   * (0.70)  +
     9                       (abs(eta) <= 1.83)     *      (pt > 0.2 && pt <= 0.3)   * (0.93)  +
     10                       (abs(eta) <= 1.83)     *      (pt > 0.3 && pt <= 0.7)   * (0.995) +
     11                       (abs(eta) <= 1.83)     *      (pt > 0.7)                * (1.00)  +
     12    (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.1 && pt <= 0.2)   * (0.697) +
     13    (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.2 && pt <= 0.3)   * (0.925) +
     14    (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.3 && pt <= 0.7)   * (0.99)  +
     15    (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.7)                * (0.995) +
     16    (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.1 && pt <= 0.2)   * (0.665) +
     17    (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.2 && pt <= 0.3)   * (0.884) +
     18    (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.3 && pt <= 0.7)   * (0.945) +
     19    (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.7)                * (0.95)  +
     20    (abs(eta) > 3.00)                         *      (pt > 0.1)                * (0.00)
     21  }
  • cards/ILCgen/ILCgen_ECAL_EnergyFractions.tcl

    ra3261d7 r13331dc  
    11#P.Sopicki
    2 # default energy fractions {abs(PDG code)} {fraction in ECAL or LumiCal}
     2
    33  add EnergyFraction {0} {0.0}
    44  # energy fractions for e, gamma and pi0
  • cards/ILCgen/ILCgen_ECAL_Resolution.tcl

    ra3261d7 r13331dc  
    22# ECAL and LumiCal resolution: same formula used at the moment
    33#
    4 # set ResolutionFormula {resolution formula as a function of eta and energy}
     4
    55set ResolutionFormula {
    66    (abs(eta) <= 3 )                 * sqrt(energy^2*0.01^2 + energy*0.17^2)+
    77    (abs(eta) > 3 && abs(eta) <= 4 ) * sqrt(energy^2*0.01^2 + energy*0.17^2)
    8  }
     8  }
  • cards/ILCgen/ILCgen_ElectronEfficiency.tcl

    ra3261d7 r13331dc  
    1 
    2   # set EfficiencyFormula {efficiency formula as a function of eta and pt}
    31
    42# efficiency formula for electrons (ECAL and LumiCal)
  • cards/ILCgen/ILCgen_ElectronMomentumSmearing.tcl

    ra3261d7 r13331dc  
    66
    77set ResolutionFormula {
    8 
    9 (abs(eta) <= 2.0) *
    10   exp( -6.82012  - 0.284133*abs(eta) + 0.64585*eta*eta
     8  (abs(eta) <= 2.0) *
     9    exp( -6.82012  - 0.284133*abs(eta) + 0.64585*eta*eta
    1110     + (0.829675 -0.188197*abs(eta) +  0.106226 * eta*eta  - 1.0) * log(pt)
    1211     + (0.0766417-0.00435667*abs(eta) + 0.00174804*eta*eta) * log(pt)*log(pt))
    13 
    14 +
    15 
    16 (abs(eta) > 2.0 && abs(eta) <= 3.0) *
    17   exp(  -4.54609
     12  +
     13  (abs(eta) > 2.0 && abs(eta) <= 3.0) *
     14    exp(  -4.54609
    1815     + ( 0.87526 - 1.0) * log(pt)
    1916     + (-0.0800672 + 0.0891669 * abs(eta)) * log(pt)*log(pt))
    20 
    21 }
    22 
     17  }
  • cards/ILCgen/ILCgen_ElectronTrackingEff.tcl

    ra3261d7 r13331dc  
    44#  A.F.Zarnecki, June 12, 2020
    55
    6   set EfficiencyFormula {                                                    (pt <= 0.1)   * (0.00)  +
    7                                    (abs(eta) <= 1.83)     *      (pt > 0.1 && pt <= 0.2)   * (0.70)  +
    8                                    (abs(eta) <= 1.83)     *      (pt > 0.2 && pt <= 0.3)   * (0.93)  +
    9                                    (abs(eta) <= 1.83)     *      (pt > 0.3 && pt <= 0.7)   * (0.995) +
    10                                    (abs(eta) <= 1.83)     *      (pt > 0.7)                * (1.00)  +
    11                 (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.1 && pt <= 0.2)   * (0.697) +
    12                 (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.2 && pt <= 0.3)   * (0.925) +
    13                 (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.3 && pt <= 0.7)   * (0.99)  +
    14                 (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.7)                * (0.995) +
    15                 (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.1 && pt <= 0.2)   * (0.665) +
    16                 (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.2 && pt <= 0.3)   * (0.884) +
    17                 (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.3 && pt <= 0.7)   * (0.945) +
    18                 (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.7)                * (0.95)  +
    19                 (abs(eta) > 3.00)                         *      (pt > 0.1)                * (0.00)  }
     6set EfficiencyFormula {
     7                                                                 (pt <= 0.1)   * (0.00)  +
     8                       (abs(eta) <= 1.83)     *      (pt > 0.1 && pt <= 0.2)   * (0.70)  +
     9                       (abs(eta) <= 1.83)     *      (pt > 0.2 && pt <= 0.3)   * (0.93)  +
     10                       (abs(eta) <= 1.83)     *      (pt > 0.3 && pt <= 0.7)   * (0.995) +
     11                       (abs(eta) <= 1.83)     *      (pt > 0.7)                * (1.00)  +
     12    (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.1 && pt <= 0.2)   * (0.697) +
     13    (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.2 && pt <= 0.3)   * (0.925) +
     14    (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.3 && pt <= 0.7)   * (0.99)  +
     15    (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.7)                * (0.995) +
     16    (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.1 && pt <= 0.2)   * (0.665) +
     17    (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.2 && pt <= 0.3)   * (0.884) +
     18    (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.3 && pt <= 0.7)   * (0.945) +
     19    (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.7)                * (0.95)  +
     20    (abs(eta) > 3.00)                         *      (pt > 0.1)                * (0.00)
     21  }
  • cards/ILCgen/ILCgen_HCAL_EnergyFractions.tcl

    ra3261d7 r13331dc  
    11#P.Sopicki
    2 # default energy fractions {abs(PDG code)} {fraction in HCAL or LHCAL}
     2
    33  add EnergyFraction {0} {1.0}
    44  # energy fractions for e, gamma and pi0
  • cards/ILCgen/ILCgen_HCAL_Resolution.tcl

    ra3261d7 r13331dc  
    22# HCAL and LHCAL resolution: same formula used at the moment
    33#
    4 # set ResolutionFormula {resolution formula as a function of eta and energy}
     4
    55set ResolutionFormula {
    66   (abs(eta) <= 2.8 )                 * sqrt(energy^2*0.017^2 + energy*0.45^2)+
    77   (abs(eta) > 2.8 && abs(eta)<=3.8 ) * sqrt(energy^2*0.017^2 + energy*0.45^2)
    8 }
    9 
     8  }
  • cards/ILCgen/ILCgen_MuonMomentumSmearing.tcl

    ra3261d7 r13331dc  
    66
    77set ResolutionFormula {
    8 
    9 (abs(eta) <= 2.0) *
    10   exp( -6.82012  - 0.284133*abs(eta) + 0.64585*eta*eta
     8  (abs(eta) <= 2.0) *
     9    exp( -6.82012  - 0.284133*abs(eta) + 0.64585*eta*eta
    1110     + (0.829675 -0.188197*abs(eta) +  0.106226 * eta*eta  - 1.0) * log(pt)
    1211     + (0.0766417-0.00435667*abs(eta) + 0.00174804*eta*eta) * log(pt)*log(pt))
    13 
    14 +
    15 
    16 (abs(eta) > 2.0 && abs(eta) <= 3.0) *
    17   exp(  -4.54609
     12  +
     13  (abs(eta) > 2.0 && abs(eta) <= 3.0) *
     14    exp(  -4.54609
    1815     + ( 0.87526 - 1.0) * log(pt)
    1916     + (-0.0800672 + 0.0891669 * abs(eta)) * log(pt)*log(pt))
    20 
    21 }
    22 
     17  }
  • cards/ILCgen/ILCgen_MuonTrackingEff.tcl

    ra3261d7 r13331dc  
    44#  A.F.Zarnecki, June 12, 2020
    55
    6   set EfficiencyFormula {                                                    (pt <= 0.1)   * (0.00)  +
    7                                    (abs(eta) <= 1.83)     *      (pt > 0.1 && pt <= 0.2)   * (0.70)  +
    8                                    (abs(eta) <= 1.83)     *      (pt > 0.2 && pt <= 0.3)   * (0.93)  +
    9                                    (abs(eta) <= 1.83)     *      (pt > 0.3 && pt <= 0.7)   * (0.995) +
    10                                    (abs(eta) <= 1.83)     *      (pt > 0.7)                * (1.00)  +
    11                 (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.1 && pt <= 0.2)   * (0.697) +
    12                 (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.2 && pt <= 0.3)   * (0.925) +
    13                 (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.3 && pt <= 0.7)   * (0.99)  +
    14                 (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.7)                * (0.995) +
    15                 (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.1 && pt <= 0.2)   * (0.665) +
    16                 (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.2 && pt <= 0.3)   * (0.884) +
    17                 (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.3 && pt <= 0.7)   * (0.945) +
    18                 (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.7)                * (0.95)  +
    19                 (abs(eta) > 3.00)                         *      (pt > 0.1)                * (0.00)  }
     6set EfficiencyFormula {
     7                                                                 (pt <= 0.1)   * (0.00)  +
     8                       (abs(eta) <= 1.83)     *      (pt > 0.1 && pt <= 0.2)   * (0.70)  +
     9                       (abs(eta) <= 1.83)     *      (pt > 0.2 && pt <= 0.3)   * (0.93)  +
     10                       (abs(eta) <= 1.83)     *      (pt > 0.3 && pt <= 0.7)   * (0.995) +
     11                       (abs(eta) <= 1.83)     *      (pt > 0.7)                * (1.00)  +
     12    (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.1 && pt <= 0.2)   * (0.697) +
     13    (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.2 && pt <= 0.3)   * (0.925) +
     14    (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.3 && pt <= 0.7)   * (0.99)  +
     15    (abs(eta) > 1.83 && abs(eta) <= 2.65)     *      (pt > 0.7)                * (0.995) +
     16    (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.1 && pt <= 0.2)   * (0.665) +
     17    (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.2 && pt <= 0.3)   * (0.884) +
     18    (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.3 && pt <= 0.7)   * (0.945) +
     19    (abs(eta) > 2.65 && abs(eta) <= 3.00)     *      (pt > 0.7)                * (0.95)  +
     20    (abs(eta) > 3.00)                         *      (pt > 0.1)                * (0.00)
     21  }
  • cards/ILCgen/ILCgen_PhotonEfficiency.tcl

    ra3261d7 r13331dc  
    1 
    2   # set EfficiencyFormula {efficiency formula as a function of eta and pt}
    3 
    4   # efficiency formula for photons (ECAL + LumiCal)
     1# set EfficiencyFormula (efficiency formula as a function of eta and pt)
     2# efficiency formula for photons (ECAL + LumiCal)
    53
    64  set EfficiencyFormula {
  • cards/delphes_card_CLICdet_Stage1.tcl

    ra3261d7 r13331dc  
    298298
    299299    set EfficiencyFormula {
    300         (abs(eta) > 2.54) * (0.000) +
    301         (energy >= 80) * (abs(eta) < 2.54)  * (1.000) +
    302         (energy < 80 && energy >= 3) * (abs(eta) <=2.54 && abs(eta) > 2.34)  * (0.994) +
    303         (energy < 80 && energy >= 3) * (abs(eta) <= 2.34) * (1.000) +
    304         (energy < 3) * (abs(eta) <= 2.54 && abs(eta) > 0.55 ) * (0.000) +
    305         (energy < 3) * (abs(eta) <= 0.55 ) * (1.000)
     300 (pt <= 0.1)                                                                        * (0.000) +
     301 (pt > 0.1)                                * (abs(eta) > 2.54)                      * (0.000) +
     302 (pt > 0.1) * (energy >= 80)               * (abs(eta) < 2.54)                      * (1.000) +
     303 (pt > 0.1) * (energy < 80 && energy >= 3) * (abs(eta) <=2.54 && abs(eta) > 2.34)   * (0.994) +
     304 (pt > 0.1) * (energy < 80 && energy >= 3) * (abs(eta) <= 2.34)                     * (1.000) +
     305 (pt > 0.1) * (energy < 3)                 * (abs(eta) <= 2.54 && abs(eta) > 0.55 ) * (0.990) +
     306 (pt > 0.1) * (energy < 3)                 * (abs(eta) <= 0.55 )                    * (1.000)
    306307    }
    307308}
     
    318319    # Current full simulation with CLICdet provides for electrons:
    319320    set EfficiencyFormula {
    320         (pt <= 1)                                                               * (0.000) +
    321         (abs(eta) > 2.54)                                                       * (0.000) +
    322         (energy >= 80)                 * (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (0.993) +
    323         (energy >= 80)                 * (abs(eta) <= 2.44 && abs(eta) > 2.34 ) * (0.997) +
    324         (energy >= 80)                 * (abs(eta) <= 2.34  )                   * (1.000) +
    325         (energy < 80 && energy >= 5) * (abs(eta) <= 2.54 && abs(eta) > 2.17 ) * (0.998) +
    326         (energy < 80 && energy >= 5) * (abs(eta) <= 2.17)                     * (1.000) +
    327         (energy < 5)   * (abs(eta) > 2.34 )                     * (0.000) +
    328         (energy < 5)   * (abs(eta) <= 2.34 && abs(eta) > 0.76 ) * (0.997) +
    329         (energy < 5)   * (abs(eta) <= 0.76)                     * (0.999)
     321 (pt <= 0.1)                                                                        * (0.000) +
     322 (pt > 0.1)                                * (abs(eta) > 2.54)                      * (0.000) +
     323 (pt > 0.1) * (energy >= 80)               * (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (0.993) +
     324 (pt > 0.1) * (energy >= 80)               * (abs(eta) <= 2.44 && abs(eta) > 2.34 ) * (0.997) +
     325 (pt > 0.1) * (energy >= 80)               * (abs(eta) <= 2.34  )                   * (1.000) +
     326 (pt > 0.1) * (energy < 80 && energy >= 5) * (abs(eta) <= 2.54 && abs(eta) > 2.17 ) * (0.998) +
     327 (pt > 0.1) * (energy < 80 && energy >= 5) * (abs(eta) <= 2.17)                     * (1.000) +
     328 (pt > 0.1) * (energy < 5)                 * (abs(eta) <= 2.54 && abs(eta) > 2.34 ) * (1.000) +
     329 (pt > 0.1) * (energy < 5)                 * (abs(eta) <= 2.34 && abs(eta) > 0.76 ) * (0.997) +
     330 (pt > 0.1) * (energy < 5)                 * (abs(eta) <= 0.76)                     * (0.999)
    330331    }
    331332}
     
    341342    # Current full simulation with CLICdet provides for muons:
    342343    set EfficiencyFormula {
    343         (pt < 1)                                                                * (0.000) +
    344         (abs(eta) > 2.54)                                                       * (0.000) +
    345         (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (energy >= 80)                 * (0.994) +
    346         (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (energy >= 5 && energy < 80)   * (0.996) +
    347         (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (energy < 5 )                  * (0.996) +
    348         (abs(eta) <= 2.44 )                    * (energy >= 5 )                 * (1.000) +
    349         (abs(eta) <= 2.44 && abs(eta) > 2.25 ) * (energy < 5 && pt >=1 )        * (0.999) +
    350         (abs(eta) <= 2.25 )                    * (energy >= 1)                  * (1.000)
    351 
    352        
     344  (pt <= 0.1)                                                                          * (0.000) +
     345  (pt > 0.1) * (abs(eta) > 2.54)                                                       * (0.000) +
     346  (pt > 0.1) * (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (energy >= 80)                 * (0.994) +
     347  (pt > 0.1) * (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (energy >= 5 && energy < 80)   * (0.996) +
     348  (pt > 0.1) * (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (energy < 5 )                  * (0.996) +
     349  (pt > 0.1) * (abs(eta) <= 2.44 )                    * (energy >= 5 )                 * (1.000) +
     350  (pt > 0.1) * (abs(eta) <= 2.44 && abs(eta) > 2.25 ) * (energy < 5 )                  * (0.999) +
     351  (pt > 0.1) * (abs(eta) <= 2.25 )                    * (energy < 5 )                  * (1.000)
    353352    }
    354353}
     
    945944module FastJetFinder FastJetFinderKt {
    946945    #  set InputArray Calorimeter/towers
    947     set InputArray EFlowMerger/eflow
     946    set InputArray EFlowFilter/eflow
    948947
    949948    set OutputArray KTjets
  • cards/delphes_card_CLICdet_Stage2.tcl

    ra3261d7 r13331dc  
    490490
    491491    set EfficiencyFormula {
    492         (abs(eta) > 2.54) * (0.000) +
    493         (energy >= 80) * (abs(eta) < 2.54)  * (1.000) +
    494         (energy < 80 && energy >= 3) * (abs(eta) <=2.54 && abs(eta) > 2.34)  * (0.994) +
    495         (energy < 80 && energy >= 3) * (abs(eta) <= 2.34) * (1.000) +
    496         (energy < 3) * (abs(eta) <= 2.54 && abs(eta) > 0.55 ) * (0.000) +
    497         (energy < 3) * (abs(eta) <= 0.55 ) * (1.000)
     492 (pt <= 0.1)                                                                        * (0.000) +
     493 (pt > 0.1)                                * (abs(eta) > 2.54)                      * (0.000) +
     494 (pt > 0.1) * (energy >= 80)               * (abs(eta) < 2.54)                      * (1.000) +
     495 (pt > 0.1) * (energy < 80 && energy >= 3) * (abs(eta) <=2.54 && abs(eta) > 2.34)   * (0.994) +
     496 (pt > 0.1) * (energy < 80 && energy >= 3) * (abs(eta) <= 2.34)                     * (1.000) +
     497 (pt > 0.1) * (energy < 3)                 * (abs(eta) <= 2.54 && abs(eta) > 0.55 ) * (0.990) +
     498 (pt > 0.1) * (energy < 3)                 * (abs(eta) <= 0.55 )                    * (1.000)
    498499    }
    499500}
     
    510511    # Current full simulation with CLICdet provides for electrons:
    511512    set EfficiencyFormula {
    512         (pt <= 1)                                                               * (0.000) +
    513         (abs(eta) > 2.54)                                                       * (0.000) +
    514         (energy >= 80)                 * (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (0.993) +
    515         (energy >= 80)                 * (abs(eta) <= 2.44 && abs(eta) > 2.34 ) * (0.997) +
    516         (energy >= 80)                 * (abs(eta) <= 2.34  )                   * (1.000) +
    517         (energy < 80 && energy >= 5) * (abs(eta) <= 2.54 && abs(eta) > 2.17 ) * (0.998) +
    518         (energy < 80 && energy >= 5) * (abs(eta) <= 2.17)                     * (1.000) +
    519         (energy < 5)   * (abs(eta) > 2.34 )                     * (0.000) +
    520         (energy < 5)   * (abs(eta) <= 2.34 && abs(eta) > 0.76 ) * (0.997) +
    521         (energy < 5)   * (abs(eta) <= 0.76)                     * (0.999)
     513 (pt <= 0.1)                                                                        * (0.000) +
     514 (pt > 0.1)                                * (abs(eta) > 2.54)                      * (0.000) +
     515 (pt > 0.1) * (energy >= 80)               * (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (0.993) +
     516 (pt > 0.1) * (energy >= 80)               * (abs(eta) <= 2.44 && abs(eta) > 2.34 ) * (0.997) +
     517 (pt > 0.1) * (energy >= 80)               * (abs(eta) <= 2.34  )                   * (1.000) +
     518 (pt > 0.1) * (energy < 80 && energy >= 5) * (abs(eta) <= 2.54 && abs(eta) > 2.17 ) * (0.998) +
     519 (pt > 0.1) * (energy < 80 && energy >= 5) * (abs(eta) <= 2.17)                     * (1.000) +
     520 (pt > 0.1) * (energy < 5)                 * (abs(eta) <= 2.54 && abs(eta) > 2.34 ) * (1.000) +
     521 (pt > 0.1) * (energy < 5)                 * (abs(eta) <= 2.34 && abs(eta) > 0.76 ) * (0.997) +
     522 (pt > 0.1) * (energy < 5)                 * (abs(eta) <= 0.76)                     * (0.999)
    522523    }
    523524}
     
    533534    # Current full simulation with CLICdet provides for muons:
    534535    set EfficiencyFormula {
    535         (pt < 1)                                                                * (0.000) +
    536         (abs(eta) > 2.54)                                                       * (0.000) +
    537         (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (energy >= 80)                 * (0.994) +
    538         (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (energy >= 5 && energy < 80)   * (0.996) +
    539         (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (energy < 5 )                  * (0.996) +
    540         (abs(eta) <= 2.44 )                    * (energy >= 5 )                 * (1.000) +
    541         (abs(eta) <= 2.44 && abs(eta) > 2.25 ) * (energy < 5 && pt >=1 )        * (0.999) +
    542         (abs(eta) <= 2.25 )                    * (energy >= 1)                  * (1.000)
    543 
    544        
     536  (pt <= 0.1)                                                                          * (0.000) +
     537  (pt > 0.1) * (abs(eta) > 2.54)                                                       * (0.000) +
     538  (pt > 0.1) * (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (energy >= 80)                 * (0.994) +
     539  (pt > 0.1) * (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (energy >= 5 && energy < 80)   * (0.996) +
     540  (pt > 0.1) * (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (energy < 5 )                  * (0.996) +
     541  (pt > 0.1) * (abs(eta) <= 2.44 )                    * (energy >= 5 )                 * (1.000) +
     542  (pt > 0.1) * (abs(eta) <= 2.44 && abs(eta) > 2.25 ) * (energy < 5 )                  * (0.999) +
     543  (pt > 0.1) * (abs(eta) <= 2.25 )                    * (energy < 5 )                  * (1.000)
    545544    }
    546545}
     
    11361135module FastJetFinder FastJetFinderKt {
    11371136    #  set InputArray Calorimeter/towers
    1138     set InputArray EFlowMerger/eflow
     1137    set InputArray EFlowFilter/eflow
    11391138
    11401139    set OutputArray KTjets
  • cards/delphes_card_CLICdet_Stage3.tcl

    ra3261d7 r13331dc  
    484484
    485485    set EfficiencyFormula {
    486         (abs(eta) > 2.54) * (0.000) +
    487         (energy >= 80) * (abs(eta) < 2.54)  * (1.000) +
    488         (energy < 80 && energy >= 3) * (abs(eta) <=2.54 && abs(eta) > 2.34)  * (0.994) +
    489         (energy < 80 && energy >= 3) * (abs(eta) <= 2.34) * (1.000) +
    490         (energy < 3) * (abs(eta) <= 2.54 && abs(eta) > 0.55 ) * (0.000) +
    491         (energy < 3) * (abs(eta) <= 0.55 ) * (1.000)
     486 (pt <= 0.1)                                                                        * (0.000) +
     487 (pt > 0.1)                                * (abs(eta) > 2.54)                      * (0.000) +
     488 (pt > 0.1) * (energy >= 80)               * (abs(eta) < 2.54)                      * (1.000) +
     489 (pt > 0.1) * (energy < 80 && energy >= 3) * (abs(eta) <=2.54 && abs(eta) > 2.34)   * (0.994) +
     490 (pt > 0.1) * (energy < 80 && energy >= 3) * (abs(eta) <= 2.34)                     * (1.000) +
     491 (pt > 0.1) * (energy < 3)                 * (abs(eta) <= 2.54 && abs(eta) > 0.55 ) * (0.990) +
     492 (pt > 0.1) * (energy < 3)                 * (abs(eta) <= 0.55 )                    * (1.000)
    492493    }
    493494}
     
    504505    # Current full simulation with CLICdet provides for electrons:
    505506    set EfficiencyFormula {
    506         (pt <= 1)                                                               * (0.000) +
    507         (abs(eta) > 2.54)                                                       * (0.000) +
    508         (energy >= 80)                 * (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (0.993) +
    509         (energy >= 80)                 * (abs(eta) <= 2.44 && abs(eta) > 2.34 ) * (0.997) +
    510         (energy >= 80)                 * (abs(eta) <= 2.34  )                   * (1.000) +
    511         (energy < 80 && energy >= 5) * (abs(eta) <= 2.54 && abs(eta) > 2.17 ) * (0.998) +
    512         (energy < 80 && energy >= 5) * (abs(eta) <= 2.17)                     * (1.000) +
    513         (energy < 5)   * (abs(eta) > 2.34 )                     * (0.000) +
    514         (energy < 5)   * (abs(eta) <= 2.34 && abs(eta) > 0.76 ) * (0.997) +
    515         (energy < 5)   * (abs(eta) <= 0.76)                     * (0.999)
     507 (pt <= 0.1)                                                                        * (0.000) +
     508 (pt > 0.1)                                * (abs(eta) > 2.54)                      * (0.000) +
     509 (pt > 0.1) * (energy >= 80)               * (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (0.993) +
     510 (pt > 0.1) * (energy >= 80)               * (abs(eta) <= 2.44 && abs(eta) > 2.34 ) * (0.997) +
     511 (pt > 0.1) * (energy >= 80)               * (abs(eta) <= 2.34  )                   * (1.000) +
     512 (pt > 0.1) * (energy < 80 && energy >= 5) * (abs(eta) <= 2.54 && abs(eta) > 2.17 ) * (0.998) +
     513 (pt > 0.1) * (energy < 80 && energy >= 5) * (abs(eta) <= 2.17)                     * (1.000) +
     514 (pt > 0.1) * (energy < 5)                 * (abs(eta) <= 2.54 && abs(eta) > 2.34 ) * (1.000) +
     515 (pt > 0.1) * (energy < 5)                 * (abs(eta) <= 2.34 && abs(eta) > 0.76 ) * (0.997) +
     516 (pt > 0.1) * (energy < 5)                 * (abs(eta) <= 0.76)                     * (0.999)
    516517    }
    517518}
     
    527528    # Current full simulation with CLICdet provides for muons:
    528529    set EfficiencyFormula {
    529         (pt < 1)                                                                * (0.000) +
    530         (abs(eta) > 2.54)                                                       * (0.000) +
    531         (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (energy >= 80)                 * (0.994) +
    532         (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (energy >= 5 && energy < 80)   * (0.996) +
    533         (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (energy < 5 )                  * (0.996) +
    534         (abs(eta) <= 2.44 )                    * (energy >= 5 )                 * (1.000) +
    535         (abs(eta) <= 2.44 && abs(eta) > 2.25 ) * (energy < 5 && pt >=1 )        * (0.999) +
    536         (abs(eta) <= 2.25 )                    * (energy >= 1)                  * (1.000)
    537 
    538        
     530  (pt <= 0.1)                                                                          * (0.000) +
     531  (pt > 0.1) * (abs(eta) > 2.54)                                                       * (0.000) +
     532  (pt > 0.1) * (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (energy >= 80)                 * (0.994) +
     533  (pt > 0.1) * (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (energy >= 5 && energy < 80)   * (0.996) +
     534  (pt > 0.1) * (abs(eta) <= 2.54 && abs(eta) > 2.44 ) * (energy < 5 )                  * (0.996) +
     535  (pt > 0.1) * (abs(eta) <= 2.44 )                    * (energy >= 5 )                 * (1.000) +
     536  (pt > 0.1) * (abs(eta) <= 2.44 && abs(eta) > 2.25 ) * (energy < 5 )                  * (0.999) +
     537  (pt > 0.1) * (abs(eta) <= 2.25 )                    * (energy < 5 )                  * (1.000)
    539538    }
    540539}
     
    11321131module FastJetFinder FastJetFinderKt {
    11331132    #  set InputArray Calorimeter/towers
    1134     set InputArray EFlowMerger/eflow
     1133    set InputArray EFlowFilter/eflow
    11351134
    11361135    set OutputArray KTjets
  • cards/delphes_card_IDEA.tcl

    ra3261d7 r13331dc  
    11####################################################################                                l
    2 # FCC-ee IDEA detector model                                                                                     
    3 #                                                                                                   
    4 # Authors: Elisa Fontanesi, Lorenzo Pezzotti, Massimiliano Antonello                                 
     2# FCC-ee IDEA detector model
     3#
     4# Authors: Elisa Fontanesi, Lorenzo Pezzotti, Massimiliano Antonello, Michele Selvaggi
    55# email: efontane@bo.infn.it,
    6 #        lorenzo.pezzotti01@universitadipavia.it,                                                   
    7 #        m.antonello@uninsubria.it,                                                                 
    8 #####################################################################                               
    9 #       
     6#        lorenzo.pezzotti01@universitadipavia.it,
     7#        m.antonello@uninsubria.it,
     8#        michele.selvaggi@cern.ch
     9#####################################################################
     10
     11set B 2.0
     12
    1013#######################################
    1114# Order of execution of various modules
     
    1922  MuonTrackingEfficiency
    2023
    21   ChargedHadronMomentumSmearing
    22   ElectronMomentumSmearing
    23   MuonMomentumSmearing
    24 
    25   TrackMerger
     24  TrackMergerPre
     25  TrackSmearing
     26
     27  TrackMerger
    2628  Calorimeter
    2729  EFlowMerger
     
    2931  PhotonEfficiency
    3032  PhotonIsolation
     33
     34  MuonFilter
    3135
    3236  ElectronFilter
     
    4246  GenJetFinder
    4347  GenMissingET
    44  
     48
    4549  FastJetFinder
    4650
     
    5761  TreeWriter
    5862}
    59 
    6063
    6164#################################
     
    7881
    7982  # magnetic field, in T
    80   set Bz 2.0
     83  set Bz $B
    8184}
    8285
     
    98101}
    99102
    100 #       (pt <= 0.1)                                     * (0.00) + 
     103#       (pt <= 0.1)                                     * (0.00) +
    101104#       (abs(eta) <= 3.0)               * (pt > 0.1)    * (1.00) +
    102105#       (abs(eta) > 3)                                  * (0.00)
     
    119122        (energy < 0.5 && energy >= 0.3) * (abs(eta) <= 3.0)    * (0.65) +
    120123        (energy < 0.3) * (abs(eta) <= 3.0)                     * (0.06)
    121     } 
     124    }
    122125}
    123126
     
    140143}
    141144
    142 
    143 ########################################
    144 # Momentum resolution for charged tracks
    145 ########################################
    146 
    147 module MomentumSmearing ChargedHadronMomentumSmearing {
    148     set InputArray ChargedHadronTrackingEfficiency/chargedHadrons
    149     set OutputArray chargedHadrons
    150 
    151 
    152     # Resolution given in dpT/pT.
    153     # IDEAdet
    154     set ResolutionFormula {
    155         (abs(eta) <= 3.0)                   * sqrt(0.0001145^2 + 0.0002024^2*pt + (pt*2.093e-005)^2)
    156     }
    157 }
    158 
    159 ###################################
    160 # Momentum resolution for electrons
    161 ###################################
    162 
    163 module MomentumSmearing ElectronMomentumSmearing {
    164     set InputArray ElectronTrackingEfficiency/electrons
    165     set OutputArray electrons
    166 
    167     # Resolution given in dpT/pT.
    168     # IDEAdet
    169     set ResolutionFormula {
    170         (abs(eta) <= 3.0)                   * sqrt(0.0001145^2 + 0.0002024^2*pt + (pt*2.093e-005)^2)
    171    } 
    172 }
    173 
    174 ###############################
    175 # Momentum resolution for muons
    176 ###############################
    177 
    178 module MomentumSmearing MuonMomentumSmearing {
    179     set InputArray MuonTrackingEfficiency/muons
    180     set OutputArray muons
    181 
    182     # Resolution given in dpT/pT.
    183     # IDEAdet
    184     set ResolutionFormula {
    185         (abs(eta) <= 3.0)                   * sqrt(0.0001145^2 + 0.0002024^2*pt + (pt*2.093e-005)^2)
    186     }
    187 }
    188 
    189145##############
    190146# Track merger
    191147##############
    192148
     149module Merger TrackMergerPre {
     150# add InputArray InputArray
     151  add InputArray ChargedHadronTrackingEfficiency/chargedHadrons
     152  add InputArray ElectronTrackingEfficiency/electrons
     153  add InputArray MuonTrackingEfficiency/muons
     154  set OutputArray tracks
     155}
     156
     157
     158########################################
     159# Smearing for charged tracks
     160########################################
     161
     162module TrackCovariance TrackSmearing {
     163    set InputArray TrackMergerPre/tracks
     164    set OutputArray tracks
     165
     166
     167    set InputArray TrackMergerPre/tracks
     168    set OutputArray tracks
     169
     170    set Bz 2.0
     171
     172    ## minimum number of hits to accept a track
     173    set NMinHits 6
     174
     175    ## uses https://raw.githubusercontent.com/selvaggi/FastTrackCovariance/master/GeoIDEA_BASE.txt
     176    set DetectorGeometry {
     177
     178
     179      # Layer type 1 = R (barrel) or 2 = z (forward/backward)
     180      # Layer label
     181      # Minimum dimension z for barrel or R for forward
     182      # Maximum dimension z for barrel or R for forward
     183      # R/z location of layer
     184      # Thickness (meters)
     185      # Radiation length (meters)
     186      # Number of measurements in layers (1D or 2D)
     187      # Stereo angle (rad) - 0(pi/2) = axial(z) layer - Upper side
     188      # Stereo angle (rad) - 0(pi/2) = axial(z) layer - Lower side
     189      # Resolution Upper side (meters) - 0 = no measurement
     190      # Resolution Lower side (meters) - 0 = no measurement
     191      # measurement flag = T, scattering only = F
     192
     193      # barrel  name       zmin   zmax   r        w (m)      X0        n_meas  th_up (rad) th_down (rad)    reso_up (m)   reso_down (m)  flag
     194
     195      # barrel  name       zmin   zmax   r        w (m)      X0        n_meas  th_up (rad) th_down (rad)    reso_up (m)   reso_down (m)  flag
     196
     197      1        PIPE       -100    100    0.015    0.001655  0.2805     0        0          0                0             0              0
     198      1        VTXLOW     -0.12   0.12   0.017    0.00028   0.0937     2        0          1.5708           3e-006        3e-006         1
     199      1        VTXLOW     -0.16   0.16   0.023    0.00028   0.0937     2        0          1.5708           3e-006        3e-006         1
     200      1        VTXLOW     -0.16   0.16   0.031    0.00028   0.0937     2        0          1.5708           3e-006        3e-006         1
     201      1        VTXHIGH    -1      1      0.32     0.00047   0.0937     2        0          1.5708           7e-006        7e-006         1
     202      1        VTXHIGH    -1.05   1.05   0.34     0.00047   0.0937     2        0          1.5708           7e-006        7e-006         1
     203
     204      # endcap  name       rmin   rmax   z        w (m)      X0        n_meas   th_up (rad)  th_down (rad)   reso_up (m)   reso_down (m) flag
     205
     206      2        VTXDSK      0.141  0.3   -0.92     0.00028   0.0937     2        0          1.5708           7e-006        7e-006         1
     207      2        VTXDSK      0.138  0.3   -0.9      0.00028   0.0937     2        0          1.5708           7e-006        7e-006         1
     208      2        VTXDSK      0.065  0.3   -0.42     0.00028   0.0937     2        0          1.5708           7e-006        7e-006         1
     209      2        VTXDSK      0.062  0.3   -0.4      0.00028   0.0937     2        0          1.5708           7e-006        7e-006         1
     210      2        VTXDSK      0.062  0.3    0.4      0.00028   0.0937     2        0          1.5708           7e-006        7e-006         1
     211      2        VTXDSK      0.065  0.3    0.42     0.00028   0.0937     2        0          1.5708           7e-006        7e-006         1
     212      2        VTXDSK      0.138  0.3    0.9      0.00028   0.0937     2        0          1.5708           7e-006        7e-006         1
     213      2        VTXDSK      0.141  0.3    0.92     0.00028   0.0937     2        0          1.5708           7e-006        7e-006         1
     214
     215      1 DCHCANI -2.125 2.125 0.345 0.0002 0.237223 0 0 0 0 0 0
     216      1 DCH -2 2 0.36 0.0147748 1400 1 0.0203738 0 0.0001 0 1
     217      1 DCH -2 2 0.374775 0.0147748 1400 1 -0.0212097 0 0.0001 0 1
     218      1 DCH -2 2 0.38955 0.0147748 1400 1 0.0220456 0 0.0001 0 1
     219      1 DCH -2 2 0.404324 0.0147748 1400 1 -0.0228814 0 0.0001 0 1
     220      1 DCH -2 2 0.419099 0.0147748 1400 1 0.0237172 0 0.0001 0 1
     221      1 DCH -2 2 0.433874 0.0147748 1400 1 -0.024553 0 0.0001 0 1
     222      1 DCH -2 2 0.448649 0.0147748 1400 1 0.0253888 0 0.0001 0 1
     223      1 DCH -2 2 0.463423 0.0147748 1400 1 -0.0262245 0 0.0001 0 1
     224      1 DCH -2 2 0.478198 0.0147748 1400 1 0.0270602 0 0.0001 0 1
     225      1 DCH -2 2 0.492973 0.0147748 1400 1 -0.0278958 0 0.0001 0 1
     226      1 DCH -2 2 0.507748 0.0147748 1400 1 0.0287314 0 0.0001 0 1
     227      1 DCH -2 2 0.522523 0.0147748 1400 1 -0.029567 0 0.0001 0 1
     228      1 DCH -2 2 0.537297 0.0147748 1400 1 0.0304025 0 0.0001 0 1
     229      1 DCH -2 2 0.552072 0.0147748 1400 1 -0.031238 0 0.0001 0 1
     230      1 DCH -2 2 0.566847 0.0147748 1400 1 0.0320734 0 0.0001 0 1
     231      1 DCH -2 2 0.581622 0.0147748 1400 1 -0.0329088 0 0.0001 0 1
     232      1 DCH -2 2 0.596396 0.0147748 1400 1 0.0337442 0 0.0001 0 1
     233      1 DCH -2 2 0.611171 0.0147748 1400 1 -0.0345795 0 0.0001 0 1
     234      1 DCH -2 2 0.625946 0.0147748 1400 1 0.0354147 0 0.0001 0 1
     235      1 DCH -2 2 0.640721 0.0147748 1400 1 -0.0362499 0 0.0001 0 1
     236      1 DCH -2 2 0.655495 0.0147748 1400 1 0.0370851 0 0.0001 0 1
     237      1 DCH -2 2 0.67027 0.0147748 1400 1 -0.0379202 0 0.0001 0 1
     238      1 DCH -2 2 0.685045 0.0147748 1400 1 0.0387552 0 0.0001 0 1
     239      1 DCH -2 2 0.69982 0.0147748 1400 1 -0.0395902 0 0.0001 0 1
     240      1 DCH -2 2 0.714595 0.0147748 1400 1 0.0404252 0 0.0001 0 1
     241      1 DCH -2 2 0.729369 0.0147748 1400 1 -0.04126 0 0.0001 0 1
     242      1 DCH -2 2 0.744144 0.0147748 1400 1 0.0420949 0 0.0001 0 1
     243      1 DCH -2 2 0.758919 0.0147748 1400 1 -0.0429296 0 0.0001 0 1
     244      1 DCH -2 2 0.773694 0.0147748 1400 1 0.0437643 0 0.0001 0 1
     245      1 DCH -2 2 0.788468 0.0147748 1400 1 -0.044599 0 0.0001 0 1
     246      1 DCH -2 2 0.803243 0.0147748 1400 1 0.0454336 0 0.0001 0 1
     247      1 DCH -2 2 0.818018 0.0147748 1400 1 -0.0462681 0 0.0001 0 1
     248      1 DCH -2 2 0.832793 0.0147748 1400 1 0.0471025 0 0.0001 0 1
     249      1 DCH -2 2 0.847568 0.0147748 1400 1 -0.0479369 0 0.0001 0 1
     250      1 DCH -2 2 0.862342 0.0147748 1400 1 0.0487713 0 0.0001 0 1
     251      1 DCH -2 2 0.877117 0.0147748 1400 1 -0.0496055 0 0.0001 0 1
     252      1 DCH -2 2 0.891892 0.0147748 1400 1 0.0504397 0 0.0001 0 1
     253      1 DCH -2 2 0.906667 0.0147748 1400 1 -0.0512738 0 0.0001 0 1
     254      1 DCH -2 2 0.921441 0.0147748 1400 1 0.0521079 0 0.0001 0 1
     255      1 DCH -2 2 0.936216 0.0147748 1400 1 -0.0529418 0 0.0001 0 1
     256      1 DCH -2 2 0.950991 0.0147748 1400 1 0.0537757 0 0.0001 0 1
     257      1 DCH -2 2 0.965766 0.0147748 1400 1 -0.0546095 0 0.0001 0 1
     258      1 DCH -2 2 0.980541 0.0147748 1400 1 0.0554433 0 0.0001 0 1
     259      1 DCH -2 2 0.995315 0.0147748 1400 1 -0.056277 0 0.0001 0 1
     260      1 DCH -2 2 1.01009 0.0147748 1400 1 0.0571106 0 0.0001 0 1
     261      1 DCH -2 2 1.02486 0.0147748 1400 1 -0.0579441 0 0.0001 0 1
     262      1 DCH -2 2 1.03964 0.0147748 1400 1 0.0587775 0 0.0001 0 1
     263      1 DCH -2 2 1.05441 0.0147748 1400 1 -0.0596108 0 0.0001 0 1
     264      1 DCH -2 2 1.06919 0.0147748 1400 1 0.0604441 0 0.0001 0 1
     265      1 DCH -2 2 1.08396 0.0147748 1400 1 -0.0612773 0 0.0001 0 1
     266      1 DCH -2 2 1.09874 0.0147748 1400 1 0.0621104 0 0.0001 0 1
     267      1 DCH -2 2 1.11351 0.0147748 1400 1 -0.0629434 0 0.0001 0 1
     268      1 DCH -2 2 1.12829 0.0147748 1400 1 0.0637763 0 0.0001 0 1
     269      1 DCH -2 2 1.14306 0.0147748 1400 1 -0.0646092 0 0.0001 0 1
     270      1 DCH -2 2 1.15784 0.0147748 1400 1 0.0654419 0 0.0001 0 1
     271      1 DCH -2 2 1.17261 0.0147748 1400 1 -0.0662746 0 0.0001 0 1
     272      1 DCH -2 2 1.18739 0.0147748 1400 1 0.0671071 0 0.0001 0 1
     273      1 DCH -2 2 1.20216 0.0147748 1400 1 -0.0679396 0 0.0001 0 1
     274      1 DCH -2 2 1.21694 0.0147748 1400 1 0.068772 0 0.0001 0 1
     275      1 DCH -2 2 1.23171 0.0147748 1400 1 -0.0696042 0 0.0001 0 1
     276      1 DCH -2 2 1.24649 0.0147748 1400 1 0.0704364 0 0.0001 0 1
     277      1 DCH -2 2 1.26126 0.0147748 1400 1 -0.0712685 0 0.0001 0 1
     278      1 DCH -2 2 1.27604 0.0147748 1400 1 0.0721005 0 0.0001 0 1
     279      1 DCH -2 2 1.29081 0.0147748 1400 1 -0.0729324 0 0.0001 0 1
     280      1 DCH -2 2 1.30559 0.0147748 1400 1 0.0737642 0 0.0001 0 1
     281      1 DCH -2 2 1.32036 0.0147748 1400 1 -0.0745958 0 0.0001 0 1
     282      1 DCH -2 2 1.33514 0.0147748 1400 1 0.0754274 0 0.0001 0 1
     283      1 DCH -2 2 1.34991 0.0147748 1400 1 -0.0762589 0 0.0001 0 1
     284      1 DCH -2 2 1.36468 0.0147748 1400 1 0.0770903 0 0.0001 0 1
     285      1 DCH -2 2 1.37946 0.0147748 1400 1 -0.0779215 0 0.0001 0 1
     286      1 DCH -2 2 1.39423 0.0147748 1400 1 0.0787527 0 0.0001 0 1
     287      1 DCH -2 2 1.40901 0.0147748 1400 1 -0.0795837 0 0.0001 0 1
     288      1 DCH -2 2 1.42378 0.0147748 1400 1 0.0804147 0 0.0001 0 1
     289      1 DCH -2 2 1.43856 0.0147748 1400 1 -0.0812455 0 0.0001 0 1
     290      1 DCH -2 2 1.45333 0.0147748 1400 1 0.0820762 0 0.0001 0 1
     291      1 DCH -2 2 1.46811 0.0147748 1400 1 -0.0829068 0 0.0001 0 1
     292      1 DCH -2 2 1.48288 0.0147748 1400 1 0.0837373 0 0.0001 0 1
     293      1 DCH -2 2 1.49766 0.0147748 1400 1 -0.0845677 0 0.0001 0 1
     294      1 DCH -2 2 1.51243 0.0147748 1400 1 0.0853979 0 0.0001 0 1
     295      1 DCH -2 2 1.52721 0.0147748 1400 1 -0.086228 0 0.0001 0 1
     296      1 DCH -2 2 1.54198 0.0147748 1400 1 0.087058 0 0.0001 0 1
     297      1 DCH -2 2 1.55676 0.0147748 1400 1 -0.0878879 0 0.0001 0 1
     298      1 DCH -2 2 1.57153 0.0147748 1400 1 0.0887177 0 0.0001 0 1
     299      1 DCH -2 2 1.58631 0.0147748 1400 1 -0.0895474 0 0.0001 0 1
     300      1 DCH -2 2 1.60108 0.0147748 1400 1 0.0903769 0 0.0001 0 1
     301      1 DCH -2 2 1.61586 0.0147748 1400 1 -0.0912063 0 0.0001 0 1
     302      1 DCH -2 2 1.63063 0.0147748 1400 1 0.0920356 0 0.0001 0 1
     303      1 DCH -2 2 1.64541 0.0147748 1400 1 -0.0928647 0 0.0001 0 1
     304      1 DCH -2 2 1.66018 0.0147748 1400 1 0.0936937 0 0.0001 0 1
     305      1 DCH -2 2 1.67495 0.0147748 1400 1 -0.0945226 0 0.0001 0 1
     306      1 DCH -2 2 1.68973 0.0147748 1400 1 0.0953514 0 0.0001 0 1
     307      1 DCH -2 2 1.7045 0.0147748 1400 1 -0.09618 0 0.0001 0 1
     308      1 DCH -2 2 1.71928 0.0147748 1400 1 0.0970085 0 0.0001 0 1
     309      1 DCH -2 2 1.73405 0.0147748 1400 1 -0.0978369 0 0.0001 0 1
     310      1 DCH -2 2 1.74883 0.0147748 1400 1 0.0986651 0 0.0001 0 1
     311      1 DCH -2 2 1.7636 0.0147748 1400 1 -0.0994932 0 0.0001 0 1
     312      1 DCH -2 2 1.77838 0.0147748 1400 1 0.100321 0 0.0001 0 1
     313      1 DCH -2 2 1.79315 0.0147748 1400 1 -0.101149 0 0.0001 0 1
     314      1 DCH -2 2 1.80793 0.0147748 1400 1 0.101977 0 0.0001 0 1
     315      1 DCH -2 2 1.8227 0.0147748 1400 1 -0.102804 0 0.0001 0 1
     316      1 DCH -2 2 1.83748 0.0147748 1400 1 0.103632 0 0.0001 0 1
     317      1 DCH -2 2 1.85225 0.0147748 1400 1 -0.104459 0 0.0001 0 1
     318      1 DCH -2 2 1.86703 0.0147748 1400 1 0.105286 0 0.0001 0 1
     319      1 DCH -2 2 1.8818 0.0147748 1400 1 -0.106113 0 0.0001 0 1
     320      1 DCH -2 2 1.89658 0.0147748 1400 1 0.10694 0 0.0001 0 1
     321      1 DCH -2 2 1.91135 0.0147748 1400 1 -0.107766 0 0.0001 0 1
     322      1 DCH -2 2 1.92613 0.0147748 1400 1 0.108593 0 0.0001 0 1
     323      1 DCH -2 2 1.9409 0.0147748 1400 1 -0.109419 0 0.0001 0 1
     324      1 DCH -2 2 1.95568 0.0147748 1400 1 0.110246 0 0.0001 0 1
     325      1 DCH -2 2 1.97045 0.0147748 1400 1 -0.111072 0 0.0001 0 1
     326      1 DCH -2 2 1.98523 0.0147748 1400 1 0.111898 0 0.0001 0 1
     327      1 DCH -2 2 2 0.0147748 1400 1 -0.112723 0 0.0001 0 1
     328      1 DCHCANO -2.125 2.125 2.02 0.02 1.667 0 0 0 0 0 0
     329      1 BSILWRP -2.35 2.35 2.04 0.00047 0.0937 2 0 1.5708 7e-006 9e-005 1
     330      1 BSILWRP -2.35 2.35 2.06 0.00047 0.0937 2 0 1.5708 7e-006 9e-005 1
     331      1 MAG -2.5 2.5 2.25 0.05 0.0658 0 0 0 0 0 0
     332      1 BPRESH -2.55 2.55 2.45 0.02 1 2 0 1.5708 7e-005 0.01 1
     333      2 DCHWALL 0.345 2.02 2.125 0.25 5.55 0 0 0 0 0 0
     334      2 DCHWALL 0.345 2.02 -2.125 0.25 5.55 0 0 0 0 0 0
     335      2 FSILWRP 0.354 2.02 -2.32 0.00047 0.0937 2 0 1.5708 7e-006 9e-005 1
     336      2 FSILWRP 0.35 2.02 -2.3 0.00047 0.0937 2 0 1.5708 7e-006 9e-005 1
     337      2 FSILWRP 0.35 2.02 2.3 0.00047 0.0937 2 0 1.5708 7e-006 9e-005 1
     338      2 FSILWRP 0.354 2.02 2.32 0.00047 0.0937 2 0 1.5708 7e-006 9e-005 1
     339      2 FRAD 0.38 2.09 2.49 0.0043 0.005612 0 0 0 0 0 0
     340      2 FRAD 0.38 2.09 -2.49 0.0043 0.005612 0 0 0 0 0 0
     341      2 FPRESH 0.39 2.43 -2.55 0.02 1 2 0 1.5708 7e-005 0.01 1
     342      2 FPRESH 0.39 2.43 2.55 0.02 1 2 0 1.5708 7e-005 0.01 1
     343    }
     344
     345    set Bz $B
     346}
     347
     348##############
     349# Track merger
     350##############
     351
    193352module Merger TrackMerger {
    194353# add InputArray InputArray
    195   add InputArray ChargedHadronMomentumSmearing/chargedHadrons
    196   add InputArray ElectronMomentumSmearing/electrons
    197   add InputArray MuonMomentumSmearing/muons
     354  add InputArray TrackSmearing/tracks
    198355  set OutputArray tracks
    199356}
    200357
    201358
    202 #############                                                                                                                         
    203 # Calorimeter                                                                                                                                           
    204 #############                                                                                                                                           
     359#############
     360# Calorimeter
     361#############
    205362module DualReadoutCalorimeter Calorimeter {
    206363  set ParticleInputArray ParticlePropagator/stableParticles
     
    224381    set pi [expr {acos(-1)}]
    225382
    226     # Lists of the edges of each tower in eta and phi;                                                                                           
    227     # each list starts with the lower edge of the first tower;                                                                                                   
    228     # the list ends with the higher edged of the last tower.                                                                                       
    229     # Barrel:  deta=0.02 towers up to |eta| <= 0.88 ( up to 45°)                                                                                       
    230     # Endcaps: deta=0.02 towers up to |eta| <= 3.0 (8.6° = 100 mrad)                                                                                           
    231     # Cell size: about 6 cm x 6 cm                                                 
    232 
    233     #barrel:                                                                                       
     383    # Lists of the edges of each tower in eta and phi;
     384    # each list starts with the lower edge of the first tower;
     385    # the list ends with the higher edged of the last tower.
     386    # Barrel:  deta=0.02 towers up to |eta| <= 0.88 ( up to 45°)
     387    # Endcaps: deta=0.02 towers up to |eta| <= 3.0 (8.6° = 100 mrad)
     388    # Cell size: about 6 cm x 6 cm
     389
     390    #barrel:
    234391    set PhiBins {}
    235392    for {set i -120} {$i <= 120} {incr i} {
    236393        add PhiBins [expr {$i * $pi/120}]
    237394    }
    238     #deta=0.02 units for |eta| <= 0.88                                                             
     395    #deta=0.02 units for |eta| <= 0.88
    239396    for {set i -44} {$i < 45} {incr i} {
    240397        set eta [expr {$i * 0.02}]
     
    242399    }
    243400
    244     #endcaps:                                                                                       
     401    #endcaps:
    245402    set PhiBins {}
    246403    for {set i -120} {$i <= 120} {incr i} {
    247404        add PhiBins [expr {$i* $pi/120}]
    248405    }
    249     #deta=0.02 units for 0.88 < |eta| <= 3.0                                                       
    250     #first, from -3.0 to -0.88                                                                     
     406    #deta=0.02 units for 0.88 < |eta| <= 3.0
     407    #first, from -3.0 to -0.88
    251408    for {set i 1} {$i <=106} {incr i} {
    252409        set eta [expr {-3.00 + $i * 0.02}]
    253410        add EtaPhiBins $eta $PhiBins
    254411    }
    255     #same for 0.88 to 3.0                                                                           
     412    #same for 0.88 to 3.0
    256413    for  {set i 1} {$i <=106} {incr i} {
    257414        set eta [expr {0.88 + $i * 0.02}]
     
    259416    }
    260417
    261     # default energy fractions {abs(PDG code)} {Fecal Fhcal}                                                                                 
     418    # default energy fractions {abs(PDG code)} {Fecal Fhcal}
    262419    add EnergyFraction {0} {0.0 1.0}
    263     # energy fractions for e, gamma and pi0                                                                                                           
     420    # energy fractions for e, gamma and pi0
    264421    add EnergyFraction {11} {1.0 0.0}
    265422    add EnergyFraction {22} {1.0 0.0}
    266423    add EnergyFraction {111} {1.0 0.0}
    267     # energy fractions for muon, neutrinos and neutralinos                                                                             
     424    # energy fractions for muon, neutrinos and neutralinos
    268425    add EnergyFraction {12} {0.0 0.0}
    269426    add EnergyFraction {13} {0.0 0.0}
     
    275432    add EnergyFraction {1000035} {0.0 0.0}
    276433    add EnergyFraction {1000045} {0.0 0.0}
    277     # energy fractions for K0short and Lambda                                                                                                           
     434    # energy fractions for K0short and Lambda
    278435    add EnergyFraction {310} {0.3 0.7}
    279436    add EnergyFraction {3122} {0.3 0.7}
    280437
    281438
    282     # set ECalResolutionFormula {resolution formula as a function of eta and energy}                               
     439    # set ECalResolutionFormula {resolution formula as a function of eta and energy}
    283440    set ECalResolutionFormula {
    284441    (abs(eta) <= 0.88 )                     * sqrt(energy^2*0.01^2 + energy*0.11^2)+
     
    286443    }
    287444
    288     # set HCalResolutionFormula {resolution formula as a function of eta and energy}                                               
     445    # set HCalResolutionFormula {resolution formula as a function of eta and energy}
    289446    set HCalResolutionFormula {
    290447    (abs(eta) <= 0.88 )                     * sqrt(energy^2*0.01^2 + energy*0.30^2)+
     
    352509}
    353510
     511#################
     512# Muon filter
     513#################
     514
     515module PdgCodeFilter MuonFilter {
     516  set InputArray Calorimeter/eflowTracks
     517  set OutputArray muons
     518  set Invert true
     519  add PdgCode {13}
     520  add PdgCode {-13}
     521}
     522
     523
    354524#####################
    355525# Electron efficiency
     
    363533
    364534  # efficiency formula for electrons
    365   set EfficiencyFormula {         
     535  set EfficiencyFormula {
    366536        (energy < 2.0)                                         * (0.000)+
    367537        (energy >= 2.0) * (abs(eta) <= 0.88)                   * (0.99) +
     
    393563
    394564module Efficiency MuonEfficiency {
    395   set InputArray MuonMomentumSmearing/muons
     565  set InputArray MuonFilter/muons
    396566  set OutputArray muons
    397567
     
    399569
    400570  # efficiency formula for muons
    401   set EfficiencyFormula {                                   
     571  set EfficiencyFormula {
    402572        (energy < 2.0)                                         * (0.000)+
    403573        (energy >= 2.0) * (abs(eta) <= 0.88)                   * (0.99) +
     
    547717
    548718  # add EfficiencyFormula {abs(PDG code)} {efficiency formula as a function of eta and pt}
    549  
     719
    550720  # default efficiency formula (misidentification rate)
    551721  add EfficiencyFormula {0} {0.01}
     
    603773module TreeWriter TreeWriter {
    604774    # add Branch InputArray BranchName BranchClass
    605    
     775
    606776    add Branch Delphes/allParticles Particle GenParticle
    607777
    608778    add Branch TrackMerger/tracks Track Track
    609779    add Branch Calorimeter/towers Tower Tower
    610    
     780
    611781    add Branch Calorimeter/eflowTracks EFlowTrack Track
    612782    add Branch Calorimeter/eflowPhotons EFlowPhoton Tower
     
    616786    add Branch PhotonEfficiency/photons PhotonEff Photon
    617787    add Branch PhotonIsolation/photons PhotonIso Photon
    618    
     788
    619789    add Branch GenJetFinder/jets GenJet Jet
    620790    add Branch GenMissingET/momentum GenMissingET MissingET
    621    
     791
    622792    add Branch UniqueObjectFinder/jets Jet Jet
    623793    add Branch UniqueObjectFinder/electrons Electron Electron
    624794    add Branch UniqueObjectFinder/photons Photon Photon
    625795    add Branch UniqueObjectFinder/muons Muon Muon
    626    
    627     add Branch JetEnergyScale/jets AntiKtJet Jet 
    628    
     796
     797    add Branch JetEnergyScale/jets AntiKtJet Jet
     798
    629799    add Branch MissingET/momentum MissingET MissingET
    630800    add Branch ScalarHT/energy ScalarHT ScalarHT
    631 }
    632 
     801
     802    # add Info InfoName InfoValue
     803    add Info Bz $B
     804}
  • classes/DelphesClasses.cc

    ra3261d7 r13331dc  
    102102{
    103103  TLorentzVector vec;
    104   vec.SetPtEtaPhiM(PT, Eta, Phi, 0.0);
    105   return vec;
    106 }
     104  vec.SetPtEtaPhiM(PT, Eta, Phi, Mass);
     105  return vec;
     106}
     107
     108//------------------------------------------------------------------------------
     109
     110TMatrixDSym Track::CovarianceMatrix() const
     111{
     112  TMatrixDSym Cv;
     113  Cv.ResizeTo(5, 5);
     114
     115  // convert diagonal term to original units
     116  Cv(0, 0)=TMath::Power(ErrorD0, 2.);
     117  Cv(1, 1)=TMath::Power(ErrorPhi, 2.);
     118  Cv(2, 2)=TMath::Power(ErrorC, 2.);
     119  Cv(3, 3)=TMath::Power(ErrorDZ, 2.);
     120  Cv(4, 4)=TMath::Power(ErrorCtgTheta, 2.);
     121
     122  // off diagonal terms
     123  Cv(0, 1)=ErrorD0Phi;
     124  Cv(0, 2)=ErrorD0C;
     125  Cv(0, 3)=ErrorD0DZ;
     126  Cv(0, 4)=ErrorD0CtgTheta;
     127  Cv(1, 2)=ErrorPhiC;
     128  Cv(1, 3)=ErrorPhiDZ;
     129  Cv(1, 4)=ErrorPhiCtgTheta;
     130  Cv(2, 3)=ErrorCDZ;
     131  Cv(2, 4)=ErrorCCtgTheta;
     132  Cv(3, 4)=ErrorDZCtgTheta;
     133
     134  Cv(1, 0)=Cv(0, 1);
     135  Cv(2, 0)=Cv(0, 2);
     136  Cv(3, 0)=Cv(0, 3);
     137  Cv(4, 0)=Cv(0, 4);
     138  Cv(2, 1)=Cv(1, 2);
     139  Cv(3, 1)=Cv(1, 3);
     140  Cv(4, 1)=Cv(1, 4);
     141  Cv(3, 2)=Cv(2, 3);
     142  Cv(4, 2)=Cv(2, 4);
     143  Cv(4, 3)=Cv(3, 4);
     144
     145  return Cv;
     146}
     147
    107148
    108149//------------------------------------------------------------------------------
     
    120161{
    121162  TLorentzVector vec;
    122   vec.SetPtEtaPhiM(PT, Eta, Phi, 0.0);
    123   return vec;
     163  vec.SetPtEtaPhiM(PT, Eta, Phi, Mass);
     164  return vec;
     165}
     166
     167//------------------------------------------------------------------------------
     168
     169TMatrixDSym ParticleFlowCandidate::CovarianceMatrix() const
     170{
     171  TMatrixDSym Cv;
     172  Cv.ResizeTo(5, 5);
     173
     174  // convert diagonal term to original units
     175  Cv(0, 0)=TMath::Power(ErrorD0, 2.);
     176  Cv(1, 1)=TMath::Power(ErrorPhi, 2.);
     177  Cv(2, 2)=TMath::Power(ErrorC, 2.);
     178  Cv(3, 3)=TMath::Power(ErrorDZ, 2.);
     179  Cv(4, 4)=TMath::Power(ErrorCtgTheta, 2.);
     180
     181  // off diagonal terms
     182  Cv(0, 1)=ErrorD0Phi;
     183  Cv(0, 2)=ErrorD0C;
     184  Cv(0, 3)=ErrorD0DZ;
     185  Cv(0, 4)=ErrorD0CtgTheta;
     186  Cv(1, 2)=ErrorPhiC;
     187  Cv(1, 3)=ErrorPhiDZ;
     188  Cv(1, 4)=ErrorPhiCtgTheta;
     189  Cv(2, 3)=ErrorCDZ;
     190  Cv(2, 4)=ErrorCCtgTheta;
     191  Cv(3, 4)=ErrorDZCtgTheta;
     192
     193  Cv(1, 0)=Cv(0, 1);
     194  Cv(2, 0)=Cv(0, 2);
     195  Cv(3, 0)=Cv(0, 3);
     196  Cv(4, 0)=Cv(0, 4);
     197  Cv(2, 1)=Cv(1, 2);
     198  Cv(3, 1)=Cv(1, 3);
     199  Cv(4, 1)=Cv(1, 4);
     200  Cv(3, 2)=Cv(2, 3);
     201  Cv(4, 2)=Cv(2, 4);
     202  Cv(4, 3)=Cv(3, 4);
     203
     204  return Cv;
    124205}
    125206
     
    153234  NNeutrals(0),
    154235  NeutralEnergyFraction(0),  // charged energy fraction
    155   ChargedEnergyFraction(0),  // neutral energy fraction 
     236  ChargedEnergyFraction(0),  // neutral energy fraction
    156237  Beta(0),
    157238  BetaStar(0),
  • classes/DelphesClasses.h

    ra3261d7 r13331dc  
    151151  Float_t Eta; // particle pseudorapidity
    152152  Float_t Phi; // particle azimuthal angle
    153 
    154153  Float_t Rapidity; // particle rapidity
    155   Float_t CtgTheta; // particle cotangent of theta
    156 
    157   Float_t D0; // particle transverse impact parameter
    158   Float_t DZ; // particle longitudinal impact parameter
    159154
    160155  Float_t T; // particle vertex position (t component) | hepevt.vhep[number][3]
     
    390385
    391386  Float_t NeutralEnergyFraction;  // charged energy fraction
    392   Float_t ChargedEnergyFraction;  // neutral energy fraction 
     387  Float_t ChargedEnergyFraction;  // neutral energy fraction
    393388
    394389  Float_t Beta; // (sum pt of charged pile-up constituents)/(sum pt of charged constituents)
     
    443438  Float_t Phi; // track azimuthal angle
    444439  Float_t CtgTheta; // track cotangent of theta
     440  Float_t C; // track curvature inverse
     441  Float_t Mass; // particle mass
    445442
    446443  Float_t EtaOuter; // track pseudorapidity at the tracker edge
     
    473470  Float_t ErrorD0; // track transverse impact parameter error
    474471  Float_t ErrorDZ; // track longitudinal impact parameter error
     472  Float_t ErrorC; // track curvature error
     473
     474  // track covariance off-diagonal terms
     475  Float_t ErrorD0Phi;
     476  Float_t ErrorD0C;
     477  Float_t ErrorD0DZ;
     478  Float_t ErrorD0CtgTheta;
     479  Float_t ErrorPhiC;
     480  Float_t ErrorPhiDZ;
     481  Float_t ErrorPhiCtgTheta ;
     482  Float_t ErrorCDZ;
     483  Float_t ErrorCCtgTheta;
     484  Float_t ErrorDZCtgTheta;
    475485
    476486  TRef Particle; // reference to generated particle
     
    482492
    483493  TLorentzVector P4() const;
     494  TMatrixDSym CovarianceMatrix() const;
    484495
    485496  ClassDef(Track, 3)
     
    531542  Float_t Phi; // track azimuthal angle
    532543  Float_t CtgTheta; // track cotangent of theta
     544  Float_t C; // track curvature inverse
     545  Float_t Mass; // particle mass
    533546
    534547  Float_t EtaOuter; // track pseudorapidity at the tracker edge
     
    561574  Float_t ErrorD0; // track transverse impact parameter error
    562575  Float_t ErrorDZ; // track longitudinal impact parameter error
     576  Float_t ErrorC; // track curvature error
     577
     578  // track covariance off-diagonal terms
     579  Float_t ErrorD0Phi;
     580  Float_t ErrorD0C;
     581  Float_t ErrorD0DZ;
     582  Float_t ErrorD0CtgTheta;
     583  Float_t ErrorPhiC;
     584  Float_t ErrorPhiDZ;
     585  Float_t ErrorPhiCtgTheta ;
     586  Float_t ErrorCDZ;
     587  Float_t ErrorCCtgTheta;
     588  Float_t ErrorDZCtgTheta;
    563589
    564590  Int_t VertexIndex; // reference to vertex
     
    568594
    569595  TLorentzVector P4() const;
     596  TMatrixDSym CovarianceMatrix() const;
    570597
    571598  Int_t NTimeHits; // number of hits contributing to time measurement
     
    578605  TRefArray Particles; // references to generated particles
    579606
    580   ClassDef(ParticleFlowCandidate, 1)
     607  ClassDef(ParticleFlowCandidate, 2)
    581608
    582609};
     
    685712  Float_t FracPt[5];
    686713  Float_t NeutralEnergyFraction;  // charged energy fraction
    687   Float_t ChargedEnergyFraction;  // neutral energy fraction 
     714  Float_t ChargedEnergyFraction;  // neutral energy fraction
    688715
    689716
     
    742769  // event characteristics variables
    743770  Double_t ParticleDensity; // particle multiplicity density in the proximity of the particle
    744  
     771
    745772  static CompBase *fgCompare; //!
    746773  const CompBase *GetCompare() const { return fgCompare; }
  • classes/DelphesModule.cc

    ra3261d7 r13331dc  
    130130//------------------------------------------------------------------------------
    131131
     132void DelphesModule::AddInfo(const char *name, Double_t value)
     133{
     134  stringstream message;
     135  if(!fTreeWriter)
     136  {
     137    fTreeWriter = static_cast<ExRootTreeWriter *>(GetObject("TreeWriter", ExRootTreeWriter::Class()));
     138    if(!fTreeWriter)
     139    {
     140      message << "can't access access tree writer";
     141      throw runtime_error(message.str());
     142    }
     143  }
     144  fTreeWriter->AddInfo(name, value);
     145}
     146
     147//------------------------------------------------------------------------------
     148
    132149ExRootResult *DelphesModule::GetPlots()
    133150{
  • classes/DelphesModule.h

    ra3261d7 r13331dc  
    5555
    5656  ExRootTreeBranch *NewBranch(const char *name, TClass *cl);
     57  void AddInfo(const char *name, Double_t value);
    5758
    5859  ExRootResult *GetPlots();
  • classes/DelphesTF2.cc

    ra3261d7 r13331dc  
    3232{
    3333
    34 #if ROOT_VERSION_CODE >= ROOT_VERSION(6, 3, 0)
     34#if ROOT_VERSION_CODE >= ROOT_VERSION(6, 22, 7)
     35  fFormula = std::unique_ptr<TFormula>(new TFormula());
     36#elif ROOT_VERSION_CODE >= ROOT_VERSION(6, 3, 0)
    3537  fFormula = new TFormula();
    3638#endif
  • doc/genMakefile.tcl

    ra3261d7 r13331dc  
    282282DISPLAYLIB = libDelphesDisplay.lib
    283283
    284 VERSION = $(shell cat VERSION)
     284VERSION = x.y.z
    285285DISTDIR = Delphes-$(VERSION)
    286286DISTTAR = $(DISTDIR).tar.gz
     
    434434        @echo ">> Building $(DISTTAR)"
    435435        @mkdir -p $(DISTDIR)
    436         @cp -a AUTHORS CHANGELOG CMakeLists.txt COPYING DelphesEnv.sh LICENSE NOTICE README README_4LHCb VERSION Makefile MinBias.pileup configure cards classes converters display doc examples external modules python readers validation $(DISTDIR)
     436        @cp -a AUTHORS CHANGELOG CMakeLists.txt COPYING DelphesEnv.sh LICENSE NOTICE README README_4LHCb Makefile MinBias.pileup configure cards classes converters display doc examples external modules python readers validation $(DISTDIR)
    437437        @find $(DISTDIR) -depth -name .\* -exec rm -rf {} \;
    438438        @tar -czf $(DISTTAR) $(DISTDIR)
  • doc/update_fastjet.sh

    ra3261d7 r13331dc  
    1 version=3.3.2
     1version=3.3.4
    22
    33wget http://fastjet.fr/repo/fastjet-${version}.tar.gz
     
    1111./configure --enable-allcxxplugins --disable-auto-ptr
    1212cd -
    13 
    14 echo ${version} > fastjet/VERSION
    1513
    1614cd fastjet
  • external/ExRootAnalysis/ExRootTreeReader.cc

    ra3261d7 r13331dc  
    1212#include "TBranchElement.h"
    1313#include "TCanvas.h"
     14#include "TParameter.h"
    1415#include "TClonesArray.h"
    1516#include "TH2.h"
     
    119120//------------------------------------------------------------------------------
    120121
     122Double_t ExRootTreeReader::GetInfo(const char *name)
     123{
     124  TTree *tree = NULL;
     125  TParameter<Double_t> *param = NULL;
     126  Double_t result = -999.9;
     127  if(fChain) tree = fChain->GetTree();
     128  if(tree) param = static_cast<TParameter<Double_t> *>(tree->GetUserInfo()->FindObject(name));
     129  if(param) result = param->GetVal();
     130  return result;
     131}
     132
     133//------------------------------------------------------------------------------
     134
    121135Bool_t ExRootTreeReader::Notify()
    122136{
  • external/ExRootAnalysis/ExRootTreeReader.h

    ra3261d7 r13331dc  
    2929
    3030  TClonesArray *UseBranch(const char *branchName);
     31  Double_t GetInfo(const char *name);
    3132
    3233private:
  • external/ExRootAnalysis/ExRootTreeWriter.cc

    ra3261d7 r13331dc  
    1111#include "ExRootAnalysis/ExRootTreeBranch.h"
    1212
     13#include "TParameter.h"
    1314#include "TClonesArray.h"
    1415#include "TFile.h"
     
    4849  fBranches.insert(branch);
    4950  return branch;
     51}
     52
     53//------------------------------------------------------------------------------
     54
     55void ExRootTreeWriter::AddInfo(const char *name, Double_t value)
     56{
     57  if(!fTree) fTree = NewTree();
     58  fTree->GetUserInfo()->Add(new TParameter<Double_t>(name, value));
    5059}
    5160
  • external/ExRootAnalysis/ExRootTreeWriter.h

    ra3261d7 r13331dc  
    2929
    3030  ExRootTreeBranch *NewBranch(const char *name, TClass *cl);
     31  void AddInfo(const char *name, Double_t value);
    3132
    3233  void Clear();
  • external/TrackCovariance/ObsTrk.cc

    ra3261d7 r13331dc  
    1010//
    1111// Constructors
     12//
    1213// x(3) track origin, p(3) track momentum at origin, Q charge, B magnetic field in Tesla
    1314ObsTrk::ObsTrk(TVector3 x, TVector3 p, Double_t Q, Double_t B, SolGridCov *GC)
    1415{
     16        SetBfield(B);
    1517        fGC = GC;
    1618        fGenX = x;
     
    1921        fB = B;
    2022        fGenPar.ResizeTo(5);
     23        fGenParMm.ResizeTo(5);
    2124        fGenParACTS.ResizeTo(6);
    2225        fGenParILC.ResizeTo(5);
    2326        fObsPar.ResizeTo(5);
     27        fObsParMm.ResizeTo(5);
    2428        fObsParACTS.ResizeTo(6);
    2529        fObsParILC.ResizeTo(5);
    2630        fCov.ResizeTo(5, 5);
     31        fCovMm.ResizeTo(5, 5);
    2732        fCovACTS.ResizeTo(6, 6);
    2833        fCovILC.ResizeTo(5, 5);
    2934        fGenPar = XPtoPar(x,p,Q);
     35        fGenParMm = ParToMm(fGenPar);
    3036        fGenParACTS = ParToACTS(fGenPar);
    3137        fGenParILC = ParToILC(fGenPar);
    3238        /*
    33         std::cout << "ObsTrk::ObsTrk: fGenPar";
    34         for (Int_t i = 0; i < 5; i++)std::cout << fGenPar(i) << ", ";
    35         std::cout << std::endl;
     39        cout << "ObsTrk::ObsTrk: fGenPar";
     40        for (Int_t i = 0; i < 5; i++)cout << fGenPar(i) << ", ";
     41        cout << endl;
     42        */
     43        fObsPar = GenToObsPar(fGenPar, fGC);
     44        fObsParMm = ParToMm(fObsPar);
     45        fObsParACTS = ParToACTS(fObsPar);
     46        fObsParILC = ParToILC(fObsPar);
     47        fObsX = ParToX(fObsPar);
     48        fObsP = ParToP(fObsPar);
     49        fObsQ = ParToQ(fObsPar);
     50        fCovMm = CovToMm(fCov);
     51        fCovACTS = CovToACTS(fObsPar, fCov);
     52        fCovILC = CovToILC(fCov);
     53}
     54//
     55// x[3] track origin, p[3] track momentum at origin, Q charge, B magnetic field in Tesla
     56ObsTrk::ObsTrk(Double_t *x, Double_t *p, Double_t Q, Double_t B, SolGridCov* GC)
     57{
     58        SetBfield(B);
     59        fGC = GC;
     60        fGenX.SetXYZ(x[0],x[1],x[2]);
     61        fGenP.SetXYZ(p[0],p[1],p[2]);
     62        fGenQ = Q;
     63        fB = B;
     64        fGenPar.ResizeTo(5);
     65        fGenParMm.ResizeTo(5);
     66        fGenParACTS.ResizeTo(6);
     67        fGenParILC.ResizeTo(5);
     68        fObsPar.ResizeTo(5);
     69        fObsParMm.ResizeTo(5);
     70        fObsParACTS.ResizeTo(6);
     71        fObsParILC.ResizeTo(5);
     72        fCov.ResizeTo(5, 5);
     73        fCovMm.ResizeTo(5, 5);
     74        fCovACTS.ResizeTo(6, 6);
     75        fCovILC.ResizeTo(5, 5);
     76        fGenPar = XPtoPar(fGenX, fGenP, Q);
     77        fGenParACTS = ParToACTS(fGenPar);
     78        fGenParILC = ParToILC(fGenPar);
     79        /*
     80        cout << "ObsTrk::ObsTrk: fGenPar";
     81        for (Int_t i = 0; i < 5; i++)cout << fGenPar(i) << ", ";
     82        cout << endl;
    3683        */
    3784        fObsPar = GenToObsPar(fGenPar, fGC);
     
    4188        fObsP = ParToP(fObsPar);
    4289        fObsQ = ParToQ(fObsPar);
    43         fCovACTS = CovToACTS(fCov);
     90        fCovACTS = CovToACTS(fObsPar, fCov);
    4491        fCovILC = CovToILC(fCov);
    4592}
     
    5198        fGenP.Clear();
    5299        fGenPar.Clear();
     100        fGenParMm.Clear();
    53101        fGenParACTS.Clear();
     102        fGenParILC.Clear();
    54103        fObsX.Clear();
    55104        fObsP.Clear();
    56105        fObsPar.Clear();
     106        fObsParMm.Clear();
    57107        fObsParACTS.Clear();
     108        fObsParILC.Clear();
    58109        fCov.Clear();
     110        fCovMm.Clear();
    59111        fCovACTS.Clear();
    60 }
    61 TVectorD ObsTrk::XPtoPar(TVector3 x, TVector3 p, Double_t Q)
    62 {
    63         //
    64         TVectorD Par(5);
    65         // Transverse parameters
    66         Double_t a = -Q*fB*0.2998;                      // Units are Tesla, GeV and meters
    67         Double_t pt = p.Pt();
    68         Double_t C = a / (2 * pt);                      // Half curvature
    69         //std::cout << "ObsTrk::XPtoPar: fB = " << fB << ", a = " << a << ", pt = " << pt << ", C = " << C << std::endl;
    70         Double_t r2 = x.Perp2();
    71         Double_t cross = x(0)*p(1) - x(1)*p(0);
    72         Double_t T = TMath::Sqrt(pt*pt - 2 * a*cross + a*a*r2);
    73         Double_t phi0 = TMath::ATan2((p(1) - a*x(0)) / T, (p(0) + a*x(1)) / T); // Phi0
    74         Double_t D;                                                     // Impact parameter D
    75         if (pt < 10.0) D = (T - pt) / a;
    76         else D = (-2 * cross + a*r2) / (T + pt);
    77         //
    78         Par(0) = D;             // Store D
    79         Par(1) = phi0;  // Store phi0
    80         Par(2) = C;             // Store C
    81         //Longitudinal parameters
    82         Double_t B = C*TMath::Sqrt(TMath::Max(r2 - D*D,0.0) / (1 + 2 * C*D));
    83         Double_t st = TMath::ASin(B) / C;
    84         Double_t ct = p(2) / pt;
    85         Double_t z0 = x(2) - ct*st;
    86         //
    87         Par(3) = z0;            // Store z0
    88         Par(4) = ct;            // Store cot(theta)
    89         //
    90         return Par;
    91 }
    92 //
    93 TVector3 ObsTrk::ParToX(TVectorD Par)
    94 {
    95         Double_t D    = Par(0);
    96         Double_t phi0 = Par(1);
    97         Double_t z0   = Par(3);
    98         //
    99         TVector3 Xval;
    100         Xval(0) = -D*TMath::Sin(phi0);
    101         Xval(1) =  D*TMath::Cos(phi0); 
    102         Xval(2) =  z0;
    103         //
    104         return Xval;
    105 }
    106 //
    107 TVector3 ObsTrk::ParToP(TVectorD Par)
    108 {
    109         Double_t C    = Par(2);
    110         Double_t phi0 = Par(1);
    111         Double_t ct   = Par(4);
    112         //
    113         TVector3 Pval;
    114         Double_t pt = fB*0.2998 / TMath::Abs(2 * C);
    115         Pval(0) = pt*TMath::Cos(phi0);
    116         Pval(1) = pt*TMath::Sin(phi0);
    117         Pval(2) = pt*ct;
    118         //
    119         return Pval;
    120 }
    121 //
    122 
    123 Double_t ObsTrk::ParToQ(TVectorD Par)
    124 {
    125         return TMath::Sign(1.0, -Par(2));
     112        fCovILC.Clear();
    126113}
    127114//
     
    135122        // Check ranges
    136123        Double_t minPt = GC->GetMinPt ();
    137         if (pt < minPt) std::cout << "Warning ObsTrk::GenToObsPar: pt " << pt << " is below grid range of " << minPt << std::endl;
     124        //if (pt < minPt) cout << "Warning ObsTrk::GenToObsPar: pt " << pt << " is below grid range of " << minPt << endl;
    138125        Double_t maxPt = GC->GetMaxPt();
    139         if (pt > maxPt) std::cout << "Warning ObsTrk::GenToObsPar: pt " << pt << " is above grid range of " << maxPt << std::endl;
     126        //if (pt > maxPt) cout << "Warning ObsTrk::GenToObsPar: pt " << pt << " is above grid range of " << maxPt << endl;
    140127        Double_t minAn = GC->GetMinAng();
    141         if (angd < minAn) std::cout << "Warning ObsTrk::GenToObsPar: angle " << angd
    142                 << " is below grid range of " << minAn << std::endl;
     128        //if (angd < minAn) cout << "Warning ObsTrk::GenToObsPar: angle " << angd
     129        //      << " is below grid range of " << minAn << endl;
    143130        Double_t maxAn = GC->GetMaxAng();
    144         if (angd > maxAn) std::cout << "Warning ObsTrk::GenToObsPar: angle " << angd
    145                 << " is above grid range of " << maxAn << std::endl;
     131        //if (angd > maxAn) cout << "Warning ObsTrk::GenToObsPar: angle " << angd
     132        //      << " is above grid range of " << maxAn << endl;
    146133        //
    147134        TMatrixDSym Cov = GC->GetCov(pt, angd);
     
    170157        return oPar;
    171158}
    172 // Parameter conversion to ACTS format
    173 TVectorD ObsTrk::ParToACTS(TVectorD Par)
    174 {
    175         TVectorD pACTS(6);      // Return vector
    176         //
    177         Double_t b = -0.29988*fB / 2.;
    178         pACTS(0) = 1000*Par(0);         // D from m to mm
    179         pACTS(1) = 1000 * Par(3);       // z0 from m to mm
    180         pACTS(2) = Par(1);                      // Phi0 is unchanged
    181         pACTS(3) = TMath::ATan(1.0 / Par(4)) + TMath::PiOver2();                // Theta in [0, pi] range
    182         pACTS(4) = Par(2) / (b*TMath::Sqrt(1 + Par(4)*Par(4)));         // q/p in GeV
    183         pACTS(5) = 0.0;                         // Time: currently undefined
    184         //
    185         return pACTS;
    186 }
    187 // Covariance conversion to ACTS format
    188 TMatrixDSym ObsTrk::CovToACTS(TMatrixDSym Cov)
    189 {
    190         TMatrixDSym cACTS(6); cACTS.Zero();
    191         Double_t b = -0.29988*fB / 2.;
    192         //
    193         // Fill derivative matrix
    194         TMatrixD A(5, 5);       A.Zero();
    195         Double_t ct = fGenPar(4);       // cot(theta)
    196         Double_t C = fGenPar(2);                // half curvature
    197         A(0, 0) = 1000.;                // D-D  conversion to mm
    198         A(1, 2) = 1.0;          // phi0-phi0
    199         A(2, 4) = 1.0/(TMath::Sqrt(1.0 + ct*ct) * b);   // q/p-C
    200         A(3, 1) = 1000.;                // z0-z0 conversion to mm
    201         A(4, 3) = -1.0 / (1.0 + ct*ct); // theta - cot(theta)
    202         A(4, 4) = -C*ct / (b*pow(1.0 + ct*ct,3.0/2.0)); // q/p-cot(theta)
    203         //
    204         TMatrixDSym Cv = Cov;
    205         TMatrixD At(5, 5);
    206         At.Transpose(A);
    207         Cv.Similarity(At);
    208         TMatrixDSub(cACTS, 0, 4, 0, 4) = Cv;
    209         cACTS(5, 5) = 0.1;      // Currently undefined: set to arbitrary value to avoid crashes
    210         //
    211         return cACTS;
    212 }
    213 
    214 // Parameter conversion to ILC format
    215 TVectorD ObsTrk::ParToILC(TVectorD Par)
    216 {
    217         TVectorD pILC(5);       // Return vector
    218         //
    219         pILC(0) = Par(0)*1.0e3;                 // d0 in mm
    220         pILC(1) = Par(1);                               // phi0 is unchanged
    221         pILC(2) = -2 * Par(2)*1.0e-3;   // w in mm^-1
    222         pILC(3) = Par(3)*1.0e3;                 // z0 in mm
    223         pILC(4) = Par(4);                               // tan(lambda) = cot(theta)
    224         //
    225         return pILC;
    226 }
    227 // Covariance conversion to ILC format
    228 TMatrixDSym ObsTrk::CovToILC(TMatrixDSym Cov)
    229 {
    230         TMatrixDSym cILC(5); cILC.Zero();
    231         //
    232         // Fill derivative matrix
    233         TMatrixD A(5, 5);       A.Zero();
    234         //
    235         A(0, 0) = 1.0e3;                // D-d0 in mm
    236         A(1, 1) = 1.0;          // phi0-phi0
    237         A(2, 2) = -2.0e-3;      // w-C
    238         A(3, 3) = 1.0e3;                // z0-z0 conversion to mm
    239         A(4, 4) = 1.0;          // tan(lambda) - cot(theta)
    240         //
    241         TMatrixDSym Cv = Cov;
    242         TMatrixD At(5, 5);
    243         At.Transpose(A);
    244         Cv.Similarity(At);
    245         cILC = Cv;
    246         //
    247         return cILC;
    248 }
    249 
    250 
    251 
    252        
  • external/TrackCovariance/ObsTrk.h

    ra3261d7 r13331dc  
    66#include <TMatrixDSym.h>
    77#include <TDecompChol.h>
     8#include "TrkUtil.h"
    89#include "SolGridCov.h"
    910//
     
    1314//         INFN - Sezione di Pisa, Italy
    1415//
    15 class ObsTrk{
     16class ObsTrk: public TrkUtil
     17{
    1618        //
    1719        // Class to handle simulation of tracking resolution
     
    2022        //
    2123private:       
    22         Double_t fB;                                            // Solenoid magnetic field
    23         SolGridCov *fGC;                                        // Covariance matrix grid
     24        Double_t fB;                                    // Solenoid magnetic field
     25        SolGridCov *fGC;                                // Covariance matrix grid
    2426        Double_t fGenQ;                                 // Generated track charge
    2527        Double_t fObsQ;                                 // Observed  track charge
     
    2830        TVector3 fGenP;                                 // Generated track momentum at track origin
    2931        TVector3 fObsP;                                 // Observed  track momentum @ track minimum approach
    30         TVectorD fGenPar;                               // Generated helix track parameters (D, phi0, C, z0, cot(th))
     32        TVectorD fGenPar;                               // Generated helix track parameters (D, phi0, C, z0, cot(th)) in meters
     33        TVectorD fGenParMm;                             // Generated helix track parameters (D, phi0, C, z0, cot(th)) in mm
    3134        TVectorD fGenParACTS;                   // Generated helix track parameters (D, z0, phi0, th, q/p, time
    32         TVectorD fGenParILC;                            // Generated helix track parameters (w, phi0, d0, z0, tan(lambda))
    33         TVectorD fObsPar;                               // Observed  helix track parameters (D, phi0, C, z0, cot(th))
     35        TVectorD fGenParILC;                    // Generated helix track parameters (w, phi0, d0, z0, tan(lambda))
     36        TVectorD fObsPar;                               // Observed  helix track parameters (D, phi0, C, z0, cot(th)) in meters
     37        TVectorD fObsParMm;                             // Observed  helix track parameters (D, phi0, C, z0, cot(th)) in mm
    3438        TVectorD fObsParACTS;                   // Observed  helix track parameters (D, z0, phi0, th, q/p, time
    35         TVectorD fObsParILC;                            // Observed  helix track parameters (d0, phi0, w, z0, tan(lambda))
    36         TMatrixDSym fCov;                               // INterpolated covariance of track parameters
     39        TVectorD fObsParILC;                    // Observed  helix track parameters (d0, phi0, w, z0, tan(lambda))
     40        TMatrixDSym fCov;                               // Interpolated covariance of track in meters
     41        TMatrixDSym fCovMm;                             // Interpolated covariance of track parameters in mm
    3742        TMatrixDSym fCovACTS;                   // Covariance of track parameters in ACTS format
    3843                                                                        // (D, z0, phi0, theta, q/p, time)
    39         TMatrixDSym fCovILC;                            // Covariance of track parameters in ILC format
     44        TMatrixDSym fCovILC;                    // Covariance of track parameters in ILC format
    4045                                                                        // (d0, phi0, w, z0, tan(lambda))
    4146        //
    42         // Conversion to ACTS parametrization
     47        // Service routines
    4348        //
    44         TVectorD ParToACTS(TVectorD Par);               // Parameter conversion
    45         TMatrixDSym CovToACTS(TMatrixDSym Cov); // Covariance
    46         //
    47         // Conversion to ILC parametrization
    48         //
    49         TVectorD ParToILC(TVectorD Par);                // Parameter conversion
    50         TMatrixDSym CovToILC(TMatrixDSym Cov);  // Covariance conversion
     49        TVectorD GenToObsPar(TVectorD gPar, SolGridCov* GC);
    5150        //
    5251public:
     
    5453        // Constructors
    5554        // x(3) track origin, p(3) track momentum at origin, Q charge, B magnetic field in Tesla
    56         ObsTrk(TVector3 x, TVector3 p, Double_t Q, Double_t B, SolGridCov *GC); // Initialize and generate smeared track
     55        ObsTrk(TVector3 x, TVector3 p, Double_t Q, Double_t B, SolGridCov *GC); // Initialize and generate smeared
     56        ObsTrk(Double_t *x, Double_t *p, Double_t Q, Double_t B, SolGridCov* GC);       // Initialize and generate smeared track
    5757        // Destructor
    5858        ~ObsTrk();
    59         //
    60         // Service routines
    61         //
    62         TVectorD XPtoPar(TVector3 x, TVector3 p, Double_t Q);
    63         TVectorD GenToObsPar(TVectorD gPar, SolGridCov *GC);
    64         TVector3 ParToX(TVectorD Par);
    65         TVector3 ParToP(TVectorD Par);
    66         Double_t ParToQ(TVectorD Par);
    6759        //
    6860        // Accessors
     
    7466        TVector3 GetGenP()      { return fGenP; }
    7567        // D, phi0, C, z0, cot(th)
    76         TVectorD GetGenPar()    { return fGenPar; }
     68        TVectorD GetGenPar()    { return fGenPar; }             // in meters
     69        TVectorD GetGenParMm()  { return fGenParMm; }           // in mm
    7770        // D, z0, phi0, theta, q/p, time
    7871        TVectorD GetGenParACTS()        { return fGenParACTS; }
     
    8477        TVector3 GetObsP()      { return fObsP; }
    8578        // D, phi0, C, z0, cot(th)
    86         TVectorD GetObsPar()    { return fObsPar; }
     79        TVectorD GetObsPar()    { return fObsPar; }             // in meters
     80        TVectorD GetObsParMm()  { return fObsParMm; }   // In mm
    8781        // D, z0, phi0, theta, q/p, time
    8882        TVectorD GetObsParACTS()        { return fObsParACTS; }
     
    9084        TVectorD GetObsParILC() { return fObsParILC; }
    9185        // Covariances
    92         TMatrixDSym GetCov(){ return fCov; }
     86        TMatrixDSym GetCov()    { return fCov; }        // in meters
     87        TMatrixDSym GetCovMm()  { return fCov; }        // in mm
    9388        TMatrixDSym GetCovACTS(){ return fCovACTS; }
    9489        TMatrixDSym GetCovILC(){ return fCovILC; }
     90        //
    9591};
    9692
  • external/TrackCovariance/SolGridCov.cc

    ra3261d7 r13331dc  
    33#include <TMath.h>
    44#include <TVectorD.h>
     5#include <TVector3.h>
    56#include <TMatrixDSym.h>
    67#include <TDecompChol.h>
     
    3637{
    3738  delete[] fCov;
     39  delete fAcc;
    3840}
    3941
     
    5860    }
    5961  }
    60 }
     62
     63// Now make acceptance
     64fAcc = new AcceptanceClx(G);
     65}
     66
     67
     68//
     69Bool_t SolGridCov::IsAccepted(Double_t pt, Double_t Theta)
     70{
     71        //
     72        // pt in GeV, Theta in degrees
     73        //
     74        Bool_t Accept = kFALSE;
     75        if (fAcc->HitNumber(pt, Theta) >= fNminHits)Accept = kTRUE;
     76        //
     77        return Accept;
     78}
     79//
     80Bool_t SolGridCov::IsAccepted(Double_t *p)
     81{
     82        //
     83        // pt in GeV, Theta in degrees
     84        //
     85        Bool_t Accept = kFALSE;
     86        Double_t pt = TMath::Sqrt(p[0] * p[0] + p[1] * p[1]);
     87        Double_t th = 180. * TMath::ATan2(pt, p[2])/TMath::Pi();
     88        if (fAcc->HitNumber(pt,th) >= fNminHits)Accept = kTRUE;
     89        //
     90        return Accept;
     91}
     92//
     93Bool_t SolGridCov::IsAccepted(TVector3 p)
     94{
     95        //
     96        // pt in GeV, Theta in degrees
     97        //
     98        Bool_t Accept = kFALSE;
     99        Double_t pt = p.Pt();
     100        Double_t th = 180.*TMath::ACos(p.CosTheta())/TMath::Pi();
     101        if (fAcc->HitNumber(pt,th) >= fNminHits)Accept = kTRUE;
     102        //
     103        return Accept;
     104}
     105
     106
    61107// Find bin in grid
    62108Int_t SolGridCov::GetMinIndex(Double_t xval, Int_t N, TVectorD x)
  • external/TrackCovariance/SolGridCov.h

    ra3261d7 r13331dc  
    44#include <TVectorD.h>
    55#include <TMatrixDSym.h>
     6#include "AcceptanceClx.h"
    67
    78class SolGeom;
     
    1718  TVectorD fAnga;    // Array of angle points in degrees
    1819  TMatrixDSym *fCov; // Pointers to grid of covariance matrices
     20        AcceptanceClx *fAcc;                            // Pointer to acceptance class
     21        Int_t fNminHits;                                        // Minimum number of hits to accept track
    1922  // Service routines
    2023  Int_t GetMinIndex(Double_t xval, Int_t N, TVectorD x); // Find bin
     
    3235  Double_t GetMaxAng() { return fAnga(fNang - 1); }
    3336  TMatrixDSym GetCov(Double_t pt, Double_t ang);
     37
     38        // Acceptance related methods
     39        AcceptanceClx* AccPnt() { return fAcc; };                       // Return Acceptance class pointer
     40        void SetMinHits(Int_t MinHits) { fNminHits = MinHits; };        // Set minimum number of hits to accept (default = 6)
     41        Int_t GetMinHits() { return fNminHits; };
     42        Bool_t IsAccepted(Double_t pt, Double_t Theta);         // From pt (GeV) and theta (degrees)
     43        Bool_t IsAccepted(Double_t *p);                                         // From momentum components (GeV)
     44        Bool_t IsAccepted(TVector3 p);                                          // As above in Vector3 format
     45
    3446};
    3547
  • external/TrackCovariance/SolTrack.cc

    ra3261d7 r13331dc  
    4545  fCov.ResizeTo(5, 5);
    4646}
     47SolTrack::SolTrack(TVector3 x, TVector3 p, SolGeom* G)
     48{
     49        fG = G;
     50        // Store momentum
     51        fp[0] = p(0); fp[1] = p(1); fp[2] = p(2);
     52        Double_t px = p(0); Double_t py = p(1); Double_t pz = p(2);
     53        fx[0] = x(0); fx[1] = x(1); fx[2] = x(2);
     54        Double_t xx = x(0); Double_t yy = x(1); Double_t zz = x(2);
     55        // Store parameters
     56        Double_t pt = TMath::Sqrt(px * px + py * py);
     57        Double_t Charge = 1.0;                                          // Don't worry about charge for now
     58        Double_t a = -Charge * G->B() * 0.2998;                 // Normalized speed of light
     59        Double_t C = a / (2 * pt);                                      // pt in GeV, B in Tesla, C in meters
     60        Double_t r2 = xx * xx + yy * yy;
     61        Double_t cross = xx * py - yy * px;
     62        Double_t T = TMath::Sqrt(pt * pt - 2 * a * cross + a * a * r2);
     63        Double_t phi0 = TMath::ATan2((py - a * xx) / T, (px + a * yy) / T);
     64        Double_t D;
     65        if (pt < 10.0) D = (T - pt) / a;
     66        else D = (-2 * cross + a * r2) / (T + pt);
     67        Double_t B = C * TMath::Sqrt((r2 - D * D) / (1 + 2 * C * D));
     68        Double_t st = TMath::ASin(B) / C;
     69        Double_t ct = pz / pt;
     70        Double_t z0 = zz - ct * st;
     71        fpar[0] = D;
     72        fpar[1] = phi0;
     73        fpar[2] = C;
     74        fpar[3] = z0;
     75        fpar[4] = ct;
     76        //cout << "SolTrack:: C = " << C << ", fpar[2] = " << fpar[2] << endl;
     77        //
     78        // Init covariances
     79        //
     80        fCov.ResizeTo(5, 5);
     81}
    4782
    4883SolTrack::SolTrack(Double_t D, Double_t phi0, Double_t C, Double_t z0, Double_t ct, SolGeom *G)
     
    69104SolTrack::~SolTrack()
    70105{
     106        delete[] & fp;
     107        delete[] & fpar;
    71108  fCov.Clear();
    72109}
     
    132169  return kh;
    133170}
     171
     172// # of measurement layers hit
     173Int_t SolTrack::nmHit()
     174{
     175        Int_t kmh = 0;
     176        Double_t R; Double_t phi; Double_t zz;
     177        for (Int_t i = 0; i < fG->Nl(); i++)
     178        if (HitLayer(i, R, phi, zz))if (fG->isMeasure(i))kmh++;
     179        //
     180        return kmh;
     181}
     182//
     183
     184
    134185// List of layers hit with intersections
    135186Int_t SolTrack::HitList(Int_t *&ihh, Double_t *&rhh, Double_t *&zhh)
     
    161212  return kmh;
    162213}
     214
     215// List of XYZ measurements without any error
     216Int_t SolTrack::HitListXYZ(Int_t *&ihh, Double_t *&Xh, Double_t *&Yh, Double_t *&Zh)
     217{
     218        //
     219        // Return lists of hits associated to a track for all measurement layers.
     220        // Return value is the total number of measurement hits
     221        // kmh = total number of measurement layers hit for given type
     222        // ihh = pointer to layer number
     223        // Xh, Yh, Zh = X, Y, Z of hit - No measurement error - No multiple scattering
     224        //
     225        //
     226        Int_t kmh = 0;  // Number of measurement layers hit
     227        for (Int_t i = 0; i < fG->Nl(); i++)
     228        {
     229                Double_t R; Double_t phi; Double_t zz;
     230                if (HitLayer(i, R, phi, zz)) // Only barrel type layers
     231                {
     232                        if (fG->isMeasure(i))
     233                        {
     234                                ihh[kmh] = i;
     235                                Xh[kmh] = R*cos(phi);
     236                                Yh[kmh] = R*sin(phi);
     237                                Zh[kmh] = zz;
     238                                kmh++;
     239                        }
     240                }
     241        }
     242        //
     243        return kmh;
     244}
     245//
    163246// Covariance matrix estimation
     247//
    164248void SolTrack::CovCalc(Bool_t Res, Bool_t MS)
    165249{
    166   // Input flags:
    167   //        Res = .TRUE. turn on resolution effects/Use standard resolutions
    168   //            .FALSE. set all resolutions to 0
    169   //        MS  = .TRUE. include Multiple Scattering
    170   // Assumptions:
    171   // 1. Measurement layers can do one or two measurements
    172   // 2. On disks at constant z:
    173   //    - Upper side measurement is phi
    174   //    - Lower side measurement is R
    175 
    176   // Fill list of layers hit
    177   Int_t ntry = 0;
    178   Int_t ntrymax = 0;
    179   Int_t Nhit = nHit(); // Total number of layers hit
    180   Double_t *zhh = new Double_t[Nhit]; // z of hit
    181   Double_t *rhh = new Double_t[Nhit]; // r of hit
    182   Double_t *dhh = new Double_t[Nhit]; // distance of hit from origin
    183   Int_t    *ihh = new Int_t[Nhit];    // true index of layer
    184   Int_t kmh; // Number of measurement layers hit
    185 
    186   kmh = HitList(ihh, rhh, zhh); // hit layer list
    187   Int_t mTot = 0; // Total number of measurements
    188   for (Int_t i = 0; i < Nhit; i++)
    189   {
    190     dhh[i] = TMath::Sqrt(rhh[i] * rhh[i] + zhh[i] * zhh[i]);
    191     if (fG->isMeasure(ihh[i])) mTot += fG->lND(ihh[i]); // Count number of measurements
    192   }
    193   // Order hit list by increasing distance from origin
    194   Int_t *hord = new Int_t[Nhit]; // hit order by increasing distance from origin
    195   TMath::Sort(Nhit, dhh, hord, kFALSE); // Order by increasing distance from origin
    196   Double_t *zh = new Double_t[Nhit]; // d-ordered z of hit
    197   Double_t *rh = new Double_t[Nhit]; // d-ordered r of hit
    198   Int_t    *ih = new Int_t[Nhit];    // d-ordered true index of layer
    199   for (Int_t i = 0; i < Nhit; i++)
    200   {
    201     Int_t il = hord[i]; // Hit layer numbering
    202     zh[i] = zhh[il];
    203     rh[i] = rhh[il];
    204     ih[i] = ihh[il];
    205   }
    206   // Store interdistances and multiple scattering angles
    207   Double_t sn2t = 1.0 / (1 + ct()*ct()); //sin^2 theta of track
    208   Double_t cs2t = 1.0 - sn2t;            //cos^2 theta
    209   Double_t snt = TMath::Sqrt(sn2t);      // sin theta
    210   Double_t cst = TMath::Sqrt(cs2t);      // cos theta
    211   Double_t px0 = pt() * TMath::Cos(phi0()); // Momentum at minimum approach
    212   Double_t py0 = pt() * TMath::Sin(phi0());
    213   Double_t pz0 = pt() * ct();
    214   TMatrixDSym dik(Nhit);  dik.Zero(); // Distances between layers
    215   Double_t *thms = new Double_t[Nhit]; // Scattering angles/plane
    216   Double_t *cs = new Double_t[Nhit]; // Cosine of angle with layer normal
    217   for (Int_t ii = 0; ii < Nhit; ii++) // Hit layer loop
    218   {
    219     Int_t i = ih[ii]; // Get true layer number
    220     Double_t B = C()*TMath::Sqrt((rh[ii] * rh[ii] - D()*D()) / (1 + 2 * C()*D()));
    221     Double_t pxi = px0*(1-2*B*B)-2*py0*B*TMath::Sqrt(1-B*B); // Momentum at scattering layer
    222     Double_t pyi = py0*(1-2*B*B)+2*px0*B*TMath::Sqrt(1-B*B);
    223     Double_t pzi = pz0;
    224     Double_t ArgRp = (rh[ii]*C() + (1 + C() * D())*D() / rh[ii]) / (1 + 2 * C()*D());
    225     Double_t phi = phi0() + TMath::ASin(ArgRp);
    226     Double_t nx = TMath::Cos(phi); // Barrel layer normal
    227     Double_t ny = TMath::Sin(phi);
    228     Double_t nz = 0.0;
    229     if (fG->lTyp(i) == 2) // this is Z layer
    230     {
    231       nx = 0.0;
    232       ny = 0.0;
    233       nz = 1.0;
    234     }
    235     Double_t corr = (pxi*nx + pyi * ny + pzi * nz) / p();
    236     cs[ii] = corr;
    237     Double_t Rlf = fG->lTh(i) / (corr*fG->lX0(i)); // Rad. length fraction
    238     thms[ii] = 0.0136*TMath::Sqrt(Rlf)*(1.0 + 0.038*TMath::Log(Rlf)) / p(); // MS angle
    239     if (!MS)thms[ii] = 0;
    240     //
    241     for (Int_t kk = 0; kk < ii; kk++) // Fill distances between layers
    242     {
    243       Double_t Ci = C();
    244       dik(ii, kk) = (TMath::ASin(Ci*rh[ii])-TMath::ASin(Ci*rh[kk]))/(Ci*snt);
    245       dik(kk, ii) = dik(ii, kk);
    246     }
    247     // Store momentum components for resolution correction cosines
    248     Double_t *pRi = new Double_t[Nhit];
    249     pRi[ii] = TMath::Abs(pxi * TMath::Cos(phi) + pyi * TMath::Sin(phi)); // Radial component
    250     Double_t *pPhi = new Double_t[Nhit];
    251     pPhi[ii] = TMath::Abs(pxi * TMath::Sin(phi) - pyi * TMath::Cos(phi)); // Phi component
    252   }
    253   // Fill measurement covariance
    254   Int_t *mTl = new Int_t[mTot]; // Pointer from measurement number to true layer number
    255   TMatrixDSym Sm(mTot); Sm.Zero(); // Measurement covariance
    256   TMatrixD Rm(mTot, 5); // Derivative matrix
    257   Int_t im = 0;
    258   // Fill derivatives and error matrix with MS
    259   Double_t AngMax = 90.; Double_t AngMx = AngMax * TMath::Pi() / 180.;
    260   Double_t csMin = TMath::Cos(AngMx); // Set maximum angle wrt normal
    261   //
    262   for (Int_t ii = 0; ii < Nhit; ii++)
    263   {
    264     Int_t i = ih[ii]; // True layer number
    265     Int_t ityp  = fG->lTyp(i); // Layer type Barrel or Z
    266     Int_t nmeai = fG->lND(i); // # measurements in layer
    267     if (fG->isMeasure(i) && nmeai >0 && cs[ii] > csMin)
    268     {
    269       Double_t Di    = D(); // Get true track parameters
    270       Double_t phi0i = phi0();
    271       Double_t Ci    = C();
    272       Double_t z0i   = z0();
    273       Double_t cti   = ct();
    274       //
    275       Double_t Ri    = rh[ii];
    276       Double_t ArgRp = (Ri*Ci + (1 + Ci * Di)*Di / Ri) / (1 + 2 * Ci*Di);
    277       Double_t ArgRz = Ci * TMath::Sqrt((Ri*Ri - Di * Di) / (1 + 2 * Ci*Di));
    278       TVectorD dRphi(5); dRphi.Zero(); // R-phi derivatives @ const. R
    279       TVectorD dRz(5); dRz.Zero(); // z derivatives @ const. R
    280       // Derivative overflow protection
    281       Double_t dMin = 0.8;
    282       dRphi(0) = (1 - 2 * Ci*Ci*Ri*Ri) /
    283         TMath::Max(dMin,TMath::Sqrt(1 - ArgRp * ArgRp)); // D derivative
    284       dRphi(1) = Ri; // phi0 derivative
    285       dRphi(2) = Ri * Ri /
    286         TMath::Max(dMin,TMath::Sqrt(1 - ArgRp * ArgRp)); // C derivative
    287       dRphi(3) = 0.0; // z0 derivative
    288       dRphi(4) = 0.0; // cot(theta) derivative
    289 
    290       dRz(0) = -cti * Di /
    291         (Ri*TMath::Max(dMin,TMath::Sqrt(1 - Ci * Ci*Ri*Ri))); // D
    292       dRz(1) = 0.0; // Phi0
    293       dRz(2) = cti * (Ri*Ci / TMath::Sqrt(1-Ri*Ri*Ci*Ci) -
    294         TMath::ASin(Ri*Ci)) / (Ci*Ci); // C
    295       dRz(3) = 1.0; // Z0
    296       dRz(4) = TMath::ASin(ArgRz) / Ci; // Cot(theta)
    297 
    298       for (Int_t nmi = 0; nmi < nmeai; nmi++)
    299       {
    300         mTl[im] = i;
    301         Double_t stri = 0;
    302         Double_t sig = 0;
    303         if (nmi + 1 == 1) // Upper layer measurements
    304         {
    305           stri = fG->lStU(i); // Stereo angle
    306           Double_t csa = TMath::Cos(stri);
    307           Double_t ssa = TMath::Sin(stri);
    308           sig = fG->lSgU(i); // Resolution
    309           if (ityp == 1) // Barrel type layer (Measure R-phi, stereo or z at const. R)
    310           {
    311             // Almost exact solution (CD<<1, D<<R)
    312             Rm(im, 0) = csa * dRphi(0) - ssa * dRz(0); // D derivative
    313             Rm(im, 1) = csa * dRphi(1) - ssa * dRz(1); // phi0 derivative
    314             Rm(im, 2) = csa * dRphi(2) - ssa * dRz(2); // C derivative
    315             Rm(im, 3) = csa * dRphi(3) - ssa * dRz(3); // z0 derivative
    316             Rm(im, 4) = csa * dRphi(4) - ssa * dRz(4); // cot(theta) derivative
    317           }
    318           if (ityp == 2) // Z type layer (Measure phi at const. Z)
    319           {
    320             Rm(im, 0) = 1.0; // D derivative
    321             Rm(im, 1) = rh[ii]; // phi0 derivative
    322             Rm(im, 2) = rh[ii] * rh[ii]; // C derivative
    323             Rm(im, 3) = 0; // z0 derivative
    324             Rm(im, 4) = 0; // cot(theta) derivative
    325           }
    326         }
    327         if (nmi + 1 == 2) // Lower layer measurements
    328         {
    329           stri = fG->lStL(i); // Stereo angle
    330           Double_t csa = TMath::Cos(stri);
    331           Double_t ssa = TMath::Sin(stri);
    332           sig = fG->lSgL(i); // Resolution
    333           if (ityp == 1) // Barrel type layer (measure R-phi, stereo or z at const. R)
    334           {
    335             // Almost exact solution (CD<<1, D<<R)
    336             Rm(im, 0) = csa * dRphi(0) - ssa * dRz(0); // D derivative
    337             Rm(im, 1) = csa * dRphi(1) - ssa * dRz(1); // phi0 derivative
    338             Rm(im, 2) = csa * dRphi(2) - ssa * dRz(2); // C derivative
    339             Rm(im, 3) = csa * dRphi(3) - ssa * dRz(3); // z0 derivative
    340             Rm(im, 4) = csa * dRphi(4) - ssa * dRz(4); // cot(theta) derivative
    341           }
    342           if (ityp == 2) // Z type layer (Measure R at const. z)
    343           {
    344             Rm(im, 0) = 0; // D derivative
    345             Rm(im, 1) = 0; // phi0 derivative
    346             Rm(im, 2) = 0; // C derivative
    347             Rm(im, 3) = -1.0 / ct(); // z0 derivative
    348             Rm(im, 4) = -rh[ii] / ct(); // cot(theta) derivative
    349           }
    350         }
    351         // Derivative calculation completed
    352         // Now calculate measurement error matrix
    353         Int_t km = 0;
    354         for (Int_t kk = 0; kk <= ii; kk++)
    355         {
    356           Int_t k = ih[kk]; // True layer number
    357           Int_t ktyp = fG->lTyp(k); // Layer type Barrel or
    358           Int_t nmeak = fG->lND(k); // # measurements in layer
    359           if (fG->isMeasure(k) && nmeak > 0 &&cs[kk] > csMin)
    360           {
    361             for (Int_t nmk = 0; nmk < nmeak; nmk++)
    362             {
    363               Double_t strk = 0;
    364               if (nmk + 1 == 1) strk = fG->lStU(k); // Stereo angle
    365               if (nmk + 1 == 2) strk = fG->lStL(k); // Stereo angle
    366               if (im == km && Res) Sm(im, km) += sig*sig; // Detector resolution on diagonal
    367               //
    368               // Loop on all layers below for MS contributions
    369               for (Int_t jj = 0; jj < kk; jj++)
    370               {
    371                 Double_t di = dik(ii, jj);
    372                 Double_t dk = dik(kk, jj);
    373                 Double_t ms = thms[jj];
    374                 Double_t msk = ms; Double_t msi = ms;
    375                 if (ityp == 1) msi = ms / snt; // Barrel
    376                 else if (ityp == 2) msi = ms / cst; // Disk
    377                 if (ktyp == 1) msk = ms / snt; // Barrel
    378                 else if (ktyp == 2) msk = ms / cst; // Disk
    379                 Double_t ci = TMath::Cos(stri); Double_t si = TMath::Sin(stri);
    380                 Double_t ck = TMath::Cos(strk); Double_t sk = TMath::Sin(strk);
    381                 Sm(im, km) += di*dk*(ci*ck*ms*ms + si*sk*msi*msk); // Ms contribution
    382               }
    383               Sm(km, im) = Sm(im, km);
    384               km++;
    385             }
    386           }
    387         }
    388         im++; mTot = im;
    389       }
    390     }
    391   }
    392   Sm.ResizeTo(mTot, mTot);
    393   Rm.ResizeTo(mTot, 5);
    394 
    395   // Calculate covariance from derivatives and measurement error matrix
    396   TMatrixDSym DSmInv(mTot); DSmInv.Zero();
    397   for (Int_t id = 0; id < mTot; id++) DSmInv(id, id) = 1.0 / TMath::Sqrt(Sm(id, id));
    398   TMatrixDSym SmN = Sm.Similarity(DSmInv);  // Normalize diagonal to 1
    399   // Protected matrix inversions
    400   TDecompChol Chl(SmN);
    401   TMatrixDSym SmNinv = SmN;
    402   if (Chl.Decompose())
    403   {
    404     Bool_t OK;
    405     SmNinv = Chl.Invert(OK);
    406   }
    407   else
    408   {
    409     cout << "SolTrack::CovCalc: Error matrix not positive definite. Recovering ...." << endl;
    410     if (ntry < ntrymax)
    411     {
    412       SmNinv.Print();
    413       ntry++;
    414     }
    415     TMatrixDSym rSmN = MakePosDef(SmN); SmN = rSmN;
    416     TDecompChol rChl(SmN);
    417     SmNinv = SmN;
    418     Bool_t OK = rChl.Decompose();
    419     SmNinv    = rChl.Invert(OK);
    420   }
    421   Sm = SmNinv.Similarity(DSmInv); // Error matrix inverted
    422   TMatrixDSym H = Sm.SimilarityT(Rm); // Calculate half Hessian
    423   // Normalize before inversion
    424   const Int_t Npar = 5;
    425   TMatrixDSym DHinv(Npar); DHinv.Zero();
    426   for (Int_t i = 0; i < Npar; i++)DHinv(i, i) = 1.0 / TMath::Sqrt(H(i, i));
    427   TMatrixDSym Hnrm = H.Similarity(DHinv);
    428   // Invert and restore
    429   Hnrm.Invert();
    430   fCov = Hnrm.Similarity(DHinv);
     250        //
     251        //
     252        // Input flags:
     253        //                              Res = .TRUE. turn on resolution effects/Use standard resolutions
     254        //                                        .FALSE. set all resolutions to 0
     255        //                              MS  = .TRUE. include Multiple Scattering
     256        //
     257        // Assumptions:
     258        // 1. Measurement layers can do one or two measurements
     259        // 2. On disks at constant z:
     260        //              - Upper side measurement is phi
     261        //              - Lower side measurement is R
     262        //
     263        // Fill list of layers hit
     264        //
     265        Int_t ntry = 0;
     266        Int_t ntrymax = 0;
     267        Int_t Nhit = nHit();                                    // Total number of layers hit
     268        Double_t *zhh = new Double_t[Nhit];             // z of hit
     269        Double_t *rhh = new Double_t[Nhit];             // r of hit
     270        Double_t *dhh = new Double_t[Nhit];             // distance of hit from origin
     271        Int_t    *ihh = new Int_t[Nhit];                // true index of layer
     272        Int_t kmh;                                                              // Number of measurement layers hit
     273        //
     274        kmh = HitList(ihh, rhh, zhh);                   // hit layer list
     275        Int_t mTot = 0;                                                 // Total number of measurements
     276        for (Int_t i = 0; i < Nhit; i++)
     277        {
     278                dhh[i] = TMath::Sqrt(rhh[i] * rhh[i] + zhh[i] * zhh[i]);
     279                if (fG->isMeasure(ihh[i])) mTot += fG->lND(ihh[i]);     // Count number of measurements
     280        }
     281        //
     282        // Order hit list by increasing distance from origin
     283        //
     284        Int_t    *hord = new Int_t[Nhit];               // hit order by increasing distance from origin
     285        TMath::Sort(Nhit, dhh, hord, kFALSE);   // Order by increasing distance from origin
     286        Double_t *zh = new Double_t[Nhit];              // d-ordered z of hit
     287        Double_t *rh = new Double_t[Nhit];              // d-ordered r of hit
     288        Int_t    *ih = new Int_t[Nhit];                 // d-ordered true index of layer
     289        for (Int_t i = 0; i < Nhit; i++)
     290        {
     291                Int_t il = hord[i];                                     // Hit layer numbering
     292                zh[i] = zhh[il];
     293                rh[i] = rhh[il];
     294                ih[i] = ihh[il];
     295        }
     296        //
     297        // Store interdistances and multiple scattering angles
     298        //
     299        Double_t sn2t = 1.0 / (1 + ct()*ct());                  //sin^2 theta of track
     300        Double_t cs2t = 1.0 - sn2t;                                             //cos^2 theta
     301        Double_t snt = TMath::Sqrt(sn2t);                               // sin theta
     302        Double_t cst = TMath::Sqrt(cs2t);                               // cos theta
     303        Double_t px0 = pt() * TMath::Cos(phi0());               // Momentum at minimum approach
     304        Double_t py0 = pt() * TMath::Sin(phi0());
     305        Double_t pz0 = pt() * ct();
     306        //
     307        TMatrixDSym dik(Nhit);  dik.Zero();             // Distances between layers
     308        Double_t *thms = new Double_t[Nhit];    // Scattering angles/plane
     309        Double_t *cs = new Double_t[Nhit];              // Cosine of angle with layer normal
     310        for (Int_t ii = 0; ii < Nhit; ii++)             // Hit layer loop
     311        {
     312                Int_t i = ih[ii];                                       // Get true layer number
     313                Double_t B = C()*TMath::Sqrt((rh[ii] * rh[ii] - D()*D()) / (1 + 2 * C()*D()));
     314                Double_t pxi = px0*(1-2*B*B)-2*py0*B*TMath::Sqrt(1-B*B);                // Momentum at scattering layer
     315                Double_t pyi = py0*(1-2*B*B)+2*px0*B*TMath::Sqrt(1-B*B);
     316                Double_t pzi = pz0;
     317                Double_t ArgRp = (rh[ii]*C() + (1 + C() * D())*D() / rh[ii]) / (1 + 2 * C()*D());
     318                Double_t phi = phi0() + TMath::ASin(ArgRp);
     319                Double_t nx = TMath::Cos(phi);          // Barrel layer normal
     320                Double_t ny = TMath::Sin(phi);
     321                Double_t nz = 0.0;
     322                if (fG->lTyp(i) == 2)                                                           // this is Z layer
     323                {
     324                        nx = 0.0;
     325                        ny = 0.0;
     326                        nz = 1.0;
     327                }
     328                Double_t corr = (pxi*nx + pyi * ny + pzi * nz) / p();
     329                cs[ii] = corr;
     330                Double_t Rlf = fG->lTh(i) / (corr*fG->lX0(i));          // Rad. length fraction
     331                thms[ii] = 0.0136*TMath::Sqrt(Rlf)*(1.0 + 0.038*TMath::Log(Rlf)) / p();         // MS angle
     332                if (!MS)thms[ii] = 0;
     333                //
     334                for (Int_t kk = 0; kk < ii; kk++)       // Fill distances between layers
     335                {
     336                        //dik(ii, kk) = TMath::Sqrt(pow(rh[ii] - rh[kk], 2) + pow(zh[ii] - zh[kk], 2));
     337                        Double_t Ci = C();
     338                        dik(ii, kk) = (TMath::ASin(Ci*rh[ii])-TMath::ASin(Ci*rh[kk]))/(Ci*snt);
     339                        dik(kk, ii) = dik(ii, kk);
     340                }
     341                //
     342                // Store momentum components for resolution correction cosines
     343                //
     344                Double_t *pRi = new Double_t[Nhit];
     345                pRi[ii] = TMath::Abs(pxi * TMath::Cos(phi) + pyi * TMath::Sin(phi)); // Radial component
     346                Double_t *pPhi = new Double_t[Nhit];
     347                pPhi[ii] = TMath::Abs(pxi * TMath::Sin(phi) - pyi * TMath::Cos(phi)); // Phi component
     348        }
     349        //
     350        // Fill measurement covariance
     351        //
     352        Int_t *mTl = new Int_t[mTot];           // Pointer from measurement number to true layer number
     353        TMatrixDSym Sm(mTot); Sm.Zero();        // Measurement covariance
     354        TMatrixD Rm(mTot, 5);                           // Derivative matrix
     355        Int_t im = 0;
     356        //
     357        // Fill derivatives and error matrix with MS
     358        //
     359        Double_t AngMax = 90.; Double_t AngMx = AngMax * TMath::Pi() / 180.;
     360        Double_t csMin = TMath::Cos(AngMx);     // Set maximum angle wrt normal
     361        //
     362        for (Int_t ii = 0; ii < Nhit; ii++)
     363        {
     364                Int_t i = ih[ii];                                       // True layer number
     365                Int_t ityp  = fG->lTyp(i);                      // Layer type Barrel or Z
     366                Int_t nmeai = fG->lND(i);                       // # measurements in layer
     367                if (fG->isMeasure(i) && nmeai >0 && cs[ii] > csMin)
     368                {
     369                        Double_t Di    = D();                           // Get true track parameters
     370                        Double_t phi0i = phi0();
     371                        Double_t Ci    = C();
     372                        Double_t z0i   = z0();
     373                        Double_t cti   = ct();
     374                        //
     375                        Double_t Ri    = rh[ii];
     376                        Double_t ArgRp = (Ri*Ci + (1 + Ci * Di)*Di / Ri) / (1 + 2 * Ci*Di);
     377                        Double_t ArgRz = Ci * TMath::Sqrt((Ri*Ri - Di * Di) / (1 + 2 * Ci*Di));
     378                        TVectorD dRphi(5); dRphi.Zero();                // R-phi derivatives @ const. R
     379                        TVectorD dRz(5); dRz.Zero();                    // z     derivatives @ const. R
     380                        //
     381                        // Derivative overflow protection
     382                        Double_t dMin = 0.8;
     383                        dRphi(0) = (1 - 2 * Ci*Ci*Ri*Ri) /
     384                                TMath::Max(dMin,TMath::Sqrt(1 - ArgRp * ArgRp));        // D derivative
     385                        dRphi(1) = Ri;                                                                                                          // phi0 derivative
     386                        dRphi(2) = Ri * Ri /
     387                                TMath::Max(dMin,TMath::Sqrt(1 - ArgRp * ArgRp));                                // C derivative
     388                        dRphi(3) = 0.0;                                                                                         // z0 derivative
     389                        dRphi(4) = 0.0;                                                                                         // cot(theta) derivative
     390                        //
     391                        dRz(0) = -cti * Di /
     392                                (Ri*TMath::Max(dMin,TMath::Sqrt(1 - Ci * Ci*Ri*Ri)));   // D
     393                        dRz(1) = 0.0;                                                                                           // Phi0
     394                        dRz(2) = cti * (Ri*Ci / TMath::Sqrt(1-Ri*Ri*Ci*Ci) -            // C
     395                                TMath::ASin(Ri*Ci)) / (Ci*Ci);
     396                        dRz(3) = 1.0;                                                                                           // Z0
     397                        dRz(4) = TMath::ASin(ArgRz) / Ci;                                                       // Cot(theta)
     398                        //
     399                        for (Int_t nmi = 0; nmi < nmeai; nmi++)
     400                        {
     401                                mTl[im] = i;
     402                                Double_t stri = 0;
     403                                Double_t sig = 0;
     404                                if (nmi + 1 == 1)               // Upper layer measurements
     405                                {
     406                                        stri = fG->lStU(i);     // Stereo angle
     407                                        Double_t csa = TMath::Cos(stri);
     408                                        Double_t ssa = TMath::Sin(stri);
     409                                        sig = fG->lSgU(i);      // Resolution
     410                                        if (ityp == 1)          // Barrel type layer (Measure R-phi, stereo or z at const. R)
     411                                        {
     412                                                //
     413                                                // Almost exact solution (CD<<1, D<<R)
     414                                                Rm(im, 0) = csa * dRphi(0) - ssa * dRz(0);      // D derivative
     415                                                Rm(im, 1) = csa * dRphi(1) - ssa * dRz(1);      // phi0 derivative
     416                                                Rm(im, 2) = csa * dRphi(2) - ssa * dRz(2);      // C derivative
     417                                                Rm(im, 3) = csa * dRphi(3) - ssa * dRz(3);      // z0 derivative
     418                                                Rm(im, 4) = csa * dRphi(4) - ssa * dRz(4);      // cot(theta) derivative
     419                                        }
     420                                        if (ityp == 2)          // Z type layer (Measure phi at const. Z)
     421                                        {
     422                                                Rm(im, 0) = 1.0;                                        // D derivative
     423                                                Rm(im, 1) = rh[ii];                                     // phi0 derivative
     424                                                Rm(im, 2) = rh[ii] * rh[ii];            // C derivative
     425                                                Rm(im, 3) = 0;                                          // z0 derivative
     426                                                Rm(im, 4) = 0;                                          // cot(theta) derivative
     427                                        }
     428                                }
     429                                if (nmi + 1 == 2)                       // Lower layer measurements
     430                                {
     431                                        stri = fG->lStL(i);             // Stereo angle
     432                                        Double_t csa = TMath::Cos(stri);
     433                                        Double_t ssa = TMath::Sin(stri);
     434                                        sig = fG->lSgL(i);              // Resolution
     435                                        if (ityp == 1)                  // Barrel type layer (measure R-phi, stereo or z at const. R)
     436                                        {
     437                                                //
     438                                                // Almost exact solution (CD<<1, D<<R)
     439                                                Rm(im, 0) = csa * dRphi(0) - ssa * dRz(0);      // D derivative
     440                                                Rm(im, 1) = csa * dRphi(1) - ssa * dRz(1);      // phi0 derivative
     441                                                Rm(im, 2) = csa * dRphi(2) - ssa * dRz(2);      // C derivative
     442                                                Rm(im, 3) = csa * dRphi(3) - ssa * dRz(3);      // z0 derivative
     443                                                Rm(im, 4) = csa * dRphi(4) - ssa * dRz(4);      // cot(theta) derivative
     444                                        }
     445                                        if (ityp == 2)                  // Z type layer (Measure R at const. z)
     446                                        {
     447                                                Rm(im, 0) = 0;                                                          // D derivative
     448                                                Rm(im, 1) = 0;                                                          // phi0 derivative
     449                                                Rm(im, 2) = 0;                                                          // C derivative
     450                                                Rm(im, 3) = -1.0 / ct();                                        // z0 derivative
     451                                                Rm(im, 4) = -rh[ii] / ct();                                     // cot(theta) derivative
     452                                        }
     453                                }
     454                                // Derivative calculation completed
     455                                //
     456                                // Now calculate measurement error matrix
     457                                //
     458                                Int_t km = 0;
     459                                for (Int_t kk = 0; kk <= ii; kk++)
     460                                {
     461                                        Int_t k = ih[kk];                                       // True layer number
     462                                        Int_t ktyp = fG->lTyp(k);                       // Layer type Barrel or
     463                                        Int_t nmeak = fG->lND(k);                       // # measurements in layer
     464                                        if (fG->isMeasure(k) && nmeak > 0 &&cs[kk] > csMin)
     465                                        {
     466                                                for (Int_t nmk = 0; nmk < nmeak; nmk++)
     467                                                {
     468                                                        Double_t strk = 0;
     469                                                        if (nmk + 1 == 1) strk = fG->lStU(k);   // Stereo angle
     470                                                        if (nmk + 1 == 2) strk = fG->lStL(k);   // Stereo angle
     471                                                        if (im == km && Res) Sm(im, km) += sig*sig;     // Detector resolution on diagonal
     472                                                        //
     473                                                        // Loop on all layers below for MS contributions
     474                                                        for (Int_t jj = 0; jj < kk; jj++)
     475                                                        {
     476                                                                Double_t di = dik(ii, jj);
     477                                                                Double_t dk = dik(kk, jj);
     478                                                                Double_t ms = thms[jj];
     479                                                                Double_t msk = ms; Double_t msi = ms;
     480                                                                if (ityp == 1) msi = ms / snt;                  // Barrel
     481                                                                else if (ityp == 2) msi = ms / cst;             // Disk
     482                                                                if (ktyp == 1) msk = ms / snt;                  // Barrel
     483                                                                else if (ktyp == 2) msk = ms / cst;             // Disk
     484                                                                Double_t ci = TMath::Cos(stri); Double_t si = TMath::Sin(stri);
     485                                                                Double_t ck = TMath::Cos(strk); Double_t sk = TMath::Sin(strk);
     486                                                                Sm(im, km) += di*dk*(ci*ck*ms*ms + si*sk*msi*msk);                      // Ms contribution
     487                                                        }
     488                                                        //
     489                                                        Sm(km, im) = Sm(im, km);
     490                                                        km++;
     491                                                }
     492                                        }
     493                                }
     494                                im++; mTot = im;
     495                        }
     496                }
     497        }
     498        Sm.ResizeTo(mTot, mTot);
     499        Rm.ResizeTo(mTot, 5);
     500        //
     501        //**********************************************************************
     502        // Calculate covariance from derivatives and measurement error matrix  *
     503        //**********************************************************************
     504        //
     505        TMatrixDSym DSmInv(mTot); DSmInv.Zero();
     506        for (Int_t id = 0; id < mTot; id++) DSmInv(id, id) = 1.0 / TMath::Sqrt(Sm(id, id));
     507        TMatrixDSym SmN = Sm.Similarity(DSmInv);        // Normalize diagonal to 1
     508        //SmN.Invert();
     509        //
     510        // Protected matrix inversions
     511        //
     512        TDecompChol Chl(SmN);
     513        TMatrixDSym SmNinv = SmN;
     514        if (Chl.Decompose())
     515        {
     516                Bool_t OK;
     517                SmNinv = Chl.Invert(OK);
     518        }
     519        else
     520        {
     521                cout << "SolTrack::CovCalc: Error matrix not positive definite. Recovering ...." << endl;
     522                if (ntry < ntrymax)
     523                {
     524                        SmNinv.Print();
     525                        ntry++;
     526                }
     527                TMatrixDSym rSmN = MakePosDef(SmN); SmN = rSmN;
     528                TDecompChol rChl(SmN);
     529                SmNinv = SmN;
     530                Bool_t OK = rChl.Decompose();
     531                SmNinv    = rChl.Invert(OK);
     532        }
     533        Sm = SmNinv.Similarity(DSmInv);                 // Error matrix inverted
     534        TMatrixDSym H = Sm.SimilarityT(Rm);             // Calculate half Hessian
     535        // Normalize before inversion
     536        const Int_t Npar = 5;
     537        TMatrixDSym DHinv(Npar); DHinv.Zero();
     538        for (Int_t i = 0; i < Npar; i++)DHinv(i, i) = 1.0 / TMath::Sqrt(H(i, i));
     539        TMatrixDSym Hnrm = H.Similarity(DHinv);
     540        // Invert and restore
     541        Hnrm.Invert();
     542        fCov = Hnrm.Similarity(DHinv);
    431543}
    432544
     
    434546TMatrixDSym SolTrack::MakePosDef(TMatrixDSym NormMat)
    435547{
    436   // Input: symmetric matrix with 1's on diagonal
    437   // Output: positive definite matrix with 1's on diagonal
    438 
    439   // Default return value
    440   TMatrixDSym rMatN = NormMat;
    441   // Check the diagonal
    442   Bool_t Check = kFALSE;
    443   Int_t Size = NormMat.GetNcols();
    444   for (Int_t i = 0; i < Size; i++)if (TMath::Abs(NormMat(i, i) - 1.0)>1.0E-15)Check = kTRUE;
    445   if (Check)
    446   {
    447     cout << "SolTrack::MakePosDef: input matrix doesn't have 1 on diagonal. Abort." << endl;
    448     return rMatN;
    449   }
    450   // Diagonalize matrix
    451   TMatrixDSymEigen Eign(NormMat);
    452   TMatrixD U = Eign.GetEigenVectors();
    453   TVectorD lambda = Eign.GetEigenValues();
    454   // Reset negative eigenvalues to small positive value
    455   TMatrixDSym D(Size); D.Zero(); Double_t eps = 1.0e-13;
    456   for (Int_t i = 0; i < Size; i++)
    457   {
    458     D(i, i) = lambda(i);
    459     if (lambda(i) <= 0) D(i, i) = eps;
    460   }
    461   // Rebuild matrix
    462   TMatrixD Ut(TMatrixD::kTransposed, U);
    463   TMatrixD rMat = (U*D)*Ut;       // Now it is positive defite
    464   // Restore all ones on diagonal
    465   for (Int_t i1 = 0; i1 < Size; i1++)
    466   {
    467     Double_t rn1 = TMath::Sqrt(rMat(i1, i1));
    468     for (Int_t i2 = 0; i2 <= i1; i2++)
    469     {
    470       Double_t rn2 = TMath::Sqrt(rMat(i2, i2));
    471       rMatN(i1, i2) = 0.5*(rMat(i1, i2) + rMat(i2, i1)) / (rn1*rn2);
    472       rMatN(i2, i1) = rMatN(i1, i2);
    473     }
    474   }
    475   return rMatN;
    476 }
     548        //
     549        // Input: symmetric matrix with 1's on diagonal
     550        // Output: positive definite matrix with 1's on diagonal
     551        //
     552        // Default return value
     553        TMatrixDSym rMatN = NormMat;
     554        // Check the diagonal
     555        Bool_t Check = kFALSE;
     556        Int_t Size = NormMat.GetNcols();
     557        for (Int_t i = 0; i < Size; i++)if (TMath::Abs(NormMat(i, i) - 1.0)>1.0E-15)Check = kTRUE;
     558        if (Check)
     559        {
     560                cout << "SolTrack::MakePosDef: input matrix doesn ot have 1 on diagonal. Abort." << endl;
     561                return rMatN;
     562        }
     563        //
     564        // Diagonalize matrix
     565        TMatrixDSymEigen Eign(NormMat);
     566        TMatrixD U = Eign.GetEigenVectors();
     567        TVectorD lambda = Eign.GetEigenValues();
     568        // Reset negative eigenvalues to small positive value
     569        TMatrixDSym D(Size); D.Zero(); Double_t eps = 1.0e-13;
     570        for (Int_t i = 0; i < Size; i++)
     571        {
     572                D(i, i) = lambda(i);
     573                if (lambda(i) <= 0) D(i, i) = eps;
     574        }
     575         //Rebuild matrix
     576        TMatrixD Ut(TMatrixD::kTransposed, U);
     577        TMatrixD rMat = (U*D)*Ut;                               // Now it is positive defite
     578        // Restore all ones on diagonal
     579        for (Int_t i1 = 0; i1 < Size; i1++)
     580        {
     581                Double_t rn1 = TMath::Sqrt(rMat(i1, i1));
     582                for (Int_t i2 = 0; i2 <= i1; i2++)
     583                {
     584                        Double_t rn2 = TMath::Sqrt(rMat(i2, i2));
     585                        rMatN(i1, i2) = 0.5*(rMat(i1, i2) + rMat(i2, i1)) / (rn1*rn2);
     586                        rMatN(i2, i1) = rMatN(i1, i2);
     587                }
     588        }
     589        return rMatN;
     590}
  • external/TrackCovariance/SolTrack.h

    ra3261d7 r13331dc  
    33
    44#include <TMath.h>
     5#include <TVector3.h>
    56#include <TMatrixDSym.h>
    67
     
    2425  // Constructors
    2526  SolTrack(Double_t *x, Double_t *p, SolGeom *G);
     27        SolTrack(TVector3 x, TVector3 p, SolGeom* G);
    2628  SolTrack(Double_t D, Double_t phi0, Double_t C, Double_t z0, Double_t ct, SolGeom *G);
    2729  // Destructor
     
    5759  // Track hit management
    5860  Int_t nHit();
     61  Int_t nmHit();
    5962  Bool_t HitLayer(Int_t Layer, Double_t &R, Double_t &phi, Double_t &zz);
    6063  Int_t HitList(Int_t *&ihh, Double_t *&rhh, Double_t *&zhh);
     64  Int_t HitListXYZ(Int_t *&ihh, Double_t *&Xh, Double_t *&Yh, Double_t *&Zh);
     65
    6166  // Make normalized matrix positive definite
    6267  TMatrixDSym MakePosDef(TMatrixDSym NormMat);
  • external/fastjet/ActiveAreaSpec.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ActiveAreaSpec.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: ActiveAreaSpec.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/AreaDefinition.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: AreaDefinition.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: AreaDefinition.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/AreaDefinition.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: AreaDefinition.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: AreaDefinition.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2006-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2006-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/BasicRandom.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: BasicRandom.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: BasicRandom.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/CircularRange.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: CircularRange.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: CircularRange.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClosestPair2D.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClosestPair2D.cc 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: ClosestPair2D.cc 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequence.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequence.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: ClusterSequence.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    254254      // in a similar way.
    255255      if (_Rparam > pi) {
    256         // choose a value that ensures that back-to-back particles will
    257         // always recombine
    258         //_R2 = 4.0000000000001;
    259         _R2 = 2 * ( 3.0 + cos(_Rparam) );
     256        // choose a value that ensures that back-to-back particles will
     257        // always recombine
     258        //_R2 = 4.0000000000001;
     259        _R2 = 2 * ( 3.0 + cos(_Rparam) );
    260260      } else {
    261         _R2    = 2 * ( 1.0 - cos(_Rparam) );
     261        _R2    = 2 * ( 1.0 - cos(_Rparam) );
    262262      }
    263263      _invR2 = 1.0/_R2;
     
    439439  (*ostr) << "# for scientific work and optionally PLB641(2006)57 [hep-ph/0512210].   \n";
    440440  (*ostr) << "#                                                                       \n";
    441   (*ostr) << "# FastJet is provided without warranty under the terms of the GNU GPLv2.\n";
     441  (*ostr) << "# FastJet is provided without warranty under the GNU GPL v2 or higher.  \n";
    442442  (*ostr) << "# It uses T. Chan's closest pair algorithm, S. Fortune's Voronoi code";
    443443#ifndef DROP_CGAL
  • external/fastjet/ClusterSequence.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: ClusterSequence.hh 4354 2018-04-22 07:12:37Z salam $
     5// $Id: ClusterSequence.hh 4442 2020-05-05 07:50:11Z soyez $
    66//
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/ClusterSequence1GhostPassiveArea.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequence1GhostPassiveArea.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: ClusterSequence1GhostPassiveArea.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequence1GhostPassiveArea.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequence1GhostPassiveArea.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: ClusterSequence1GhostPassiveArea.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequenceActiveArea.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequenceActiveArea.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: ClusterSequenceActiveArea.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequenceActiveArea.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequenceActiveArea.hh 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: ClusterSequenceActiveArea.hh 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequenceActiveAreaExplicitGhosts.cc 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: ClusterSequenceActiveAreaExplicitGhosts.cc 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequenceActiveAreaExplicitGhosts.hh 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: ClusterSequenceActiveAreaExplicitGhosts.hh 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequenceArea.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequenceArea.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: ClusterSequenceArea.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2006-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2006-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequenceArea.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequenceArea.hh 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2006-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: ClusterSequenceArea.hh 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2006-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequenceAreaBase.cc

    ra3261d7 r13331dc  
    11
    22//FJSTARTHEADER
    3 // $Id: ClusterSequenceAreaBase.cc 4354 2018-04-22 07:12:37Z salam $
    4 //
    5 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     3// $Id: ClusterSequenceAreaBase.cc 4442 2020-05-05 07:50:11Z soyez $
     4//
     5// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    66//
    77//----------------------------------------------------------------------
  • external/fastjet/ClusterSequenceAreaBase.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequenceAreaBase.hh 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: ClusterSequenceAreaBase.hh 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequencePassiveArea.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequencePassiveArea.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: ClusterSequencePassiveArea.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequencePassiveArea.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequencePassiveArea.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: ClusterSequencePassiveArea.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequenceStructure.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequenceStructure.cc 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: ClusterSequenceStructure.cc 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequenceStructure.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequenceStructure.hh 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: ClusterSequenceStructure.hh 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequenceVoronoiArea.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequenceVoronoiArea.cc 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2006-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: ClusterSequenceVoronoiArea.cc 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2006-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequenceVoronoiArea.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequenceVoronoiArea.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: ClusterSequenceVoronoiArea.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequenceWithArea.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequenceWithArea.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: ClusterSequenceWithArea.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2006-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2006-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequence_CP2DChan.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequence_CP2DChan.cc 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: ClusterSequence_CP2DChan.cc 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequence_Delaunay.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequence_Delaunay.cc 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: ClusterSequence_Delaunay.cc 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequence_DumbN3.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequence_DumbN3.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: ClusterSequence_DumbN3.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequence_N2.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequence_N2.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: ClusterSequence_N2.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/ClusterSequence_TiledN2.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClusterSequence_TiledN2.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: ClusterSequence_TiledN2.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/CompositeJetStructure.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: CompositeJetStructure.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: CompositeJetStructure.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/CompositeJetStructure.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: CompositeJetStructure.hh 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: CompositeJetStructure.hh 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/Dnn2piCylinder.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: Dnn2piCylinder.cc 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: Dnn2piCylinder.cc 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/Dnn3piCylinder.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: Dnn3piCylinder.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: Dnn3piCylinder.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/Dnn4piCylinder.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: Dnn4piCylinder.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: Dnn4piCylinder.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/DnnPlane.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: DnnPlane.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: DnnPlane.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/Error.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: Error.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: Error.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/Error.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: Error.hh 4354 2018-04-22 07:12:37Z salam $
     5// $Id: Error.hh 4442 2020-05-05 07:50:11Z soyez $
    66//
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/FunctionOfPseudoJet.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: FunctionOfPseudoJet.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: FunctionOfPseudoJet.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/FunctionOfPseudoJet.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: FunctionOfPseudoJet.hh 4354 2018-04-22 07:12:37Z salam $
     5// $Id: FunctionOfPseudoJet.hh 4442 2020-05-05 07:50:11Z soyez $
    66//
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/GhostedAreaSpec.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: GhostedAreaSpec.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: GhostedAreaSpec.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/GhostedAreaSpec.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: GhostedAreaSpec.hh 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: GhostedAreaSpec.hh 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/JetDefinition.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: JetDefinition.cc 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: JetDefinition.cc 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/JetDefinition.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: JetDefinition.hh 4354 2018-04-22 07:12:37Z salam $
    6 //
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     5// $Id: JetDefinition.hh 4442 2020-05-05 07:50:11Z soyez $
     6//
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/LazyTiling25.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: LazyTiling25.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: LazyTiling25.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/LazyTiling9.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: LazyTiling9.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: LazyTiling9.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/LazyTiling9Alt.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: LazyTiling9Alt.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: LazyTiling9Alt.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/LazyTiling9SeparateGhosts.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: LazyTiling9SeparateGhosts.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: LazyTiling9SeparateGhosts.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/LimitedWarning.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: LimitedWarning.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: LimitedWarning.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/LimitedWarning.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: LimitedWarning.hh 4354 2018-04-22 07:12:37Z salam $
     5// $Id: LimitedWarning.hh 4442 2020-05-05 07:50:11Z soyez $
    66//
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/MinHeap.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: MinHeap.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: MinHeap.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    110110
    111111    // now compare current location to children (at 2*loc+1, 2*loc+2)
    112     ValueLoc * child = &(_heap[2*loc+1]);
     112    //ValueLoc * child = &(_heap[2*loc+1]);
     113    // GPS 2020-04-07: changed the way the following line
     114    //   is expressed, so as to work around issue reported by
     115    //   Andrii Verbyitskyi where compilation with gcc's
     116    //   -D_GLIBCXX_ASSERTIONS=1  -D_GLIBCXX_SANITIZE_VECTOR=1
     117    //   results in a crash because the compiler thinks we
     118    //   are accessing the vector at a location that is sometimes
     119    //   invalid, whereas we are just getting the address
     120    ValueLoc * child = &(_heap[0]) + (2*loc+1);
    113121    if (child < heap_end && child->minloc->value < here->minloc->value ) {
    114122      here->minloc = child->minloc;
  • external/fastjet/NNBase.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: NNBase.hh 4355 2018-04-22 15:38:54Z salam $
     5// $Id: NNBase.hh 4442 2020-05-05 07:50:11Z soyez $
    66//
    7 // Copyright (c) 2016-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2016-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/NNFJN2Plain.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: NNFJN2Plain.hh 4355 2018-04-22 15:38:54Z salam $
    6 //
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     5// $Id: NNFJN2Plain.hh 4442 2020-05-05 07:50:11Z soyez $
     6//
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/NNFJN2Tiled.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: NNFJN2Tiled.hh 4355 2018-04-22 15:38:54Z salam $
     5// $Id: NNFJN2Tiled.hh 4442 2020-05-05 07:50:11Z soyez $
    66//
    7 // Copyright (c) 2016-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2016-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/NNH.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: NNH.hh 4354 2018-04-22 07:12:37Z salam $
    6 //
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     5// $Id: NNH.hh 4442 2020-05-05 07:50:11Z soyez $
     6//
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/PseudoJet.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: PseudoJet.cc 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: PseudoJet.cc 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/PseudoJet.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: PseudoJet.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: PseudoJet.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/PseudoJetStructureBase.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: PseudoJetStructureBase.cc 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: PseudoJetStructureBase.cc 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/PseudoJetStructureBase.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: PseudoJetStructureBase.hh 4354 2018-04-22 07:12:37Z salam $
    6 //
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     5// $Id: PseudoJetStructureBase.hh 4442 2020-05-05 07:50:11Z soyez $
     6//
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/RangeDefinition.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: RangeDefinition.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: RangeDefinition.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/RangeDefinition.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: RangeDefinition.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: RangeDefinition.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/RectangularGrid.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: RectangularGrid.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: RectangularGrid.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/RectangularGrid.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: RectangularGrid.hh 4354 2018-04-22 07:12:37Z salam $
     5// $Id: RectangularGrid.hh 4442 2020-05-05 07:50:11Z soyez $
    66//
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/Selector.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: Selector.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: Selector.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/Selector.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: Selector.hh 4354 2018-04-22 07:12:37Z salam $
    6 //
    7 // Copyright (c) 2009-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     5// $Id: Selector.hh 4442 2020-05-05 07:50:11Z soyez $
     6//
     7// Copyright (c) 2009-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/SharedPtr.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: SharedPtr.hh 4354 2018-04-22 07:12:37Z salam $
    6 //
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     5// $Id: SharedPtr.hh 4442 2020-05-05 07:50:11Z soyez $
     6//
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/TilingExtent.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: TilingExtent.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: TilingExtent.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/Voronoi.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: Voronoi.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: Voronoi.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/WrappedStructure.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: WrappedStructure.hh 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: WrappedStructure.hh 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/config_auto.h

    ra3261d7 r13331dc  
    8787/* #undef HAVE_EXPLICIT_FOR_OPERATORS */
    8888
     89/* Define to 1 if you have the <gmp.h> header file. */
     90/* #undef HAVE_GMP_H */
     91
    8992/* compiler supports GNU c++ deprecated attribute */
    9093#ifndef FASTJET_HAVE_GNUCXX_DEPRECATED
     
    107110#endif
    108111
     112/* Define to 1 if you have the <mpfr.h> header file. */
     113/* #undef HAVE_MPFR_H */
     114
    109115/* compiler supports the "override" keyword */
    110116/* #undef HAVE_OVERRIDE */
     
    167173/* Define to the full name and version of this package. */
    168174#ifndef FASTJET_PACKAGE_STRING
    169 #define FASTJET_PACKAGE_STRING  "FastJet 3.3.2"
     175#define FASTJET_PACKAGE_STRING  "FastJet 3.3.4"
    170176#endif
    171177
     
    182188/* Define to the version of this package. */
    183189#ifndef FASTJET_PACKAGE_VERSION
    184 #define FASTJET_PACKAGE_VERSION  "3.3.2"
     190#define FASTJET_PACKAGE_VERSION  "3.3.4"
    185191#endif
    186192
     
    192198/* Version number of package */
    193199#ifndef FASTJET_VERSION
    194 #define FASTJET_VERSION  "3.3.2"
     200#define FASTJET_VERSION  "3.3.4"
    195201#endif
    196202
     
    207213/* Version of the package under the form XYYZZ (instead of X.Y.Z) */
    208214#ifndef FASTJET_VERSION_NUMBER
    209 #define FASTJET_VERSION_NUMBER  30302
     215#define FASTJET_VERSION_NUMBER  30304
    210216#endif
    211217
    212218/* Patch version of this package */
    213219#ifndef FASTJET_VERSION_PATCHLEVEL
    214 #define FASTJET_VERSION_PATCHLEVEL  2
     220#define FASTJET_VERSION_PATCHLEVEL  4
    215221#endif
    216222
  • external/fastjet/config_raw.h

    ra3261d7 r13331dc  
    5757/* #undef HAVE_EXPLICIT_FOR_OPERATORS */
    5858
     59/* Define to 1 if you have the <gmp.h> header file. */
     60/* #undef HAVE_GMP_H */
     61
    5962/* compiler supports GNU c++ deprecated attribute */
    6063#define HAVE_GNUCXX_DEPRECATED /**/
     
    6871/* Define to 1 if you have the <memory.h> header file. */
    6972#define HAVE_MEMORY_H 1
     73
     74/* Define to 1 if you have the <mpfr.h> header file. */
     75/* #undef HAVE_MPFR_H */
    7076
    7177/* compiler supports the "override" keyword */
     
    106112
    107113/* Define to the full name and version of this package. */
    108 #define PACKAGE_STRING "FastJet 3.3.2"
     114#define PACKAGE_STRING "FastJet 3.3.4"
    109115
    110116/* Define to the one symbol short name of this package. */
     
    115121
    116122/* Define to the version of this package. */
    117 #define PACKAGE_VERSION "3.3.2"
     123#define PACKAGE_VERSION "3.3.4"
    118124
    119125/* Define to 1 if you have the ANSI C header files. */
     
    121127
    122128/* Version number of package */
    123 #define VERSION "3.3.2"
     129#define VERSION "3.3.4"
    124130
    125131/* Major version of this package */
     
    130136
    131137/* Version of the package under the form XYYZZ (instead of X.Y.Z) */
    132 #define VERSION_NUMBER 30302
     138#define VERSION_NUMBER 30304
    133139
    134140/* Patch version of this package */
    135 #define VERSION_PATCHLEVEL 2
     141#define VERSION_PATCHLEVEL 4
    136142
    137143/* Pre-release version of this package */
  • external/fastjet/config_win.h

    ra3261d7 r13331dc  
    1 #define FASTJET_PACKAGE_STRING  "FastJet 3.3.2"
    2 #define FASTJET_PACKAGE_VERSION  "3.3.2"
    3 #define FASTJET_VERSION  "3.3.2"
     1#define FASTJET_PACKAGE_STRING  "FastJet 3.3.4"
     2#define FASTJET_PACKAGE_VERSION  "3.3.4"
     3#define FASTJET_VERSION  "3.3.4"
    44#define FASTJET_VERSION_MAJOR       3
    55#define FASTJET_VERSION_MINOR       3
    6 #define FASTJET_VERSION_PATCHLEVEL  2
    7 #define FASTJET_VERSION_NUMBER      30302
     6#define FASTJET_VERSION_PATCHLEVEL  4
     7#define FASTJET_VERSION_NUMBER      30304
    88
    99/* The ATLASCone plugin is disabled by default*/
  • external/fastjet/contribs/RecursiveTools/AUTHORS

    ra3261d7 r13331dc  
    2828   Recursive Soft Drop.
    2929   Frederic A. Dreyer, Lina Necib, Gregory Soyez, and Jesse Thaler
    30    arXiv:1804.03657
     30   JHEP 1806:093 (2018), arXiv:1804.03657
    3131   
  • external/fastjet/contribs/RecursiveTools/ChangeLog

    ra3261d7 r13331dc  
     12018-11-02  Jesse Thaler  <jthaler@jthaler.net>
     2
     3        * AUTHORS:  updated journal for RecursiveSoftDrop
     4
     52018-10-30  Gregory Soyez  <soyez@fastjet.fr>
     6
     7        * RecursiveSoftDrop.cc:
     8        fixed a few typos in comments
     9
     10        * RecursiveSoftDrop.hh:
     11        used the native FJ Recluster tool when available (did create
     12        conflicts in some cases)
     13
     142018-06-18  Jesse Thaler  <jthaler@jthaler.net>
     15
     16        * README
     17        Fixed incorrect order of zcut and beta in the README for SoftDrop example.
     18
    1192018-05-29  Jesse Thaler  <jthaler@jthaler.net>
    220
  • external/fastjet/contribs/RecursiveTools/NEWS

    ra3261d7 r13331dc  
     12020/03/03: release of version 2.0.0 with updated readme
     2
    132018/05/31: release of version 2.0.0-beta2 with corrected syntax
    24
  • external/fastjet/contribs/RecursiveTools/README

    ra3261d7 r13331dc  
    100100A default SoftDrop groomer can be created via:
    101101
     102   double beta  = 2.0;
    102103   double z_cut = 0.10;
    103    double beta  = 2.0;
    104104   double R0    = 1.0; // this is the default value
    105    SoftDrop sd(z_cut,beta,R0);
     105   SoftDrop sd(beta,z_cut,R0);
    106106
    107107and acts on a desired jet as
     
    137137further substructure is found (i.e. corresponds to taking N=infinity).
    138138
     139   double beta  = 2.0;
    139140   double z_cut = 0.10;
    140    double beta  = 2.0;
    141141   double R0    = 1.0; // this is the default value
    142142   int N        = -1; 
    143    RecursiveSoftDrop rsd(z_cut, beta, N, R0);
     143   RecursiveSoftDrop rsd(beta, z_cut, N, R0);
    144144
    145145One then acts on a jet as
     
    217217not met, only the hardest of the two objects is kept for further
    218218clustering and the softest is rejected.
     219
     220BottomUpSoftDrop takes the same arguments as SoftDrop, and a groomer
     221can be created with:
     222
     223   double beta  = 2.0;
     224   double z_cut = 0.10;
     225   double R0    = 1.0; // this is the default value
     226   BottomUpSoftDrop busd(beta,z_cut,R0);
     227
     228One then acts on a jet as
     229
     230   PseudoJet groomed_jet = busd(jet)
    219231
    220232------------------------------------------------------------------------
  • external/fastjet/contribs/RecursiveTools/RecursiveSoftDrop.cc

    ra3261d7 r13331dc  
    1 // $Id: RecursiveSoftDrop.cc 1111 2018-04-04 10:06:11Z gsoyez $
     1// $Id: RecursiveSoftDrop.cc 1192 2018-10-30 16:08:36Z gsoyez $
    22//
    33// Copyright (c) 2017-, Gavin P. Salam, Gregory Soyez, Jesse Thaler,
     
    148148  const vector<PseudoJet> &cs_jets = cs->jets();
    149149
    150   // initialize counter to 1 subjet (i.e. the full ca_jet)
     150  // initialise counter to 1 subjet (i.e. the full ca_jet)
    151151  int n_tagged = 0;
    152152  int max_njet = ca_jet.constituents().size();
     
    163163 
    164164  // create a priority queue containing the subjets and a comparison definition
    165   // initialise to the full ca_jet
    166165  priority_queue<internal_recursive_softdrop::RSDHistoryElement*, vector<internal_recursive_softdrop::RSDHistoryElement*>, internal_recursive_softdrop::OrderRSDHistoryElements> active_branches;
    167166  active_branches.push(& (history[0]));
     
    169168  PseudoJet parent, piece1, piece2;
    170169  double sym, mu2;
    171 
    172   // which R0 to use
    173   //double R0sqr = _R0sqr;
    174170 
    175171  // loop over C/A tree until we reach the appropriate number of subjets
    176172  while ((continue_grooming(n_tagged)) && (active_branches.size())) {
    177     // get the element corresponding to the max dR
    178     // and the associated PJ
     173    // get the element corresponding to the max dR and the associated PJ
    179174    internal_recursive_softdrop::RSDHistoryElement * elm = active_branches.top();
    180175    PseudoJet parent = cs_jets[cs_history[elm->current_in_ca_tree].jetp_index];
     
    217212      active_branches.pop();
    218213      // tagging failed and the softest branch should be dropped
    219       // keep track of what has een groomed away
     214      // keep track of what has been groomed away
    220215      max_njet -= piece2.constituents().size();
    221216      elm->dropped_delta_R .push_back((elm->theta_squared >= 0) ? sqrt(elm->theta_squared) : -sqrt(elm->theta_squared));
     
    223218      elm->dropped_mu      .push_back((mu2>=0) ? sqrt(mu2) : -sqrt(mu2));
    224219     
    225       // keep the hardest bhanch in the recursion
     220      // keep the hardest branch in the recursion
    226221      elm->reset(piece1, this);
    227222      active_branches.push(elm);
     
    256251    const internal_recursive_softdrop::RSDHistoryElement & elm = history[history_index];
    257252
    258     // two kinds of events: either just a final leave, poteitially with grooming
     253    // two kinds of events: either just a final leave, potentially with grooming
    259254    // or a brandhing (also with potential grooming at the end)
    260255    if (elm.child1_in_history<0){
    261       // this is a leaf, i.e. with no further sustructure
     256      // this is a leaf, i.e. with no further substructure
    262257      PseudoJet & subjet = mapped_to_history[history_index]
    263258        = cs_jets[cs_history[elm.current_in_ca_tree].jetp_index];
     
    303298  const vector<PseudoJet> &cs_jets = cs->jets();
    304299
    305   // initialize counter to 1 subjet (i.e. the full ca_jet)
     300  // initialise counter to 1 subjet (i.e. the full ca_jet)
    306301  int n_depth = 0;
    307302  int max_njet = ca_jet.constituents().size();
     
    319314 
    320315  // create a priority queue containing the subjets and a comparison definition
    321   // initialize counter to 1 subjet (i.e. the full ca_jet)
    322316  list<internal_recursive_softdrop::RSDHistoryElement*> active_branches;
    323317  active_branches.push_back(& (history[0]));
     
    329323    list<internal_recursive_softdrop::RSDHistoryElement*>::iterator hist_it=active_branches.begin();
    330324    while (hist_it!=active_branches.end()){
    331       // get the element corresponding to the max dR
    332       // and the associated PJ
     325      // get the element corresponding to the max dR and the associated PJ
    333326      internal_recursive_softdrop::RSDHistoryElement * elm = (*hist_it);
    334327      PseudoJet parent = cs_jets[cs_history[elm->current_in_ca_tree].jetp_index];
  • external/fastjet/contribs/RecursiveTools/RecursiveSoftDrop.hh

    ra3261d7 r13331dc  
    1 // $Id: RecursiveSoftDrop.hh 1082 2017-10-10 12:00:13Z gsoyez $
     1// $Id: RecursiveSoftDrop.hh 1192 2018-10-30 16:08:36Z gsoyez $
    22//
    33// Copyright (c) 2014-, Gavin P. Salam, Gregory Soyez, Jesse Thaler,
     
    2424#define __RECURSIVESOFTDROP_HH__
    2525
     26// we'll use the native FJ class for reculstering if available
     27#if FASTJET_VERSION_NUMBER >= 30100
     28#include "fastjet/tools/Recluster.hh"
     29#else
    2630#include "Recluster.hh"
     31#endif
    2732#include "SoftDrop.hh"
    2833#include "fastjet/WrappedStructure.hh"
  • external/fastjet/internal/ClosestPair2D.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClosestPair2D.hh 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: ClosestPair2D.hh 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/internal/ClosestPair2DBase.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ClosestPair2DBase.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: ClosestPair2DBase.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/internal/ClusterSequence_N2.icc

    ra3261d7 r13331dc  
    77// $Id: ClusterSequence_N2.cc 1351 2009-01-09 18:03:03Z salam $
    88//
    9 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     9// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    1010//
    1111//----------------------------------------------------------------------
  • external/fastjet/internal/Dnn2piCylinder.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: Dnn2piCylinder.hh 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: Dnn2piCylinder.hh 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/internal/Dnn3piCylinder.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: Dnn3piCylinder.hh 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: Dnn3piCylinder.hh 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/internal/Dnn4piCylinder.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: Dnn4piCylinder.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: Dnn4piCylinder.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/internal/DnnPlane.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: DnnPlane.hh 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: DnnPlane.hh 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/internal/DynamicNearestNeighbours.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: DynamicNearestNeighbours.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: DynamicNearestNeighbours.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/internal/IsBase.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: IsBase.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: IsBase.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/internal/LazyTiling25.hh

    ra3261d7 r13331dc  
    55
    66//FJSTARTHEADER
    7 // $Id: LazyTiling25.hh 4354 2018-04-22 07:12:37Z salam $
     7// $Id: LazyTiling25.hh 4442 2020-05-05 07:50:11Z soyez $
    88//
    9 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     9// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    1010//
    1111//----------------------------------------------------------------------
  • external/fastjet/internal/LazyTiling9.hh

    ra3261d7 r13331dc  
    55
    66//FJSTARTHEADER
    7 // $Id: LazyTiling9.hh 4354 2018-04-22 07:12:37Z salam $
    8 //
    9 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// $Id: LazyTiling9.hh 4442 2020-05-05 07:50:11Z soyez $
     8//
     9// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    1010//
    1111//----------------------------------------------------------------------
  • external/fastjet/internal/LazyTiling9Alt.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: LazyTiling9Alt.hh 4354 2018-04-22 07:12:37Z salam $
    6 //
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     5// $Id: LazyTiling9Alt.hh 4442 2020-05-05 07:50:11Z soyez $
     6//
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/internal/LazyTiling9SeparateGhosts.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: LazyTiling9SeparateGhosts.hh 4354 2018-04-22 07:12:37Z salam $
     5// $Id: LazyTiling9SeparateGhosts.hh 4442 2020-05-05 07:50:11Z soyez $
    66//
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/internal/LimitedWarning.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: LimitedWarning.hh 4354 2018-04-22 07:12:37Z salam $
     5// $Id: LimitedWarning.hh 4442 2020-05-05 07:50:11Z soyez $
    66//
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/internal/MinHeap.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: MinHeap.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: MinHeap.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/internal/SearchTree.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: SearchTree.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: SearchTree.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/internal/TilingExtent.hh

    ra3261d7 r13331dc  
    55
    66//FJSTARTHEADER
    7 // $Id: TilingExtent.hh 4354 2018-04-22 07:12:37Z salam $
     7// $Id: TilingExtent.hh 4442 2020-05-05 07:50:11Z soyez $
    88//
    9 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     9// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    1010//
    1111//----------------------------------------------------------------------
  • external/fastjet/internal/Triangulation.hh

    ra3261d7 r13331dc  
    44
    55//FJSTARTHEADER
    6 // $Id: Triangulation.hh 4354 2018-04-22 07:12:37Z salam $
     6// $Id: Triangulation.hh 4442 2020-05-05 07:50:11Z soyez $
    77//
    8 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     8// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    99//
    1010//----------------------------------------------------------------------
  • external/fastjet/internal/Voronoi.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: Voronoi.hh 4354 2018-04-22 07:12:37Z salam $
    6 //
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     5// $Id: Voronoi.hh 4442 2020-05-05 07:50:11Z soyez $
     6//
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/internal/base.hh

    ra3261d7 r13331dc  
    11
    22//FJSTARTHEADER
    3 // $Id: base.hh 4354 2018-04-22 07:12:37Z salam $
     3// $Id: base.hh 4442 2020-05-05 07:50:11Z soyez $
    44//
    5 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     5// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    66//
    77//----------------------------------------------------------------------
  • external/fastjet/internal/deprecated.hh

    ra3261d7 r13331dc  
    11
    22//FJSTARTHEADER
    3 // $Id: deprecated.hh 4354 2018-04-22 07:12:37Z salam $
     3// $Id: deprecated.hh 4442 2020-05-05 07:50:11Z soyez $
    44//
    5 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     5// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    66//
    77//----------------------------------------------------------------------
     
    3939// define a deprecation macro based on the capabilities of the compiler
    4040// (as determined at configure time).
    41 #if defined(FASTJET_HAVE_CXX14_DEPRECATED) and (!defined(__FJCORE__))
     41#if defined(FASTJET_HAVE_CXX14_DEPRECATED) && (!defined(__FJCORE__))
    4242#define FASTJET_DEPRECATED               [[deprecated]]
    4343#define FASTJET_DEPRECATED_MSG(message)  [[deprecated(message)]]
  • external/fastjet/internal/numconsts.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: numconsts.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: numconsts.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/plugins/ATLASCone/ATLASConePlugin.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ATLASConePlugin.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: ATLASConePlugin.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2007-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2007-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/plugins/ATLASCone/fastjet/ATLASConePlugin.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: ATLASConePlugin.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: ATLASConePlugin.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2007-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2007-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/plugins/CDFCones/CDFJetCluPlugin.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: CDFJetCluPlugin.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: CDFJetCluPlugin.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/plugins/CDFCones/CDFMidPointPlugin.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: CDFMidPointPlugin.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: CDFMidPointPlugin.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/plugins/CDFCones/fastjet/CDFJetCluPlugin.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: CDFJetCluPlugin.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: CDFJetCluPlugin.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/plugins/CDFCones/fastjet/CDFMidPointPlugin.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: CDFMidPointPlugin.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: CDFMidPointPlugin.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.cc

    ra3261d7 r13331dc  
    22// $Id: CMSIterativeConePlugin.cc 1504 2009-04-10 13:39:48Z salam $
    33//
    4 // Copyright (c) 2007-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2007-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/plugins/CMSIterativeCone/fastjet/CMSIterativeConePlugin.hh

    ra3261d7 r13331dc  
    22// $Id: CMSIterativeConePlugin.hh 1508 2009-04-10 22:46:49Z soyez $
    33//
    4 // Copyright (c) 2007-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2007-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.cc

    ra3261d7 r13331dc  
    22// $Id: D0RunIBaseConePlugin.cc 1779 2010-10-25 10:32:59Z soyez $
    33//
    4 // Copyright (c) 2009-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2009-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/plugins/D0RunICone/fastjet/D0RunIBaseConePlugin.hh

    ra3261d7 r13331dc  
    55// $Id: D0RunIBaseConePlugin.hh 1778 2010-10-25 10:02:58Z soyez $
    66//
    7 // Copyright (c) 2009-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2009-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/plugins/D0RunICone/fastjet/D0RunIConePlugin.hh

    ra3261d7 r13331dc  
    55// $Id: D0RunIConePlugin.hh 1778 2010-10-25 10:02:58Z soyez $
    66//
    7 // Copyright (c) 2009-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2009-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/plugins/D0RunICone/fastjet/D0RunIpre96ConePlugin.hh

    ra3261d7 r13331dc  
    55// $Id: D0RunIpre96ConePlugin.hh 1778 2010-10-25 10:02:58Z soyez $
    66//
    7 // Copyright (c) 2009-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2009-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: D0RunIIConePlugin.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: D0RunIIConePlugin.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/plugins/D0RunIICone/fastjet/D0RunIIConePlugin.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: D0RunIIConePlugin.hh 4354 2018-04-22 07:12:37Z salam $
     5// $Id: D0RunIIConePlugin.hh 4442 2020-05-05 07:50:11Z soyez $
    66//
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/plugins/EECambridge/EECambridgePlugin.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: EECambridgePlugin.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: EECambridgePlugin.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2007-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2007-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/plugins/EECambridge/fastjet/EECambridgePlugin.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: EECambridgePlugin.hh 4354 2018-04-22 07:12:37Z salam $
     5// $Id: EECambridgePlugin.hh 4442 2020-05-05 07:50:11Z soyez $
    66//
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/plugins/GridJet/GridJetPlugin.cc

    ra3261d7 r13331dc  
    22// $Id: GridJetPlugin.cc 2268 2011-06-20 15:12:26Z salam $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/plugins/GridJet/fastjet/GridJetPlugin.hh

    ra3261d7 r13331dc  
    55// $Id: GridJetPlugin.hh 2267 2011-06-20 15:10:23Z salam $
    66//
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/plugins/Jade/JadePlugin.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: JadePlugin.cc 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2007-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: JadePlugin.cc 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2007-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    108108    // get a number that is almost the same as max(), just a little
    109109    // smaller so as to ensure that when we divide it by rt2E and then
    110     // multiply it again, we won't get an overflow
     110    // multiply it again, we won't get an overflow.
     111    // Watch out for cases where rt2E < 1.0 (cf. bug fix from
     112    // andrii.verbytskyi@mpp.mpg.de on 2019-02-14)
    111113    const double almost_max = numeric_limits<double>::max() * (1 - 1e-13);
    112     return almost_max / rt2E;
     114    if (rt2E>1.0) return almost_max / rt2E;
     115    else          return almost_max;
    113116  }
    114117 
  • external/fastjet/plugins/Jade/fastjet/JadePlugin.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: JadePlugin.hh 4354 2018-04-22 07:12:37Z salam $
     5// $Id: JadePlugin.hh 4442 2020-05-05 07:50:11Z soyez $
    66//
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/plugins/NestedDefs/NestedDefsPlugin.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: NestedDefsPlugin.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: NestedDefsPlugin.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2007-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2007-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/plugins/NestedDefs/fastjet/NestedDefsPlugin.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: NestedDefsPlugin.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: NestedDefsPlugin.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2007-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2007-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/plugins/SISCone/AUTHORS

    ra3261d7 r13331dc  
    66             France
    77
    8          (2) PH-TH, CERN, CH-1211 Geneva 23, Switzerland;
     8         (2) Rudolf Peierls Centre for Theoretical Physics, Parks Road, Oxford OX1 3PU, UK;
     9             PH-TH, CERN, CH-1211 Geneva 23, Switzerland;
    910             LPTHE, UPMC (Univ. Paris 6), 75252 Paris cedex 05, France.
    1011
    11 phone  : +33 69 08 40 11
    12          +41 22 767 2462
    13 
    1412email  : soyez@fastjet.fr
    15          gavin.salam@cern.ch
     13         gavin.salam@physics.ox.ac.uk
  • external/fastjet/plugins/SISCone/config.h

    ra3261d7 r13331dc  
    8383/* Define to the full name and version of this package. */
    8484#ifndef SISCONE_PACKAGE_STRING
    85 #define SISCONE_PACKAGE_STRING  "SISCone 3.0.4"
     85#define SISCONE_PACKAGE_STRING  "SISCone 3.0.5"
    8686#endif
    8787
     
    9898/* Define to the version of this package. */
    9999#ifndef SISCONE_PACKAGE_VERSION
    100 #define SISCONE_PACKAGE_VERSION  "3.0.4"
     100#define SISCONE_PACKAGE_VERSION  "3.0.5"
    101101#endif
    102102
     
    111111/* Version number of package */
    112112#ifndef SISCONE_VERSION
    113 #define SISCONE_VERSION  "3.0.4"
     113#define SISCONE_VERSION  "3.0.5"
    114114#endif
    115115 
  • external/fastjet/plugins/SISCone/config_raw.h

    ra3261d7 r13331dc  
    4848
    4949/* Define to the full name and version of this package. */
    50 #define PACKAGE_STRING "SISCone 3.0.4"
     50#define PACKAGE_STRING "SISCone 3.0.5"
    5151
    5252/* Define to the one symbol short name of this package. */
     
    5757
    5858/* Define to the version of this package. */
    59 #define PACKAGE_VERSION "3.0.4"
     59#define PACKAGE_VERSION "3.0.5"
    6060
    6161/* Define to 1 if you have the ANSI C header files. */
     
    6666
    6767/* Version number of package */
    68 #define VERSION "3.0.4"
     68#define VERSION "3.0.5"
  • external/fastjet/plugins/SISCone/geom_2d.h

    ra3261d7 r13331dc  
    2222// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2323//                                                                           //
    24 // $Revision:: 268                                                          $//
    25 // $Date:: 2009-03-12 21:24:16 +0100 (Thu, 12 Mar 2009)                     $//
     24// $Revision:: 422                                                          $//
     25// $Date:: 2020-04-22 11:51:09 +0200 (Wed, 22 Apr 2020)                     $//
    2626///////////////////////////////////////////////////////////////////////////////
    2727
     
    153153  /// return the cell index corrsponding to an eta value
    154154  inline unsigned int get_eta_cell(double eta){
    155     return (unsigned int) (1 << ((int) (32*((eta-eta_min)/(eta_max-eta_min)))));
     155    return (unsigned int) (1u << ((int) (32*((eta-eta_min)/(eta_max-eta_min)))));
    156156  }
    157157
    158158  /// return the cell index corrsponding to a phi value
    159159  inline unsigned int get_phi_cell(double phi){
    160     return (unsigned int) (1 << ((int) (32*phi/twopi+16)%32));
     160    return (unsigned int) (1u << ((int) (32*phi/twopi+16)%32));
    161161  }
    162162};
  • external/fastjet/plugins/TrackJet/TrackJetPlugin.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: TrackJetPlugin.cc 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2007-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: TrackJetPlugin.cc 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2007-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/plugins/TrackJet/fastjet/TrackJetPlugin.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: TrackJetPlugin.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: TrackJetPlugin.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2007-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2007-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/tools/BackgroundEstimatorBase.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: BackgroundEstimatorBase.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: BackgroundEstimatorBase.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/tools/BackgroundEstimatorBase.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: BackgroundEstimatorBase.hh 4354 2018-04-22 07:12:37Z salam $
    6 //
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     5// $Id: BackgroundEstimatorBase.hh 4442 2020-05-05 07:50:11Z soyez $
     6//
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/tools/Boost.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: Boost.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: Boost.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/tools/CASubJetTagger.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: CASubJetTagger.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: CASubJetTagger.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/tools/CASubJetTagger.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: CASubJetTagger.hh 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: CASubJetTagger.hh 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/tools/Filter.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: Filter.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: Filter.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/tools/Filter.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: Filter.hh 4354 2018-04-22 07:12:37Z salam $
    6 //
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     5// $Id: Filter.hh 4442 2020-05-05 07:50:11Z soyez $
     6//
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/tools/GridMedianBackgroundEstimator.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: GridMedianBackgroundEstimator.cc 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: GridMedianBackgroundEstimator.cc 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/tools/GridMedianBackgroundEstimator.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: GridMedianBackgroundEstimator.hh 4354 2018-04-22 07:12:37Z salam $
    6 //
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     5// $Id: GridMedianBackgroundEstimator.hh 4442 2020-05-05 07:50:11Z soyez $
     6//
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/tools/JHTopTagger.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: JHTopTagger.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: JHTopTagger.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/tools/JHTopTagger.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: JHTopTagger.hh 4354 2018-04-22 07:12:37Z salam $
    6 //
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     5// $Id: JHTopTagger.hh 4442 2020-05-05 07:50:11Z soyez $
     6//
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/tools/JetMedianBackgroundEstimator.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: JetMedianBackgroundEstimator.cc 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: JetMedianBackgroundEstimator.cc 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/tools/JetMedianBackgroundEstimator.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: JetMedianBackgroundEstimator.hh 4354 2018-04-22 07:12:37Z salam $
     5// $Id: JetMedianBackgroundEstimator.hh 4442 2020-05-05 07:50:11Z soyez $
    66//
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/tools/MassDropTagger.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: MassDropTagger.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: MassDropTagger.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/tools/MassDropTagger.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: MassDropTagger.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: MassDropTagger.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/tools/Pruner.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: Pruner.cc 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: Pruner.cc 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/tools/Pruner.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: Pruner.hh 4354 2018-04-22 07:12:37Z salam $
    6 //
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     5// $Id: Pruner.hh 4442 2020-05-05 07:50:11Z soyez $
     6//
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/tools/RestFrameNSubjettinessTagger.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: RestFrameNSubjettinessTagger.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: RestFrameNSubjettinessTagger.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/tools/RestFrameNSubjettinessTagger.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: RestFrameNSubjettinessTagger.hh 4354 2018-04-22 07:12:37Z salam $
     5// $Id: RestFrameNSubjettinessTagger.hh 4442 2020-05-05 07:50:11Z soyez $
    66//
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/tools/Subtractor.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: Subtractor.cc 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: Subtractor.cc 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/tools/Subtractor.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: Subtractor.hh 4354 2018-04-22 07:12:37Z salam $
    3 //
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2// $Id: Subtractor.hh 4442 2020-05-05 07:50:11Z soyez $
     3//
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/tools/TopTaggerBase.cc

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: TopTaggerBase.cc 4354 2018-04-22 07:12:37Z salam $
     2// $Id: TopTaggerBase.cc 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/tools/TopTaggerBase.hh

    ra3261d7 r13331dc  
    33
    44//FJSTARTHEADER
    5 // $Id: TopTaggerBase.hh 4354 2018-04-22 07:12:37Z salam $
     5// $Id: TopTaggerBase.hh 4442 2020-05-05 07:50:11Z soyez $
    66//
    7 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
  • external/fastjet/tools/Transformer.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: Transformer.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: Transformer.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • external/fastjet/version.hh

    ra3261d7 r13331dc  
    11//FJSTARTHEADER
    2 // $Id: version.hh 4354 2018-04-22 07:12:37Z salam $
     2// $Id: version.hh 4442 2020-05-05 07:50:11Z soyez $
    33//
    4 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2020, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
  • modules/AngularSmearing.cc

    ra3261d7 r13331dc  
    9898{
    9999  Candidate *candidate, *mother;
    100   Double_t pt, eta, phi, e;
     100  Double_t pt, eta, phi, e, m;
    101101
    102102  fItInputArray->Reset();
    103103  while((candidate = static_cast<Candidate *>(fItInputArray->Next())))
    104104  {
    105     const TLorentzVector &candidatePosition = candidate->Position;
    106105    const TLorentzVector &candidateMomentum = candidate->Momentum;
    107     eta = candidatePosition.Eta();
    108     phi = candidatePosition.Phi();
     106    eta = candidateMomentum.Eta();
     107    phi = candidateMomentum.Phi();
    109108    pt = candidateMomentum.Pt();
    110109    e = candidateMomentum.E();
     110    m = candidateMomentum.M();
    111111
    112112    // apply smearing formula for eta,phi
    113 
    114113    eta = gRandom->Gaus(eta, fFormulaEta->Eval(pt, eta, phi, e, candidate));
    115114    phi = gRandom->Gaus(phi, fFormulaPhi->Eval(pt, eta, phi, e, candidate));
     
    119118    mother = candidate;
    120119    candidate = static_cast<Candidate *>(candidate->Clone());
    121     eta = candidateMomentum.Eta();
    122     phi = candidateMomentum.Phi();
    123     candidate->Momentum.SetPtEtaPhiE(pt, eta, phi, pt * TMath::CosH(eta));
     120    candidate->Momentum.SetPtEtaPhiM(pt, eta, phi, m);
    124121    candidate->AddCandidate(mother);
    125122
  • modules/Calorimeter.cc

    ra3261d7 r13331dc  
    231231  fItParticleInputArray->Reset();
    232232  number = -1;
     233  fTowerRmax=0.;
    233234  while((particle = static_cast<Candidate *>(fItParticleInputArray->Next())))
    234235  {
    235236    const TLorentzVector &particlePosition = particle->Position;
    236237    ++number;
     238
     239    // compute maximum radius (needed in FinalizeTower to assess whether barrel or endcap tower)
     240    if (particlePosition.Perp() > fTowerRmax)
     241      fTowerRmax=particlePosition.Perp();
    237242
    238243    pdgCode = TMath::Abs(particle->PID);
     
    450455
    451456    fTower->AddCandidate(particle);
     457    fTower->Position = position;
    452458  }
    453459
     
    461467{
    462468  Candidate *track, *tower, *mother;
    463   Double_t energy, pt, eta, phi;
     469  Double_t energy, pt, eta, phi, r;
    464470  Double_t ecalEnergy, hcalEnergy;
    465471  Double_t ecalNeutralEnergy, hcalNeutralEnergy;
     
    511517  for(size_t i = 0; i < fTower->ECalEnergyTimePairs.size(); ++i)
    512518  {
    513     weight = TMath::Sqrt(fTower->ECalEnergyTimePairs[i].first);
     519    weight = TMath::Power((fTower->ECalEnergyTimePairs[i].first),2);
    514520    sumWeightedTime += weight * fTower->ECalEnergyTimePairs[i].second;
    515521    sumWeight += weight;
     
    517523  }
    518524
     525  // check whether barrel or endcap tower
     526  if (fTower->Position.Perp() < fTowerRmax && TMath::Abs(eta) > 0.)
     527    r = fTower->Position.Z()/TMath::SinH(eta);
     528  else
     529    r = fTower->Position.Pt();
     530
    519531  if(sumWeight > 0.0)
    520532  {
    521     fTower->Position.SetPtEtaPhiE(1.0, eta, phi, sumWeightedTime / sumWeight);
     533    fTower->Position.SetPtEtaPhiE(r, eta, phi, sumWeightedTime / sumWeight);
    522534  }
    523535  else
    524536  {
    525     fTower->Position.SetPtEtaPhiE(1.0, eta, phi, 999999.9);
     537    fTower->Position.SetPtEtaPhiE(r, eta, phi, 999999.9);
    526538  }
    527539
     
    559571  if(ecalNeutralEnergy > fECalEnergyMin && ecalNeutralSigma > fECalEnergySignificanceMin)
    560572  {
    561     // create new photon tower
     573    // create new photon tower assuming null mass
    562574    tower = static_cast<Candidate *>(fTower->Clone());
    563575    pt = ecalNeutralEnergy / TMath::CosH(eta);
     
    646658      track = static_cast<Candidate *>(track->Clone());
    647659      track->AddCandidate(mother);
    648 
    649660      track->Momentum *= rescaleFactor;
     661      track->Momentum.SetPtEtaPhiM(track->Momentum.Pt()*rescaleFactor, track->Momentum.Eta(), track->Momentum.Phi(), track->Momentum.M());
    650662
    651663      fEFlowTrackOutputArray->Add(track);
  • modules/Calorimeter.h

    ra3261d7 r13331dc  
    6060  Double_t fTimingEnergyMin;
    6161  Bool_t fElectronsFromTrack;
     62  Double_t fTowerRmax;
    6263
    6364  Int_t fTowerTrackHits, fTowerPhotonHits;
  • modules/DenseTrackFilter.cc

    ra3261d7 r13331dc  
    237237
    238238  Candidate *candidate, *track;
    239   Double_t pt, eta, phi;
     239  Double_t pt, eta, phi, m;
    240240  Int_t numberOfCandidates;
    241241
     
    251251  eta = candidate->Momentum.Eta();
    252252  phi = candidate->Momentum.Phi();
     253  m = candidate->Momentum.M();
     254
    253255  eta = gRandom->Gaus(eta, fEtaPhiRes);
    254256  phi = gRandom->Gaus(phi, fEtaPhiRes);
    255   candidate->Momentum.SetPtEtaPhiE(pt, eta, phi, pt * TMath::CosH(eta));
     257  candidate->Momentum.SetPtEtaPhiM(pt, eta, phi, m);
    256258  candidate->AddCandidate(track);
    257259
  • modules/DualReadoutCalorimeter.cc

    ra3261d7 r13331dc  
    2424  // This implementation of dual calorimetry relies on several approximations:
    2525  // - If hadronic energy is found in the tower the energy resolution then the full tower enrgy is smeared according to hadronic resolution (pessimistic for (e,n) or (pi+,gamma))
    26   // - While e+ vs pi+ (or gamma vs n) separation is in principle possible for single particles (using C/S, PMT timing, lateral shower profile) it is not obvious it can be done overlapping particles. 
     26  // - While e+ vs pi+ (or gamma vs n) separation is in principle possible for single particles (using C/S, PMT timing, lateral shower profile) it is not obvious it can be done overlapping particles.
    2727  //   Now we assume that regarless of the number of particle hits per tower we can always distinguish e+ vs pi+, which is probably not true in the case (e+,n) vs (pi+,gamma) without longitudinal segmentation.
    2828
     
    6363  fItParticleInputArray(0), fItTrackInputArray(0)
    6464{
    65  
     65
    6666  fECalResolutionFormula = new DelphesFormula;
    6767  fHCalResolutionFormula = new DelphesFormula;
     
    7575  fTowerTrackArray = new TObjArray;
    7676  fItTowerTrackArray = fTowerTrackArray->MakeIterator();
    77  
     77
    7878}
    7979
     
    8282DualReadoutCalorimeter::~DualReadoutCalorimeter()
    8383{
    84  
     84
    8585  if(fECalResolutionFormula) delete fECalResolutionFormula;
    8686  if(fHCalResolutionFormula) delete fHCalResolutionFormula;
     
    9494  if(fTowerTrackArray) delete fTowerTrackArray;
    9595  if(fItTowerTrackArray) delete fItTowerTrackArray;
    96  
     96
    9797}
    9898
     
    247247  fItParticleInputArray->Reset();
    248248  number = -1;
     249  fTowerRmax=0.;
    249250  while((particle = static_cast<Candidate*>(fItParticleInputArray->Next())))
    250251  {
    251252    const TLorentzVector &particlePosition = particle->Position;
    252253    ++number;
     254
     255    // compute maximum radius (needed in FinalizeTower to assess whether barrel or endcap tower)
     256    if (particlePosition.Perp() > fTowerRmax)
     257      fTowerRmax=particlePosition.Perp();
    253258
    254259    pdgCode = TMath::Abs(particle->PID);
     
    379384      fHCalTrackEnergy = 0.0;
    380385      fTrackEnergy = 0.0;
    381      
     386
    382387      fECalTrackSigma = 0.0;
    383388      fHCalTrackSigma = 0.0;
    384389      fTrackSigma = 0.0;
    385      
     390
    386391      fTowerTrackHits = 0;
    387392      fTowerPhotonHits = 0;
     
    390395      fHCalTowerTrackArray->Clear();
    391396      fTowerTrackArray->Clear();
    392    
     397
    393398    }
    394399
     
    414419      }
    415420
    416      
    417       /*
    418       if(fECalTrackFractions[number] > 1.0E-9 && fHCalTrackFractions[number] < 1.0E-9)
    419       {
    420         fECalTrackEnergy += ecalEnergy;
    421         ecalSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, momentum.E());       
    422         if(ecalSigma/momentum.E() < track->TrackResolution) energyGuess = ecalEnergy;       
    423         else energyGuess = momentum.E();
    424 
    425         fECalTrackSigma += (track->TrackResolution)*energyGuess*(track->TrackResolution)*energyGuess;
    426         fECalTowerTrackArray->Add(track);
    427       }
    428      
    429       else if(fECalTrackFractions[number] < 1.0E-9 && fHCalTrackFractions[number] > 1.0E-9)
    430       {
    431         fHCalTrackEnergy += hcalEnergy;
    432         hcalSigma = fHCalResolutionFormula->Eval(0.0, fTowerEta, 0.0, momentum.E());
    433         if(hcalSigma/momentum.E() < track->TrackResolution) energyGuess = hcalEnergy;
    434         else energyGuess = momentum.E();
    435 
    436         fHCalTrackSigma += (track->TrackResolution)*energyGuess*(track->TrackResolution)*energyGuess;
    437         fHCalTowerTrackArray->Add(track);
    438       }
    439      
    440       // muons
    441       else if(fECalTrackFractions[number] < 1.0E-9 && fHCalTrackFractions[number] < 1.0E-9)
    442       {
    443         fEFlowTrackOutputArray->Add(track);
    444       }
    445       */
    446      
     421
    447422      // in Dual Readout we do not care if tracks are ECAL of HCAL
    448423      if(fECalTrackFractions[number] > 1.0E-9 || fHCalTrackFractions[number] > 1.0E-9)
    449       { 
     424      {
    450425        fTrackEnergy += energy;
    451         // this sigma will be used to determine whether neutral excess is significant. We choose the resolution according to bthe higest deposited fraction (in practice had for charged hadrons and em for electrons)     
     426        // this sigma will be used to determine whether neutral excess is significant. We choose the resolution according to bthe higest deposited fraction (in practice had for charged hadrons and em for electrons)
    452427        sigma = 0.0;
    453428        if(fHCalTrackFractions[number] > 0)
     
    455430        else
    456431          sigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, momentum.E());
    457          
    458         if(sigma/momentum.E() < track->TrackResolution) 
    459           energyGuess = ecalEnergy + hcalEnergy;     
     432
     433        if(sigma/momentum.E() < track->TrackResolution)
     434          energyGuess = ecalEnergy + hcalEnergy;
    460435        else
    461436          energyGuess = momentum.E();
    462              
     437
    463438        fTrackSigma += (track->TrackResolution)*energyGuess*(track->TrackResolution)*energyGuess;
    464439        fTowerTrackArray->Add(track);
    465      
     440
    466441      }
    467442      else
     
    496471
    497472    fTower->AddCandidate(particle);
     473    fTower->Position = position;
    498474  }
    499475
     
    508484
    509485  Candidate *track, *tower, *mother;
    510   Double_t energy, pt, eta, phi;
     486  Double_t energy, pt, eta, phi, r;
    511487  Double_t ecalEnergy, hcalEnergy;
    512488  Double_t ecalNeutralEnergy, hcalNeutralEnergy, neutralEnergy;
    513  
     489
    514490  Double_t ecalSigma, hcalSigma, sigma;
    515491  Double_t ecalNeutralSigma, hcalNeutralSigma, neutralSigma;
    516492
    517493  Double_t weightTrack, weightCalo, bestEnergyEstimate, rescaleFactor;
    518  
     494
    519495  TLorentzVector momentum;
    520496  TFractionMap::iterator itFractionMap;
     
    525501
    526502
    527   //if (fHCalTowerEnergy < 30 && fECalTowerEnergy < 30) return;
    528   //cout<<"----------- New tower ---------"<<endl;
    529 
    530 
    531   // here we change behaviour w.r.t to standard calorimeter. Start with worse case scenario. If fHCalTowerEnergy > 0, assume total energy smeared by HCAL resolution.
    532   // For example, if overlapping charged pions and photons take hadronic resolution as combined measurement
    533 
    534   // if no hadronic fraction at all, then use ECAL resolution
    535 
    536   //cout<<"fECalTowerEnergy: "<<fECalTowerEnergy<<", fHCalTowerEnergy: "<<fHCalTowerEnergy<<", Eta: "<<fTowerEta<<endl;
    537 
    538   // if no hadronic energy, use ECAL resolution
     503  // if no hadronic energy, use ECAL resolution
    539504  if (fHCalTowerEnergy <= fHCalEnergyMin)
    540505  {
     
    544509  }
    545510
    546   // if hadronic fraction > 0, use HCAL resolution 
     511  // if hadronic fraction > 0, use HCAL resolution
    547512  else
    548513  {
     
    554519  energy = LogNormal(energy, sigma);
    555520  //cout<<energy<<","<<ecalEnergy<<","<<hcalEnergy<<endl;
    556  
     521
    557522  if(energy < fEnergyMin || energy < fEnergySignificanceMin*sigma) energy = 0.0;
    558523
     
    592557  for(size_t i = 0; i < fTower->ECalEnergyTimePairs.size(); ++i)
    593558  {
    594     weight = TMath::Sqrt(fTower->ECalEnergyTimePairs[i].first);
     559    weight = TMath::Power((fTower->ECalEnergyTimePairs[i].first),2);
    595560    sumWeightedTime += weight * fTower->ECalEnergyTimePairs[i].second;
    596561    sumWeight += weight;
     
    598563  }
    599564
     565  // check whether barrel or endcap tower
     566  if (fTower->Position.Perp() < fTowerRmax && TMath::Abs(eta) > 0.)
     567    r = fTower->Position.Z()/TMath::SinH(eta);
     568  else
     569    r = fTower->Position.Pt();
     570
    600571  if(sumWeight > 0.0)
    601572  {
    602     fTower->Position.SetPtEtaPhiE(1.0, eta, phi, sumWeightedTime/sumWeight);
     573    fTower->Position.SetPtEtaPhiE(r, eta, phi, sumWeightedTime/sumWeight);
    603574  }
    604575  else
    605576  {
    606     fTower->Position.SetPtEtaPhiE(1.0, eta, phi, 999999.9);
     577    fTower->Position.SetPtEtaPhiE(r, eta, phi, 999999.9);
    607578  }
    608579
     
    626597
    627598  // fill energy flow candidates
    628  
     599
    629600  fTrackSigma = TMath::Sqrt(fTrackSigma);
    630601  neutralEnergy = max( (energy - fTrackEnergy) , 0.0);
     
    638609  if(neutralEnergy > fEnergyMin && neutralSigma > fEnergySignificanceMin)
    639610  {
    640    
     611
    641612    //cout<<"significant neutral excess found:"<<endl;
    642613    // create new photon tower
     
    645616    //cout<<"Creating tower with Pt, Eta, Phi, Energy: "<<pt<<","<<eta<<","<<phi<<","<<neutralEnergy<<endl;
    646617    tower->Momentum.SetPtEtaPhiE(pt, eta, phi, neutralEnergy);
    647     tower->Eem = neutralEnergy;
    648     tower->Ehad = 0.0;
    649     tower->PID = 22;
    650 
    651    
     618
     619    // if no hadronic energy, use ECAL resolution
     620    if (fHCalTowerEnergy <= fHCalEnergyMin)
     621    {
     622      tower->Eem = neutralEnergy;
     623      tower->Ehad = 0.0;
     624      tower->PID = 22;
     625    }
     626
     627    // if hadronic fraction > 0, use HCAL resolution
     628    else
     629    {
     630      tower->Eem = 0;
     631      tower->Ehad = neutralEnergy;
     632      tower->PID = 130;
     633    }
    652634
    653635    fEFlowPhotonOutputArray->Add(tower);
     
    658640    while((track = static_cast<Candidate*>(fItTowerTrackArray->Next())))
    659641    {
    660       //cout<<"looping over tracks"<<endl;
    661642      mother = track;
    662643      track = static_cast<Candidate*>(track->Clone());
     
    666647  }
    667648
    668  
     649
    669650  // if neutral excess is not significant, rescale eflow tracks, such that the total charged equals the best measurement given by the DualReadoutCalorimeter and tracking
    670651  else if(fTrackEnergy > 0.0)
     
    674655    weightCalo  = (sigma > 0.0) ? 1 / (sigma*sigma) : 0.0;
    675656
    676     bestEnergyEstimate = (weightTrack*fTrackEnergy + weightCalo*energy) / (weightTrack + weightCalo); 
     657    bestEnergyEstimate = (weightTrack*fTrackEnergy + weightCalo*energy) / (weightTrack + weightCalo);
    677658    rescaleFactor = bestEnergyEstimate/fTrackEnergy;
    678659
     
    680661    fItTowerTrackArray->Reset();
    681662    while((track = static_cast<Candidate*>(fItTowerTrackArray->Next())))
    682     { 
     663    {
    683664      mother = track;
    684       track = static_cast<Candidate*>(track->Clone());
     665      track = static_cast<Candidate *>(track->Clone());
    685666      track->AddCandidate(mother);
    686 
    687       track->Momentum *= rescaleFactor;
    688 
     667      track->Momentum.SetPtEtaPhiM(track->Momentum.Pt()*rescaleFactor, track->Momentum.Eta(), track->Momentum.Phi(), track->Momentum.M());
    689668      fEFlowTrackOutputArray->Add(track);
    690669    }
    691670  }
    692  
     671
    693672
    694673}
  • modules/DualReadoutCalorimeter.h

    ra3261d7 r13331dc  
    6060  Double_t fECalTrackEnergy, fHCalTrackEnergy;
    6161  Double_t fTrackEnergy;
     62  Double_t fTowerRmax;
    6263
    6364  Double_t fTimingEnergyMin;
  • modules/EnergySmearing.cc

    ra3261d7 r13331dc  
    9595{
    9696  Candidate *candidate, *mother;
    97   Double_t pt, energy, eta, phi;
     97  Double_t pt, energy, eta, phi, m;
    9898
    9999  fItInputArray->Reset();
     
    107107    phi = candidatePosition.Phi();
    108108    energy = candidateMomentum.E();
     109    m = candidateMomentum.M();
    109110
    110111    // apply smearing formula
     
    117118    eta = candidateMomentum.Eta();
    118119    phi = candidateMomentum.Phi();
    119     candidate->Momentum.SetPtEtaPhiE(energy / TMath::CosH(eta), eta, phi, energy);
     120    pt = (energy > m) ? TMath::Sqrt(energy*energy - m*m)/TMath::CosH(eta) : 0;
     121    candidate->Momentum.SetPtEtaPhiE(pt, eta, phi, energy);
    120122    candidate->TrackResolution = fFormula->Eval(pt, eta, phi, energy) / candidateMomentum.E();
    121123    candidate->AddCandidate(mother);
  • modules/JetFakeParticle.cc

    ra3261d7 r13331dc  
    146146  while((candidate = static_cast<Candidate *>(fItInputArray->Next())))
    147147  {
    148     const TLorentzVector &candidatePosition = candidate->Position;
    149148    const TLorentzVector &candidateMomentum = candidate->Momentum;
    150     eta = candidatePosition.Eta();
    151     phi = candidatePosition.Phi();
     149    eta = candidateMomentum.Eta();
     150    phi = candidateMomentum.Phi();
    152151    pt = candidateMomentum.Pt();
    153152    e = candidateMomentum.E();
  • modules/MomentumSmearing.cc

    ra3261d7 r13331dc  
    9595{
    9696  Candidate *candidate, *mother;
    97   Double_t pt, eta, phi, e, res;
     97  Double_t pt, eta, phi, e, m, res;
    9898
    9999  fItInputArray->Reset();
     
    106106    pt = candidateMomentum.Pt();
    107107    e = candidateMomentum.E();
     108    m = candidateMomentum.M();
    108109    res = fFormula->Eval(pt, eta, phi, e, candidate);
    109110
     
    121122    eta = candidateMomentum.Eta();
    122123    phi = candidateMomentum.Phi();
    123     candidate->Momentum.SetPtEtaPhiE(pt, eta, phi, pt * TMath::CosH(eta));
     124    candidate->Momentum.SetPtEtaPhiM(pt, eta, phi, m);
    124125    //candidate->TrackResolution = fFormula->Eval(pt, eta, phi, e);
    125126    candidate->TrackResolution = res;
  • modules/SimpleCalorimeter.cc

    ra3261d7 r13331dc  
    208208  fItParticleInputArray->Reset();
    209209  number = -1;
     210  fTowerRmax=0.;
    210211  while((particle = static_cast<Candidate *>(fItParticleInputArray->Next())))
    211212  {
    212213    const TLorentzVector &particlePosition = particle->Position;
    213214    ++number;
     215
     216    // compute maximum radius (needed in FinalizeTower to assess whether barrel or endcap tower)
     217    if (particlePosition.Perp() > fTowerRmax)
     218      fTowerRmax=particlePosition.Perp();
    214219
    215220    pdgCode = TMath::Abs(particle->PID);
     
    394399    fTowerEnergy += energy;
    395400
    396     fTowerTime += energy * position.T();
    397     fTowerTimeWeight += energy;
     401    fTowerTime += energy * energy * position.T(); //sigma_t ~ 1/E
     402    fTowerTimeWeight += energy * energy;
    398403
    399404    fTower->AddCandidate(particle);
     405    fTower->Position = position;
     406
    400407  }
    401408
     
    409416{
    410417  Candidate *tower, *track, *mother;
    411   Double_t energy, neutralEnergy, pt, eta, phi;
     418  Double_t energy, neutralEnergy, pt, eta, phi, r;
    412419  Double_t sigma, neutralSigma;
    413420  Double_t time;
     
    443450  pt = energy / TMath::CosH(eta);
    444451
    445   fTower->Position.SetPtEtaPhiE(1.0, eta, phi, time);
     452  // check whether barrel or endcap tower
     453  if (fTower->Position.Perp() < fTowerRmax && TMath::Abs(eta) > 0.)
     454    r = fTower->Position.Z()/TMath::SinH(eta);
     455  else
     456    r = fTower->Position.Pt();
     457
     458  fTower->Position.SetPtEtaPhiE(r, eta, phi, time);
    446459  fTower->Momentum.SetPtEtaPhiE(pt, eta, phi, energy);
    447460
     
    507520      track = static_cast<Candidate *>(track->Clone());
    508521      track->AddCandidate(mother);
    509 
    510       track->Momentum *= rescaleFactor;
    511 
     522      track->Momentum.SetPtEtaPhiM(track->Momentum.Pt()*rescaleFactor, track->Momentum.Eta(), track->Momentum.Phi(), track->Momentum.M());
    512523      fEFlowTrackOutputArray->Add(track);
    513524    }
  • modules/SimpleCalorimeter.h

    ra3261d7 r13331dc  
    6262  Double_t fTrackTime;
    6363
     64  Double_t fTowerRmax;
     65
    6466  Double_t fTowerTimeWeight;
    6567  Double_t fTrackTimeWeight;
  • modules/TrackCovariance.cc

    ra3261d7 r13331dc  
    1 /*
     1  /*
    22 *  Delphes: a framework for fast simulation of a generic collider experiment
    33 *  Copyright (C) 2020  Universite catholique de Louvain (UCLouvain), Belgium
     
    2121 *  Smears track parameters according to appropriate covariance matrix.
    2222 *
    23  *  \authors P. Demin - UCLouvain, Louvain-la-Neuve
     23 *  \authors F. Bedeschi - INFN Pisa
     24*            P. Demin - UCLouvain, Louvain-la-Neuve
    2425 *           M. Selvaggi - CERN
     26 *
    2527 *
    2628 */
     
    5052
    5153TrackCovariance::TrackCovariance() :
    52   fGeometry(0), fCovariance(0), fItInputArray(0)
     54  fGeometry(0), fCovariance(0), fAcx(0), fItInputArray(0)
    5355{
    5456  fGeometry = new SolGeom();
     
    7072  fBz = GetDouble("Bz", 0.0);
    7173  fGeometry->Read(GetString("DetectorGeometry", ""));
     74  fNMinHits = GetInt("NMinHits", 6);
    7275
     76  // load geometry
    7377  fCovariance->Calc(fGeometry);
     78  fCovariance->SetMinHits(fNMinHits);
     79  // load geometry
     80  fAcx = fCovariance->AccPnt();
    7481
    7582  // import input array
    76 
    7783  fInputArray = ImportArray(GetString("InputArray", "TrackMerger/tracks"));
    7884  fItInputArray = fInputArray->MakeIterator();
     
    94100void TrackCovariance::Process()
    95101{
    96   Candidate *candidate, *mother;
     102  Candidate *candidate, *mother, *particle;
    97103  Double_t mass, p, pt, q, ct;
    98104  Double_t dd0, ddz, dphi, dct, dp, dpt, dC;
    99  
     105
    100106
    101107  fItInputArray->Reset();
    102108  while((candidate = static_cast<Candidate *>(fItInputArray->Next())))
    103109  {
    104     const TLorentzVector &candidatePosition = candidate->InitialPosition;
    105     const TLorentzVector &candidateMomentum = candidate->Momentum;
     110
     111    // converting to meters
     112    particle = static_cast<Candidate *>(candidate->GetCandidates()->At(0));
     113
     114    // converting to meters
     115    const TLorentzVector &candidatePosition = particle->Position*1e-03;
     116    const TLorentzVector &candidateMomentum = particle->Momentum;
     117
     118    if ( !fCovariance->IsAccepted(candidateMomentum.Vect()) ) continue;
    106119
    107120    mass = candidateMomentum.M();
     
    110123
    111124    mother    = candidate;
    112     candidate = static_cast<Candidate *>(candidate->Clone());
     125    candidate = static_cast<Candidate*>(candidate->Clone());
    113126
    114127    candidate->Momentum.SetVectM(track.GetObsP(), mass);
    115     candidate->InitialPosition.SetXYZT(track.GetObsX().X(),track.GetObsX().Y(),track.GetObsX().Z(),candidatePosition.T());
    116    
     128
     129    // converting back to mm
     130    candidate->InitialPosition.SetXYZT(track.GetObsX().X()*1e03,track.GetObsX().Y()*1e03,track.GetObsX().Z()*1e03,candidatePosition.T()*1e03);
     131
    117132    // save full covariance 5x5 matrix internally (D0, phi, Curvature, dz, ctg(theta))
    118133    candidate->TrackCovariance = track.GetCov();
     
    123138    ct = track.GetObsPar()[4];
    124139
    125     candidate->Xd = track.GetObsX().X();
    126     candidate->Yd = track.GetObsX().Y();
    127     candidate->Zd = track.GetObsX().Z();
    128    
    129     candidate->D0 = track.GetObsPar()[0];
    130     candidate->Phi = track.GetObsPar()[1];
    131     candidate->C = track.GetObsPar()[2];
    132     candidate->DZ = track.GetObsPar()[3];
     140    candidate->Xd = track.GetObsX().X()*1e03;
     141    candidate->Yd = track.GetObsX().Y()*1e03;
     142    candidate->Zd = track.GetObsX().Z()*1e03;
     143
     144    candidate->D0       = track.GetObsPar()[0]*1e03;
     145    candidate->Phi      = track.GetObsPar()[1];
     146
     147    // inverse of curvature
     148    candidate->C        = track.GetObsPar()[2]*1e-03;
     149    candidate->DZ       = track.GetObsPar()[3]*1e03;
    133150    candidate->CtgTheta = track.GetObsPar()[4];
    134     candidate->P  = track.GetObsP().Mag();
    135     candidate->PT = pt;
    136     candidate->Charge = q;
     151    candidate->P        = track.GetObsP().Mag();
     152    candidate->PT       = pt;
     153    candidate->Charge   = q;
    137154
    138     dd0       = TMath::Sqrt(track.GetCov()(0, 0));
    139     ddz       = TMath::Sqrt(track.GetCov()(3, 3));
    140     dphi      = TMath::Sqrt(track.GetCov()(1, 1)); 
    141     dct       = TMath::Sqrt(track.GetCov()(4, 4)); 
     155    dd0       = TMath::Sqrt(track.GetCov()(0, 0))*1e03;
     156    ddz       = TMath::Sqrt(track.GetCov()(3, 3))*1e03;
     157    dphi      = TMath::Sqrt(track.GetCov()(1, 1));
     158    dct       = TMath::Sqrt(track.GetCov()(4, 4));
    142159    dpt       = 2 * TMath::Sqrt( track.GetCov()(2, 2))*pt*pt / (0.2998*fBz);
    143160    dp        = TMath::Sqrt((1.+ct*ct)*dpt*dpt + 4*pt*pt*ct*ct*dct*dct/(1.+ct*ct)/(1.+ct*ct));
    144     dC        = TMath::Sqrt(track.GetCov()(2, 2));
     161    dC        = TMath::Sqrt(track.GetCov()(2, 2))*1e-03;
    145162
    146163    candidate->ErrorD0 = dd0;
     
    154171    candidate->TrackResolution = dp / p;
    155172
    156 
    157173    candidate->AddCandidate(mother);
    158174
  • modules/TrackCovariance.h

    ra3261d7 r13331dc  
    3636class SolGeom;
    3737class SolGridCov;
     38class AcceptanceClx;
    3839
    3940class TrackCovariance: public DelphesModule
     
    4950private:
    5051  Double_t fBz;
     52  Int_t fNMinHits;
    5153
    5254  SolGeom *fGeometry;
    5355  SolGridCov *fCovariance;
     56
     57  AcceptanceClx *fAcx;
    5458
    5559  TIterator *fItInputArray; //!
  • modules/TrackSmearing.cc

    ra3261d7 r13331dc  
    158158  TLorentzVector beamSpotPosition;
    159159  Candidate *candidate, *mother;
    160   Double_t pt, eta, e, d0, d0Error, trueD0, dz, dzError, trueDZ, p, pError, trueP, ctgTheta, ctgThetaError, trueCtgTheta, phi, phiError, truePhi;
     160  Double_t pt, eta, e, m, d0, d0Error, trueD0, dz, dzError, trueDZ, p, pError, trueP, ctgTheta, ctgThetaError, trueCtgTheta, phi, phiError, truePhi;
    161161  Double_t x, y, z, t, px, py, pz, theta;
    162162  Double_t q, r;
     
    224224    eta = momentum.Eta();
    225225    e = momentum.E();
    226    
     226    m = momentum.M();
     227
    227228    d0 = trueD0 = candidate->D0;
    228229    dz = trueDZ = candidate->DZ;
     
    332333    candidate->Momentum.SetPy(p * TMath::Sin(phi) * TMath::Sin(theta));
    333334    candidate->Momentum.SetPz(p * TMath::Cos(theta));
    334     candidate->Momentum.SetE(candidate->Momentum.Pt() * TMath::CosH(eta));
     335    candidate->Momentum.SetE(TMath::Sqrt(p*p + m*m));
    335336    candidate->PT = candidate->Momentum.Pt();
    336337
  • modules/TreeWriter.cc

    ra3261d7 r13331dc  
    123123    fBranchMap.insert(make_pair(branch, make_pair(itClassMap->second, array)));
    124124  }
     125
     126  param = GetParam("Info");
     127  TString infoName;
     128  Double_t infoValue;
     129
     130  size = param.GetSize();
     131  for(i = 0; i < size / 2; ++i)
     132  {
     133    infoName = param[i * 2].GetString();
     134    infoValue = param[i * 2 + 1].GetDouble();
     135
     136    AddInfo(infoName, infoValue);
     137  }
    125138}
    126139
     
    138151  it1.Reset();
    139152  array->Clear();
    140  
     153
    141154  while((candidate = static_cast<Candidate *>(it1.Next())))
    142155  {
     
    215228    entry->Pz = momentum.Pz();
    216229
    217     entry->D0 = candidate->D0;
    218     entry->DZ = candidate->DZ;
    219     entry->P = candidate->P;
    220     entry->PT = candidate->PT;
    221     entry->CtgTheta = candidate->CtgTheta;
    222     entry->Phi = candidate->Phi;
    223 
    224230    entry->Eta = eta;
    225231    entry->Phi = momentum.Phi();
     
    314320  Candidate *particle = 0;
    315321  Track *entry = 0;
    316   Double_t pt, signz, cosTheta, eta, rapidity, p, ctgTheta, phi;
     322  Double_t pt, signz, cosTheta, eta, rapidity, p, ctgTheta, phi, m;
    317323  const Double_t c_light = 2.99792458E8;
    318324
     
    348354
    349355    entry->D0 = candidate->D0;
    350     entry->ErrorD0 = candidate->ErrorD0;
    351356    entry->DZ = candidate->DZ;
    352     entry->ErrorDZ = candidate->ErrorDZ;
    353357
    354358    entry->ErrorP = candidate->ErrorP;
    355359    entry->ErrorPT = candidate->ErrorPT;
     360
     361    // diagonal covariance matrix terms
     362    entry->ErrorD0 = candidate->ErrorD0;
     363    entry->ErrorC = candidate->ErrorC;
     364    entry->ErrorPhi = candidate->ErrorPhi;
     365    entry->ErrorDZ = candidate->ErrorDZ;
    356366    entry->ErrorCtgTheta = candidate->ErrorCtgTheta;
    357     entry->ErrorPhi = candidate->ErrorPhi;
     367
     368    // add some offdiagonal covariance matrix elements
     369    entry->ErrorD0Phi          = candidate->TrackCovariance(0,1);
     370    entry->ErrorD0C            = candidate->TrackCovariance(0,2);
     371    entry->ErrorD0DZ           = candidate->TrackCovariance(0,3);
     372    entry->ErrorD0CtgTheta     = candidate->TrackCovariance(0,4);
     373    entry->ErrorPhiC           = candidate->TrackCovariance(1,2);
     374    entry->ErrorPhiDZ          = candidate->TrackCovariance(1,3);
     375    entry->ErrorPhiCtgTheta    = candidate->TrackCovariance(1,4);
     376    entry->ErrorCDZ            = candidate->TrackCovariance(2,3);
     377    entry->ErrorCCtgTheta      = candidate->TrackCovariance(2,4);
     378    entry->ErrorDZCtgTheta     = candidate->TrackCovariance(3,4);
    358379
    359380    entry->Xd = candidate->Xd;
     
    366387    p = momentum.P();
    367388    phi = momentum.Phi();
     389    m = momentum.M();
    368390    ctgTheta = (TMath::Tan(momentum.Theta()) != 0) ? 1 / TMath::Tan(momentum.Theta()) : 1e10;
    369391
     
    378400    entry->Phi = phi;
    379401    entry->CtgTheta = ctgTheta;
     402    entry->C = candidate->C;
     403    entry->Mass = m;
    380404
    381405    particle = static_cast<Candidate *>(candidate->GetCandidates()->At(0));
     
    448472  Candidate *particle = 0;
    449473  ParticleFlowCandidate *entry = 0;
    450   Double_t e, pt, signz, cosTheta, eta, rapidity, p, ctgTheta, phi;
     474  Double_t e, pt, signz, cosTheta, eta, rapidity, p, ctgTheta, phi, m;
    451475  const Double_t c_light = 2.99792458E8;
    452476
     
    482506
    483507    entry->D0 = candidate->D0;
    484     entry->ErrorD0 = candidate->ErrorD0;
    485508    entry->DZ = candidate->DZ;
    486     entry->ErrorDZ = candidate->ErrorDZ;
    487509
    488510    entry->ErrorP = candidate->ErrorP;
    489511    entry->ErrorPT = candidate->ErrorPT;
    490512    entry->ErrorCtgTheta = candidate->ErrorCtgTheta;
     513
     514
     515    // diagonal covariance matrix terms
     516
     517    entry->ErrorD0 = candidate->ErrorD0;
     518    entry->ErrorC = candidate->ErrorC;
    491519    entry->ErrorPhi = candidate->ErrorPhi;
     520    entry->ErrorDZ = candidate->ErrorDZ;
     521    entry->ErrorCtgTheta = candidate->ErrorCtgTheta;
     522
     523    // add some offdiagonal covariance matrix elements
     524    entry->ErrorD0Phi          = candidate->TrackCovariance(0,1);
     525    entry->ErrorD0C            = candidate->TrackCovariance(0,2);
     526    entry->ErrorD0DZ           = candidate->TrackCovariance(0,3);
     527    entry->ErrorD0CtgTheta     = candidate->TrackCovariance(0,4);
     528    entry->ErrorPhiC           = candidate->TrackCovariance(1,2);
     529    entry->ErrorPhiDZ          = candidate->TrackCovariance(1,3);
     530    entry->ErrorPhiCtgTheta    = candidate->TrackCovariance(1,4);
     531    entry->ErrorCDZ            = candidate->TrackCovariance(2,3);
     532    entry->ErrorCCtgTheta      = candidate->TrackCovariance(2,4);
     533    entry->ErrorDZCtgTheta     = candidate->TrackCovariance(3,4);
    492534
    493535    entry->Xd = candidate->Xd;
     
    501543    p = momentum.P();
    502544    phi = momentum.Phi();
     545    m = momentum.M();
    503546    ctgTheta = (TMath::Tan(momentum.Theta()) != 0) ? 1 / TMath::Tan(momentum.Theta()) : 1e10;
    504547
     
    509552    entry->Phi = phi;
    510553    entry->CtgTheta = ctgTheta;
     554    entry->C = candidate->C;
     555    entry->Mass = m;
    511556
    512557    particle = static_cast<Candidate *>(candidate->GetCandidates()->At(0));
  • readers/DelphesPythia8.cpp

    ra3261d7 r13331dc  
    296296
    297297    // jet matching
     298#if PYTHIA_VERSION_INTEGER < 8300
    298299    matching = combined->getHook(*pythia);
    299300    if(!matching)
     
    302303    }
    303304    pythia->setUserHooksPtr(matching);
     305#endif
    304306
    305307    if(pythia == NULL)
  • validation/DelphesValidation.cpp

    ra3261d7 r13331dc  
    3232#include "TGraph.h"
    3333#include "TGraphErrors.h"
     34#include "TF1.h"
    3435#include "TH1.h"
    3536#include "TH2.h"
  • validation/validation.sh

    ra3261d7 r13331dc  
    3838outputrootdir=report_${cardbase%.*}/root
    3939cardlabel=${cardbase%.*}
    40 version=$(cat VERSION)
     40version=x.y.z
    4141outpdf=$mainoutputdir/${output%.*}.pdf
    4242cardsdir=validation/cards
Note: See TracChangeset for help on using the changeset viewer.