Fork me on GitHub

Changes in / [ba7fc1e:37deb3b] in git


Ignore:
Files:
50 added
11 deleted
300 edited

Legend:

Unmodified
Added
Removed
  • CMakeLists.txt

    rba7fc1e r37deb3b  
    77
    88# Declare ROOT dependency
    9 find_package(ROOT COMPONENTS EG Eve GenVector Hist Physics Matrix Graf RIO Tree Gpad RGL MathCore)
     9find_package(ROOT COMPONENTS EG Eve Geom Gui GuiHtml GenVector Hist Physics Matrix Graf RIO Tree Gpad RGL MathCore)
    1010include(${ROOT_USE_FILE})
    1111
  • Makefile

    rba7fc1e r37deb3b  
    1717CXXFLAGS += $(ROOTCFLAGS) -Wno-write-strings -D_FILE_OFFSET_BITS=64 -DDROP_CGAL -I. -Iexternal -Iexternal/tcl
    1818DELPHES_LIBS = $(shell $(RC) --libs) -lEG $(SYSLIBS)
    19 DISPLAY_LIBS = $(shell $(RC) --evelibs) $(SYSLIBS)
     19DISPLAY_LIBS = $(shell $(RC) --evelibs) -lGuiHtml  $(SYSLIBS)
    2020
    2121ifneq ($(CMSSW_FWLITE_INCLUDE_PATH),)
    2222HAS_CMSSW = true
    2323CXXFLAGS += -std=c++0x -I$(subst :, -I,$(CMSSW_FWLITE_INCLUDE_PATH))
    24 DELPHES_LIBS += -L$(subst include,lib,$(subst :, -L,$(CMSSW_FWLITE_INCLUDE_PATH)))
     24OPT_LIBS += -L$(subst include,lib,$(subst :, -L,$(CMSSW_FWLITE_INCLUDE_PATH)))
    2525ifneq ($(CMSSW_RELEASE_BASE),)
    2626CXXFLAGS += -I$(CMSSW_RELEASE_BASE)/src
    2727endif
    2828ifneq ($(LD_LIBRARY_PATH),)
    29 DELPHES_LIBS += -L$(subst include,lib,$(subst :, -L,$(LD_LIBRARY_PATH)))
    30 endif
    31 DELPHES_LIBS += -lGenVector -lFWCoreFWLite -lDataFormatsFWLite -lDataFormatsPatCandidates -lDataFormatsLuminosity -lSimDataFormatsGeneratorProducts -lCommonToolsUtils
     29OPT_LIBS += -L$(subst include,lib,$(subst :, -L,$(LD_LIBRARY_PATH)))
     30endif
     31OPT_LIBS += -lGenVector -lFWCoreFWLite -lDataFormatsFWLite -lDataFormatsPatCandidates -lDataFormatsLuminosity -lSimDataFormatsGeneratorProducts -lCommonToolsUtils
    3232endif
    3333
    3434ifneq ($(PROMC),)
    3535HAS_PROMC = true
    36 CXXFLAGS += -I$(PROMC)/include
    37 DELPHES_LIBS += -L$(PROMC)/lib -lprotoc -lprotobuf -lprotobuf-lite -lcbook -lz
     36CXXFLAGS += -I$(PROMC)/include -I$(PROMC)/src
     37OPT_LIBS += -L$(PROMC)/lib -lpromc -lprotoc -lprotobuf -lprotobuf-lite -lcbook -lz
    3838endif
    3939
     
    4141HAS_PYTHIA8 = true
    4242CXXFLAGS += -I$(PYTHIA8)/include
    43 DELPHES_LIBS += -L$(PYTHIA8)/lib -lpythia8 -lLHAPDF -lgfortran -lz
     43OPT_LIBS += -L$(PYTHIA8)/lib -lpythia8 -lLHAPDF -lgfortran -lz
    4444else
    4545ifneq ($(PYTHIA8DATA),)
    4646HAS_PYTHIA8 = true
    4747CXXFLAGS += -I$(PYTHIA8DATA)/../include
    48 DELPHES_LIBS += -L$(PYTHIA8DATA)/../lib -lpythia8 -lLHAPDF -lgfortran -lz
    49 endif
    50 endif
     48OPT_LIBS += -L$(PYTHIA8DATA)/../lib -lpythia8 -lLHAPDF -lgfortran -lz
     49endif
     50endif
     51
     52DELPHES_LIBS += $(OPT_LIBS)
     53DISPLAY_LIBS += $(OPT_LIBS)
    5154
    5255###
     
    6568
    6669
     70stdhep2pileup$(ExeSuf): \
     71        tmp/converters/stdhep2pileup.$(ObjSuf)
     72
     73tmp/converters/stdhep2pileup.$(ObjSuf): \
     74        converters/stdhep2pileup.cpp \
     75        classes/DelphesClasses.h \
     76        classes/DelphesFactory.h \
     77        classes/DelphesSTDHEPReader.h \
     78        classes/DelphesPileUpWriter.h \
     79        external/ExRootAnalysis/ExRootTreeWriter.h \
     80        external/ExRootAnalysis/ExRootTreeBranch.h \
     81        external/ExRootAnalysis/ExRootProgressBar.h
     82lhco2root$(ExeSuf): \
     83        tmp/converters/lhco2root.$(ObjSuf)
     84
     85tmp/converters/lhco2root.$(ObjSuf): \
     86        converters/lhco2root.cpp \
     87        modules/Delphes.h \
     88        classes/DelphesStream.h \
     89        classes/DelphesClasses.h \
     90        classes/DelphesFactory.h \
     91        external/ExRootAnalysis/ExRootTreeWriter.h \
     92        external/ExRootAnalysis/ExRootTreeBranch.h \
     93        external/ExRootAnalysis/ExRootProgressBar.h
     94root2lhco$(ExeSuf): \
     95        tmp/converters/root2lhco.$(ObjSuf)
     96
     97tmp/converters/root2lhco.$(ObjSuf): \
     98        converters/root2lhco.cpp \
     99        classes/DelphesClasses.h \
     100        external/ExRootAnalysis/ExRootTreeReader.h \
     101        external/ExRootAnalysis/ExRootProgressBar.h
    67102pileup2root$(ExeSuf): \
    68103        tmp/converters/pileup2root.$(ObjSuf)
     
    86121        external/ExRootAnalysis/ExRootTreeReader.h \
    87122        external/ExRootAnalysis/ExRootProgressBar.h
    88 stdhep2pileup$(ExeSuf): \
    89         tmp/converters/stdhep2pileup.$(ObjSuf)
    90 
    91 tmp/converters/stdhep2pileup.$(ObjSuf): \
    92         converters/stdhep2pileup.cpp \
    93         classes/DelphesClasses.h \
    94         classes/DelphesFactory.h \
    95         classes/DelphesSTDHEPReader.h \
    96         classes/DelphesPileUpWriter.h \
    97         external/ExRootAnalysis/ExRootTreeWriter.h \
    98         external/ExRootAnalysis/ExRootTreeBranch.h \
    99         external/ExRootAnalysis/ExRootProgressBar.h
    100123hepmc2pileup$(ExeSuf): \
    101124        tmp/converters/hepmc2pileup.$(ObjSuf)
     
    110133        external/ExRootAnalysis/ExRootTreeBranch.h \
    111134        external/ExRootAnalysis/ExRootProgressBar.h
    112 lhco2root$(ExeSuf): \
    113         tmp/converters/lhco2root.$(ObjSuf)
    114 
    115 tmp/converters/lhco2root.$(ObjSuf): \
    116         converters/lhco2root.cpp \
    117         modules/Delphes.h \
    118         classes/DelphesStream.h \
    119         classes/DelphesClasses.h \
    120         classes/DelphesFactory.h \
    121         external/ExRootAnalysis/ExRootTreeWriter.h \
    122         external/ExRootAnalysis/ExRootTreeBranch.h \
    123         external/ExRootAnalysis/ExRootProgressBar.h
    124 root2lhco$(ExeSuf): \
    125         tmp/converters/root2lhco.$(ObjSuf)
    126 
    127 tmp/converters/root2lhco.$(ObjSuf): \
    128         converters/root2lhco.cpp \
    129         classes/DelphesClasses.h \
    130         external/ExRootAnalysis/ExRootTreeReader.h \
    131         external/ExRootAnalysis/ExRootProgressBar.h
    132135Example1$(ExeSuf): \
    133136        tmp/examples/Example1.$(ObjSuf)
     
    142145        external/ExRootAnalysis/ExRootUtilities.h
    143146EXECUTABLE +=  \
     147        stdhep2pileup$(ExeSuf) \
     148        lhco2root$(ExeSuf) \
     149        root2lhco$(ExeSuf) \
    144150        pileup2root$(ExeSuf) \
    145151        root2pileup$(ExeSuf) \
    146         stdhep2pileup$(ExeSuf) \
    147152        hepmc2pileup$(ExeSuf) \
    148         lhco2root$(ExeSuf) \
    149         root2lhco$(ExeSuf) \
    150153        Example1$(ExeSuf)
    151154
    152155EXECUTABLE_OBJ +=  \
     156        tmp/converters/stdhep2pileup.$(ObjSuf) \
     157        tmp/converters/lhco2root.$(ObjSuf) \
     158        tmp/converters/root2lhco.$(ObjSuf) \
    153159        tmp/converters/pileup2root.$(ObjSuf) \
    154160        tmp/converters/root2pileup.$(ObjSuf) \
    155         tmp/converters/stdhep2pileup.$(ObjSuf) \
    156161        tmp/converters/hepmc2pileup.$(ObjSuf) \
    157         tmp/converters/lhco2root.$(ObjSuf) \
    158         tmp/converters/root2lhco.$(ObjSuf) \
    159162        tmp/examples/Example1.$(ObjSuf)
    160163
     
    238241        external/ExRootAnalysis/ExRootTreeWriter.h \
    239242        external/ExRootAnalysis/ExRootTreeBranch.h \
    240         external/ExRootAnalysis/ExRootProgressBar.h \
    241         external/ProMC/ProMCBook.h
     243        external/ExRootAnalysis/ExRootProgressBar.h
    242244EXECUTABLE +=  \
    243245        DelphesProMC$(ExeSuf)
     
    245247EXECUTABLE_OBJ +=  \
    246248        tmp/readers/DelphesProMC.$(ObjSuf)
    247 
    248 tmp/external/ProMC/ProMCStat.pb.$(ObjSuf): \
    249         external/ProMC/ProMCStat.pb.$(SrcSuf)
    250 tmp/external/ProMC/ProMCDescription.pb.$(ObjSuf): \
    251         external/ProMC/ProMCDescription.pb.$(SrcSuf)
    252 tmp/external/ProMC/ProMC.pb.$(ObjSuf): \
    253         external/ProMC/ProMC.pb.$(SrcSuf)
    254 tmp/external/ProMC/ProMCHeader.pb.$(ObjSuf): \
    255         external/ProMC/ProMCHeader.pb.$(SrcSuf)
    256 tmp/external/ProMC/ProMCBook.$(ObjSuf): \
    257         external/ProMC/ProMCBook.$(SrcSuf)
    258 DELPHES_OBJ +=  \
    259         tmp/external/ProMC/ProMCStat.pb.$(ObjSuf) \
    260         tmp/external/ProMC/ProMCDescription.pb.$(ObjSuf) \
    261         tmp/external/ProMC/ProMC.pb.$(ObjSuf) \
    262         tmp/external/ProMC/ProMCHeader.pb.$(ObjSuf) \
    263         tmp/external/ProMC/ProMCBook.$(ObjSuf)
    264 
    265 ifeq ($(HAS_PYTHIA8),true)
    266 DELPHES_OBJ +=  \
    267        
    268 endif
    269249
    270250endif
     
    318298        modules/Delphes.h \
    319299        modules/FastJetFinder.h \
     300        modules/FastJetGridMedianEstimator.h \
    320301        modules/ParticlePropagator.h \
    321302        modules/Efficiency.h \
     
    342323        modules/ConstituentFilter.h \
    343324        modules/StatusPidFilter.h \
     325        modules/PdgCodeFilter.h \
    344326        modules/Cloner.h \
    345327        modules/Weighter.h \
     
    382364        display/DisplayLinkDef.h \
    383365        display/DelphesDisplay.h \
    384         display/DelphesCaloData.h
     366        display/DelphesCaloData.h \
     367        display/DelphesBranchElement.h \
     368        display/Delphes3DGeometry.h \
     369        display/DelphesEventDisplay.h \
     370        display/DelphesHtmlSummary.h \
     371        display/DelphesPlotSummary.h
    385372DisplayDict$(PcmSuf): \
    386373        tmp/display/DisplayDict$(PcmSuf) \
     
    395382        DisplayDict$(PcmSuf)
    396383
     384tmp/classes/DelphesPileUpReader.$(ObjSuf): \
     385        classes/DelphesPileUpReader.$(SrcSuf) \
     386        classes/DelphesPileUpReader.h
     387tmp/classes/DelphesSTDHEPReader.$(ObjSuf): \
     388        classes/DelphesSTDHEPReader.$(SrcSuf) \
     389        classes/DelphesSTDHEPReader.h \
     390        classes/DelphesClasses.h \
     391        classes/DelphesFactory.h \
     392        external/ExRootAnalysis/ExRootTreeBranch.h
    397393tmp/classes/DelphesTF2.$(ObjSuf): \
    398394        classes/DelphesTF2.$(SrcSuf) \
    399395        classes/DelphesTF2.h
     396tmp/classes/DelphesHepMCReader.$(ObjSuf): \
     397        classes/DelphesHepMCReader.$(SrcSuf) \
     398        classes/DelphesHepMCReader.h \
     399        classes/DelphesClasses.h \
     400        classes/DelphesFactory.h \
     401        classes/DelphesStream.h \
     402        external/ExRootAnalysis/ExRootTreeBranch.h
     403tmp/classes/DelphesLHEFReader.$(ObjSuf): \
     404        classes/DelphesLHEFReader.$(SrcSuf) \
     405        classes/DelphesLHEFReader.h \
     406        classes/DelphesClasses.h \
     407        classes/DelphesFactory.h \
     408        classes/DelphesStream.h \
     409        external/ExRootAnalysis/ExRootTreeBranch.h
    400410tmp/classes/DelphesStream.$(ObjSuf): \
    401411        classes/DelphesStream.$(SrcSuf) \
     
    409419        external/ExRootAnalysis/ExRootTreeWriter.h \
    410420        external/ExRootAnalysis/ExRootResult.h
     421tmp/classes/DelphesFactory.$(ObjSuf): \
     422        classes/DelphesFactory.$(SrcSuf) \
     423        classes/DelphesFactory.h \
     424        classes/DelphesClasses.h \
     425        external/ExRootAnalysis/ExRootTreeBranch.h
     426tmp/classes/DelphesClasses.$(ObjSuf): \
     427        classes/DelphesClasses.$(SrcSuf) \
     428        classes/DelphesClasses.h \
     429        classes/DelphesFactory.h \
     430        classes/SortableObject.h
     431tmp/classes/DelphesFormula.$(ObjSuf): \
     432        classes/DelphesFormula.$(SrcSuf) \
     433        classes/DelphesFormula.h
    411434tmp/classes/DelphesPileUpWriter.$(ObjSuf): \
    412435        classes/DelphesPileUpWriter.$(SrcSuf) \
    413436        classes/DelphesPileUpWriter.h
    414 tmp/classes/DelphesHepMCReader.$(ObjSuf): \
    415         classes/DelphesHepMCReader.$(SrcSuf) \
    416         classes/DelphesHepMCReader.h \
    417         classes/DelphesClasses.h \
    418         classes/DelphesFactory.h \
    419         classes/DelphesStream.h \
    420         external/ExRootAnalysis/ExRootTreeBranch.h
    421 tmp/classes/DelphesLHEFReader.$(ObjSuf): \
    422         classes/DelphesLHEFReader.$(SrcSuf) \
    423         classes/DelphesLHEFReader.h \
    424         classes/DelphesClasses.h \
    425         classes/DelphesFactory.h \
    426         classes/DelphesStream.h \
    427         external/ExRootAnalysis/ExRootTreeBranch.h
    428 tmp/classes/DelphesFormula.$(ObjSuf): \
    429         classes/DelphesFormula.$(SrcSuf) \
    430         classes/DelphesFormula.h
    431 tmp/classes/DelphesClasses.$(ObjSuf): \
    432         classes/DelphesClasses.$(SrcSuf) \
    433         classes/DelphesClasses.h \
    434         classes/DelphesFactory.h \
    435         classes/SortableObject.h
    436 tmp/classes/DelphesSTDHEPReader.$(ObjSuf): \
    437         classes/DelphesSTDHEPReader.$(SrcSuf) \
    438         classes/DelphesSTDHEPReader.h \
    439         classes/DelphesClasses.h \
    440         classes/DelphesFactory.h \
    441         external/ExRootAnalysis/ExRootTreeBranch.h
    442 tmp/classes/DelphesPileUpReader.$(ObjSuf): \
    443         classes/DelphesPileUpReader.$(SrcSuf) \
    444         classes/DelphesPileUpReader.h
    445 tmp/classes/DelphesFactory.$(ObjSuf): \
    446         classes/DelphesFactory.$(SrcSuf) \
    447         classes/DelphesFactory.h \
    448         classes/DelphesClasses.h \
    449         external/ExRootAnalysis/ExRootTreeBranch.h
     437tmp/modules/StatusPidFilter.$(ObjSuf): \
     438        modules/StatusPidFilter.$(SrcSuf) \
     439        modules/StatusPidFilter.h \
     440        classes/DelphesClasses.h \
     441        classes/DelphesFactory.h \
     442        classes/DelphesFormula.h \
     443        external/ExRootAnalysis/ExRootResult.h \
     444        external/ExRootAnalysis/ExRootFilter.h \
     445        external/ExRootAnalysis/ExRootClassifier.h
     446tmp/modules/ParticlePropagator.$(ObjSuf): \
     447        modules/ParticlePropagator.$(SrcSuf) \
     448        modules/ParticlePropagator.h \
     449        classes/DelphesClasses.h \
     450        classes/DelphesFactory.h \
     451        classes/DelphesFormula.h \
     452        external/ExRootAnalysis/ExRootResult.h \
     453        external/ExRootAnalysis/ExRootFilter.h \
     454        external/ExRootAnalysis/ExRootClassifier.h
     455tmp/modules/Delphes.$(ObjSuf): \
     456        modules/Delphes.$(SrcSuf) \
     457        modules/Delphes.h \
     458        classes/DelphesClasses.h \
     459        classes/DelphesFactory.h \
     460        classes/DelphesFormula.h \
     461        external/ExRootAnalysis/ExRootResult.h \
     462        external/ExRootAnalysis/ExRootFilter.h \
     463        external/ExRootAnalysis/ExRootClassifier.h \
     464        external/ExRootAnalysis/ExRootConfReader.h \
     465        external/ExRootAnalysis/ExRootTreeWriter.h
     466tmp/modules/UniqueObjectFinder.$(ObjSuf): \
     467        modules/UniqueObjectFinder.$(SrcSuf) \
     468        modules/UniqueObjectFinder.h \
     469        classes/DelphesClasses.h \
     470        classes/DelphesFactory.h \
     471        classes/DelphesFormula.h \
     472        external/ExRootAnalysis/ExRootResult.h \
     473        external/ExRootAnalysis/ExRootFilter.h \
     474        external/ExRootAnalysis/ExRootClassifier.h
     475tmp/modules/ConstituentFilter.$(ObjSuf): \
     476        modules/ConstituentFilter.$(SrcSuf) \
     477        modules/ConstituentFilter.h \
     478        classes/DelphesClasses.h \
     479        classes/DelphesFactory.h \
     480        classes/DelphesFormula.h \
     481        external/ExRootAnalysis/ExRootResult.h \
     482        external/ExRootAnalysis/ExRootFilter.h \
     483        external/ExRootAnalysis/ExRootClassifier.h
     484tmp/modules/TrackPileUpSubtractor.$(ObjSuf): \
     485        modules/TrackPileUpSubtractor.$(SrcSuf) \
     486        modules/TrackPileUpSubtractor.h \
     487        classes/DelphesClasses.h \
     488        classes/DelphesFactory.h \
     489        classes/DelphesFormula.h \
     490        external/ExRootAnalysis/ExRootResult.h \
     491        external/ExRootAnalysis/ExRootFilter.h \
     492        external/ExRootAnalysis/ExRootClassifier.h
     493tmp/modules/Weighter.$(ObjSuf): \
     494        modules/Weighter.$(SrcSuf) \
     495        modules/Weighter.h \
     496        classes/DelphesClasses.h \
     497        classes/DelphesFactory.h \
     498        classes/DelphesFormula.h \
     499        external/ExRootAnalysis/ExRootResult.h \
     500        external/ExRootAnalysis/ExRootFilter.h \
     501        external/ExRootAnalysis/ExRootClassifier.h
    450502tmp/modules/Isolation.$(ObjSuf): \
    451503        modules/Isolation.$(SrcSuf) \
     
    457509        external/ExRootAnalysis/ExRootFilter.h \
    458510        external/ExRootAnalysis/ExRootClassifier.h
    459 tmp/modules/Efficiency.$(ObjSuf): \
    460         modules/Efficiency.$(SrcSuf) \
    461         modules/Efficiency.h \
    462         classes/DelphesClasses.h \
    463         classes/DelphesFactory.h \
    464         classes/DelphesFormula.h \
    465         external/ExRootAnalysis/ExRootResult.h \
    466         external/ExRootAnalysis/ExRootFilter.h \
    467         external/ExRootAnalysis/ExRootClassifier.h
    468 tmp/modules/BTagging.$(ObjSuf): \
    469         modules/BTagging.$(SrcSuf) \
    470         modules/BTagging.h \
    471         classes/DelphesClasses.h \
    472         classes/DelphesFactory.h \
    473         classes/DelphesFormula.h \
    474         external/ExRootAnalysis/ExRootResult.h \
    475         external/ExRootAnalysis/ExRootFilter.h \
    476         external/ExRootAnalysis/ExRootClassifier.h
    477511tmp/modules/PileUpMerger.$(ObjSuf): \
    478512        modules/PileUpMerger.$(SrcSuf) \
     
    485519        external/ExRootAnalysis/ExRootFilter.h \
    486520        external/ExRootAnalysis/ExRootClassifier.h
    487 tmp/modules/ImpactParameterSmearing.$(ObjSuf): \
    488         modules/ImpactParameterSmearing.$(SrcSuf) \
    489         modules/ImpactParameterSmearing.h \
    490         classes/DelphesClasses.h \
    491         classes/DelphesFactory.h \
    492         classes/DelphesFormula.h \
    493         external/ExRootAnalysis/ExRootResult.h \
    494         external/ExRootAnalysis/ExRootFilter.h \
    495         external/ExRootAnalysis/ExRootClassifier.h
    496 tmp/modules/SimpleCalorimeter.$(ObjSuf): \
    497         modules/SimpleCalorimeter.$(SrcSuf) \
    498         modules/SimpleCalorimeter.h \
    499         classes/DelphesClasses.h \
    500         classes/DelphesFactory.h \
    501         classes/DelphesFormula.h \
    502         external/ExRootAnalysis/ExRootResult.h \
    503         external/ExRootAnalysis/ExRootFilter.h \
    504         external/ExRootAnalysis/ExRootClassifier.h
    505 tmp/modules/PileUpJetID.$(ObjSuf): \
    506         modules/PileUpJetID.$(SrcSuf) \
    507         modules/PileUpJetID.h \
    508         classes/DelphesClasses.h \
    509         classes/DelphesFactory.h \
    510         classes/DelphesFormula.h \
    511         external/ExRootAnalysis/ExRootResult.h \
    512         external/ExRootAnalysis/ExRootFilter.h \
    513         external/ExRootAnalysis/ExRootClassifier.h
    514 tmp/modules/Cloner.$(ObjSuf): \
    515         modules/Cloner.$(SrcSuf) \
    516         modules/Cloner.h \
    517         classes/DelphesClasses.h \
    518         classes/DelphesFactory.h \
    519         classes/DelphesFormula.h \
    520         external/ExRootAnalysis/ExRootResult.h \
    521         external/ExRootAnalysis/ExRootFilter.h \
    522         external/ExRootAnalysis/ExRootClassifier.h
    523 tmp/modules/TauTagging.$(ObjSuf): \
    524         modules/TauTagging.$(SrcSuf) \
    525         modules/TauTagging.h \
    526         classes/DelphesClasses.h \
    527         classes/DelphesFactory.h \
    528         classes/DelphesFormula.h \
    529         external/ExRootAnalysis/ExRootResult.h \
    530         external/ExRootAnalysis/ExRootFilter.h \
    531         external/ExRootAnalysis/ExRootClassifier.h
    532521tmp/modules/ExampleModule.$(ObjSuf): \
    533522        modules/ExampleModule.$(SrcSuf) \
    534523        modules/ExampleModule.h \
    535         classes/DelphesClasses.h \
    536         classes/DelphesFactory.h \
    537         classes/DelphesFormula.h \
    538         external/ExRootAnalysis/ExRootResult.h \
    539         external/ExRootAnalysis/ExRootFilter.h \
    540         external/ExRootAnalysis/ExRootClassifier.h
    541 tmp/modules/Merger.$(ObjSuf): \
    542         modules/Merger.$(SrcSuf) \
    543         modules/Merger.h \
    544         classes/DelphesClasses.h \
    545         classes/DelphesFactory.h \
    546         classes/DelphesFormula.h \
    547         external/ExRootAnalysis/ExRootResult.h \
    548         external/ExRootAnalysis/ExRootFilter.h \
    549         external/ExRootAnalysis/ExRootClassifier.h
    550 tmp/modules/IdentificationMap.$(ObjSuf): \
    551         modules/IdentificationMap.$(SrcSuf) \
    552         modules/IdentificationMap.h \
    553         classes/DelphesClasses.h \
    554         classes/DelphesFactory.h \
    555         classes/DelphesFormula.h \
    556         external/ExRootAnalysis/ExRootResult.h \
    557         external/ExRootAnalysis/ExRootFilter.h \
    558         external/ExRootAnalysis/ExRootClassifier.h
    559 tmp/modules/EnergyScale.$(ObjSuf): \
    560         modules/EnergyScale.$(SrcSuf) \
    561         modules/EnergyScale.h \
    562         classes/DelphesClasses.h \
    563         classes/DelphesFactory.h \
    564         classes/DelphesFormula.h \
    565         external/ExRootAnalysis/ExRootResult.h \
    566         external/ExRootAnalysis/ExRootFilter.h \
    567         external/ExRootAnalysis/ExRootClassifier.h
    568 tmp/modules/MomentumSmearing.$(ObjSuf): \
    569         modules/MomentumSmearing.$(SrcSuf) \
    570         modules/MomentumSmearing.h \
    571         classes/DelphesClasses.h \
    572         classes/DelphesFactory.h \
    573         classes/DelphesFormula.h \
    574         external/ExRootAnalysis/ExRootResult.h \
    575         external/ExRootAnalysis/ExRootFilter.h \
    576         external/ExRootAnalysis/ExRootClassifier.h
    577 tmp/modules/Calorimeter.$(ObjSuf): \
    578         modules/Calorimeter.$(SrcSuf) \
    579         modules/Calorimeter.h \
    580         classes/DelphesClasses.h \
    581         classes/DelphesFactory.h \
    582         classes/DelphesFormula.h \
    583         external/ExRootAnalysis/ExRootResult.h \
    584         external/ExRootAnalysis/ExRootFilter.h \
    585         external/ExRootAnalysis/ExRootClassifier.h
    586 tmp/modules/TrackCountingBTagging.$(ObjSuf): \
    587         modules/TrackCountingBTagging.$(SrcSuf) \
    588         modules/TrackCountingBTagging.h \
    589         classes/DelphesClasses.h \
    590         classes/DelphesFactory.h \
    591         classes/DelphesFormula.h
    592 tmp/modules/Delphes.$(ObjSuf): \
    593         modules/Delphes.$(SrcSuf) \
    594         modules/Delphes.h \
    595         classes/DelphesClasses.h \
    596         classes/DelphesFactory.h \
    597         classes/DelphesFormula.h \
    598         external/ExRootAnalysis/ExRootResult.h \
    599         external/ExRootAnalysis/ExRootFilter.h \
    600         external/ExRootAnalysis/ExRootClassifier.h \
    601         external/ExRootAnalysis/ExRootConfReader.h \
    602         external/ExRootAnalysis/ExRootTreeWriter.h
    603 tmp/modules/TreeWriter.$(ObjSuf): \
    604         modules/TreeWriter.$(SrcSuf) \
    605         modules/TreeWriter.h \
    606         classes/DelphesClasses.h \
    607         classes/DelphesFactory.h \
    608         classes/DelphesFormula.h \
    609         external/ExRootAnalysis/ExRootResult.h \
    610         external/ExRootAnalysis/ExRootFilter.h \
    611         external/ExRootAnalysis/ExRootClassifier.h \
    612         external/ExRootAnalysis/ExRootTreeBranch.h
    613 tmp/modules/StatusPidFilter.$(ObjSuf): \
    614         modules/StatusPidFilter.$(SrcSuf) \
    615         modules/StatusPidFilter.h \
    616524        classes/DelphesClasses.h \
    617525        classes/DelphesFactory.h \
     
    635543        modules/EnergySmearing.$(SrcSuf) \
    636544        modules/EnergySmearing.h \
    637         classes/DelphesClasses.h \
    638         classes/DelphesFactory.h \
    639         classes/DelphesFormula.h \
    640         external/ExRootAnalysis/ExRootResult.h \
    641         external/ExRootAnalysis/ExRootFilter.h \
    642         external/ExRootAnalysis/ExRootClassifier.h
    643 tmp/modules/LeptonDressing.$(ObjSuf): \
    644         modules/LeptonDressing.$(SrcSuf) \
    645         modules/LeptonDressing.h \
    646         classes/DelphesClasses.h \
    647         classes/DelphesFactory.h \
    648         classes/DelphesFormula.h \
    649         external/ExRootAnalysis/ExRootResult.h \
    650         external/ExRootAnalysis/ExRootFilter.h \
    651         external/ExRootAnalysis/ExRootClassifier.h
    652 tmp/modules/UniqueObjectFinder.$(ObjSuf): \
    653         modules/UniqueObjectFinder.$(SrcSuf) \
    654         modules/UniqueObjectFinder.h \
    655         classes/DelphesClasses.h \
    656         classes/DelphesFactory.h \
    657         classes/DelphesFormula.h \
    658         external/ExRootAnalysis/ExRootResult.h \
    659         external/ExRootAnalysis/ExRootFilter.h \
    660         external/ExRootAnalysis/ExRootClassifier.h
    661 tmp/modules/ConstituentFilter.$(ObjSuf): \
    662         modules/ConstituentFilter.$(SrcSuf) \
    663         modules/ConstituentFilter.h \
    664         classes/DelphesClasses.h \
    665         classes/DelphesFactory.h \
    666         classes/DelphesFormula.h \
    667         external/ExRootAnalysis/ExRootResult.h \
    668         external/ExRootAnalysis/ExRootFilter.h \
    669         external/ExRootAnalysis/ExRootClassifier.h
    670 tmp/modules/ParticlePropagator.$(ObjSuf): \
    671         modules/ParticlePropagator.$(SrcSuf) \
    672         modules/ParticlePropagator.h \
    673         classes/DelphesClasses.h \
    674         classes/DelphesFactory.h \
    675         classes/DelphesFormula.h \
    676         external/ExRootAnalysis/ExRootResult.h \
    677         external/ExRootAnalysis/ExRootFilter.h \
    678         external/ExRootAnalysis/ExRootClassifier.h
    679 tmp/modules/JetPileUpSubtractor.$(ObjSuf): \
    680         modules/JetPileUpSubtractor.$(SrcSuf) \
    681         modules/JetPileUpSubtractor.h \
    682         classes/DelphesClasses.h \
    683         classes/DelphesFactory.h \
    684         classes/DelphesFormula.h \
    685         external/ExRootAnalysis/ExRootResult.h \
    686         external/ExRootAnalysis/ExRootFilter.h \
    687         external/ExRootAnalysis/ExRootClassifier.h
    688 tmp/modules/TrackPileUpSubtractor.$(ObjSuf): \
    689         modules/TrackPileUpSubtractor.$(SrcSuf) \
    690         modules/TrackPileUpSubtractor.h \
    691545        classes/DelphesClasses.h \
    692546        classes/DelphesFactory.h \
     
    717571        external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.hh \
    718572        external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.hh
     573tmp/modules/SimpleCalorimeter.$(ObjSuf): \
     574        modules/SimpleCalorimeter.$(SrcSuf) \
     575        modules/SimpleCalorimeter.h \
     576        classes/DelphesClasses.h \
     577        classes/DelphesFactory.h \
     578        classes/DelphesFormula.h \
     579        external/ExRootAnalysis/ExRootResult.h \
     580        external/ExRootAnalysis/ExRootFilter.h \
     581        external/ExRootAnalysis/ExRootClassifier.h
     582tmp/modules/LeptonDressing.$(ObjSuf): \
     583        modules/LeptonDressing.$(SrcSuf) \
     584        modules/LeptonDressing.h \
     585        classes/DelphesClasses.h \
     586        classes/DelphesFactory.h \
     587        classes/DelphesFormula.h \
     588        external/ExRootAnalysis/ExRootResult.h \
     589        external/ExRootAnalysis/ExRootFilter.h \
     590        external/ExRootAnalysis/ExRootClassifier.h
     591tmp/modules/Efficiency.$(ObjSuf): \
     592        modules/Efficiency.$(SrcSuf) \
     593        modules/Efficiency.h \
     594        classes/DelphesClasses.h \
     595        classes/DelphesFactory.h \
     596        classes/DelphesFormula.h \
     597        external/ExRootAnalysis/ExRootResult.h \
     598        external/ExRootAnalysis/ExRootFilter.h \
     599        external/ExRootAnalysis/ExRootClassifier.h
    719600tmp/modules/TimeSmearing.$(ObjSuf): \
    720601        modules/TimeSmearing.$(SrcSuf) \
     
    726607        external/ExRootAnalysis/ExRootFilter.h \
    727608        external/ExRootAnalysis/ExRootClassifier.h
    728 tmp/modules/Weighter.$(ObjSuf): \
    729         modules/Weighter.$(SrcSuf) \
    730         modules/Weighter.h \
     609tmp/modules/PileUpJetID.$(ObjSuf): \
     610        modules/PileUpJetID.$(SrcSuf) \
     611        modules/PileUpJetID.h \
     612        classes/DelphesClasses.h \
     613        classes/DelphesFactory.h \
     614        classes/DelphesFormula.h \
     615        external/ExRootAnalysis/ExRootResult.h \
     616        external/ExRootAnalysis/ExRootFilter.h \
     617        external/ExRootAnalysis/ExRootClassifier.h
     618tmp/modules/JetPileUpSubtractor.$(ObjSuf): \
     619        modules/JetPileUpSubtractor.$(SrcSuf) \
     620        modules/JetPileUpSubtractor.h \
     621        classes/DelphesClasses.h \
     622        classes/DelphesFactory.h \
     623        classes/DelphesFormula.h \
     624        external/ExRootAnalysis/ExRootResult.h \
     625        external/ExRootAnalysis/ExRootFilter.h \
     626        external/ExRootAnalysis/ExRootClassifier.h
     627tmp/modules/TauTagging.$(ObjSuf): \
     628        modules/TauTagging.$(SrcSuf) \
     629        modules/TauTagging.h \
     630        classes/DelphesClasses.h \
     631        classes/DelphesFactory.h \
     632        classes/DelphesFormula.h \
     633        external/ExRootAnalysis/ExRootResult.h \
     634        external/ExRootAnalysis/ExRootFilter.h \
     635        external/ExRootAnalysis/ExRootClassifier.h
     636tmp/modules/BTagging.$(ObjSuf): \
     637        modules/BTagging.$(SrcSuf) \
     638        modules/BTagging.h \
     639        classes/DelphesClasses.h \
     640        classes/DelphesFactory.h \
     641        classes/DelphesFormula.h \
     642        external/ExRootAnalysis/ExRootResult.h \
     643        external/ExRootAnalysis/ExRootFilter.h \
     644        external/ExRootAnalysis/ExRootClassifier.h
     645tmp/modules/Merger.$(ObjSuf): \
     646        modules/Merger.$(SrcSuf) \
     647        modules/Merger.h \
     648        classes/DelphesClasses.h \
     649        classes/DelphesFactory.h \
     650        classes/DelphesFormula.h \
     651        external/ExRootAnalysis/ExRootResult.h \
     652        external/ExRootAnalysis/ExRootFilter.h \
     653        external/ExRootAnalysis/ExRootClassifier.h
     654tmp/modules/FastJetGridMedianEstimator.$(ObjSuf): \
     655        modules/FastJetGridMedianEstimator.$(SrcSuf) \
     656        modules/FastJetGridMedianEstimator.h \
     657        classes/DelphesClasses.h \
     658        classes/DelphesFactory.h \
     659        classes/DelphesFormula.h \
     660        external/ExRootAnalysis/ExRootResult.h \
     661        external/ExRootAnalysis/ExRootFilter.h \
     662        external/ExRootAnalysis/ExRootClassifier.h \
     663        external/fastjet/PseudoJet.hh \
     664        external/fastjet/JetDefinition.hh \
     665        external/fastjet/ClusterSequence.hh \
     666        external/fastjet/Selector.hh \
     667        external/fastjet/RectangularGrid.hh \
     668        external/fastjet/ClusterSequenceArea.hh \
     669        external/fastjet/tools/JetMedianBackgroundEstimator.hh \
     670        external/fastjet/tools/GridMedianBackgroundEstimator.hh \
     671        external/fastjet/plugins/SISCone/fastjet/SISConePlugin.hh \
     672        external/fastjet/plugins/CDFCones/fastjet/CDFMidPointPlugin.hh \
     673        external/fastjet/plugins/CDFCones/fastjet/CDFJetCluPlugin.hh \
     674        external/fastjet/contribs/Nsubjettiness/Nsubjettiness.hh \
     675        external/fastjet/contribs/Nsubjettiness/Njettiness.hh \
     676        external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.hh \
     677        external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.hh
     678tmp/modules/Cloner.$(ObjSuf): \
     679        modules/Cloner.$(SrcSuf) \
     680        modules/Cloner.h \
     681        classes/DelphesClasses.h \
     682        classes/DelphesFactory.h \
     683        classes/DelphesFormula.h \
     684        external/ExRootAnalysis/ExRootResult.h \
     685        external/ExRootAnalysis/ExRootFilter.h \
     686        external/ExRootAnalysis/ExRootClassifier.h
     687tmp/modules/PdgCodeFilter.$(ObjSuf): \
     688        modules/PdgCodeFilter.$(SrcSuf) \
     689        modules/PdgCodeFilter.h \
     690        classes/DelphesClasses.h \
     691        classes/DelphesFactory.h \
     692        classes/DelphesFormula.h \
     693        external/ExRootAnalysis/ExRootResult.h \
     694        external/ExRootAnalysis/ExRootFilter.h \
     695        external/ExRootAnalysis/ExRootClassifier.h
     696tmp/modules/EnergyScale.$(ObjSuf): \
     697        modules/EnergyScale.$(SrcSuf) \
     698        modules/EnergyScale.h \
     699        classes/DelphesClasses.h \
     700        classes/DelphesFactory.h \
     701        classes/DelphesFormula.h \
     702        external/ExRootAnalysis/ExRootResult.h \
     703        external/ExRootAnalysis/ExRootFilter.h \
     704        external/ExRootAnalysis/ExRootClassifier.h
     705tmp/modules/IdentificationMap.$(ObjSuf): \
     706        modules/IdentificationMap.$(SrcSuf) \
     707        modules/IdentificationMap.h \
     708        classes/DelphesClasses.h \
     709        classes/DelphesFactory.h \
     710        classes/DelphesFormula.h \
     711        external/ExRootAnalysis/ExRootResult.h \
     712        external/ExRootAnalysis/ExRootFilter.h \
     713        external/ExRootAnalysis/ExRootClassifier.h
     714tmp/modules/TrackCountingBTagging.$(ObjSuf): \
     715        modules/TrackCountingBTagging.$(SrcSuf) \
     716        modules/TrackCountingBTagging.h \
     717        classes/DelphesClasses.h \
     718        classes/DelphesFactory.h \
     719        classes/DelphesFormula.h
     720tmp/modules/Calorimeter.$(ObjSuf): \
     721        modules/Calorimeter.$(SrcSuf) \
     722        modules/Calorimeter.h \
    731723        classes/DelphesClasses.h \
    732724        classes/DelphesFactory.h \
     
    745737        external/ExRootAnalysis/ExRootFilter.h \
    746738        external/ExRootAnalysis/ExRootClassifier.h
    747 tmp/external/ExRootAnalysis/ExRootTask.$(ObjSuf): \
    748         external/ExRootAnalysis/ExRootTask.$(SrcSuf) \
    749         external/ExRootAnalysis/ExRootTask.h \
    750         external/ExRootAnalysis/ExRootConfReader.h
     739tmp/modules/MomentumSmearing.$(ObjSuf): \
     740        modules/MomentumSmearing.$(SrcSuf) \
     741        modules/MomentumSmearing.h \
     742        classes/DelphesClasses.h \
     743        classes/DelphesFactory.h \
     744        classes/DelphesFormula.h \
     745        external/ExRootAnalysis/ExRootResult.h \
     746        external/ExRootAnalysis/ExRootFilter.h \
     747        external/ExRootAnalysis/ExRootClassifier.h
     748tmp/modules/ImpactParameterSmearing.$(ObjSuf): \
     749        modules/ImpactParameterSmearing.$(SrcSuf) \
     750        modules/ImpactParameterSmearing.h \
     751        classes/DelphesClasses.h \
     752        classes/DelphesFactory.h \
     753        classes/DelphesFormula.h \
     754        external/ExRootAnalysis/ExRootResult.h \
     755        external/ExRootAnalysis/ExRootFilter.h \
     756        external/ExRootAnalysis/ExRootClassifier.h
     757tmp/modules/TreeWriter.$(ObjSuf): \
     758        modules/TreeWriter.$(SrcSuf) \
     759        modules/TreeWriter.h \
     760        classes/DelphesClasses.h \
     761        classes/DelphesFactory.h \
     762        classes/DelphesFormula.h \
     763        external/ExRootAnalysis/ExRootResult.h \
     764        external/ExRootAnalysis/ExRootFilter.h \
     765        external/ExRootAnalysis/ExRootClassifier.h \
     766        external/ExRootAnalysis/ExRootTreeBranch.h
    751767tmp/external/ExRootAnalysis/ExRootTreeWriter.$(ObjSuf): \
    752768        external/ExRootAnalysis/ExRootTreeWriter.$(SrcSuf) \
     
    765781        external/ExRootAnalysis/ExRootConfReader.h \
    766782        external/tcl/tcl.h
    767 tmp/external/ExRootAnalysis/ExRootTreeReader.$(ObjSuf): \
    768         external/ExRootAnalysis/ExRootTreeReader.$(SrcSuf) \
    769         external/ExRootAnalysis/ExRootTreeReader.h
    770783tmp/external/ExRootAnalysis/ExRootProgressBar.$(ObjSuf): \
    771784        external/ExRootAnalysis/ExRootProgressBar.$(SrcSuf) \
     
    774787        external/ExRootAnalysis/ExRootTreeBranch.$(SrcSuf) \
    775788        external/ExRootAnalysis/ExRootTreeBranch.h
     789tmp/external/ExRootAnalysis/ExRootTreeReader.$(ObjSuf): \
     790        external/ExRootAnalysis/ExRootTreeReader.$(SrcSuf) \
     791        external/ExRootAnalysis/ExRootTreeReader.h
     792tmp/external/ExRootAnalysis/ExRootTask.$(ObjSuf): \
     793        external/ExRootAnalysis/ExRootTask.$(SrcSuf) \
     794        external/ExRootAnalysis/ExRootTask.h \
     795        external/ExRootAnalysis/ExRootConfReader.h
    776796tmp/external/ExRootAnalysis/ExRootUtilities.$(ObjSuf): \
    777797        external/ExRootAnalysis/ExRootUtilities.$(SrcSuf) \
    778798        external/ExRootAnalysis/ExRootUtilities.h
     799tmp/external/fastjet/Selector.$(ObjSuf): \
     800        external/fastjet/Selector.$(SrcSuf) \
     801        external/fastjet/Selector.hh \
     802        external/fastjet/GhostedAreaSpec.hh
     803tmp/external/fastjet/BasicRandom.$(ObjSuf): \
     804        external/fastjet/BasicRandom.$(SrcSuf) \
     805        external/fastjet/internal/BasicRandom.hh
     806tmp/external/fastjet/Dnn2piCylinder.$(ObjSuf): \
     807        external/fastjet/Dnn2piCylinder.$(SrcSuf) \
     808        external/fastjet/internal/Dnn2piCylinder.hh
     809tmp/external/fastjet/Dnn3piCylinder.$(ObjSuf): \
     810        external/fastjet/Dnn3piCylinder.$(SrcSuf) \
     811        external/fastjet/internal/Dnn3piCylinder.hh
    779812tmp/external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(ObjSuf): \
    780813        external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(SrcSuf) \
    781814        external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh
    782 tmp/external/fastjet/PseudoJetStructureBase.$(ObjSuf): \
    783         external/fastjet/PseudoJetStructureBase.$(SrcSuf) \
    784         external/fastjet/PseudoJetStructureBase.hh \
     815tmp/external/fastjet/LazyTiling9.$(ObjSuf): \
     816        external/fastjet/LazyTiling9.$(SrcSuf) \
     817        external/fastjet/internal/LazyTiling9.hh \
     818        external/fastjet/internal/TilingExtent.hh
     819tmp/external/fastjet/AreaDefinition.$(ObjSuf): \
     820        external/fastjet/AreaDefinition.$(SrcSuf) \
     821        external/fastjet/AreaDefinition.hh
     822tmp/external/fastjet/ClusterSequence_DumbN3.$(ObjSuf): \
     823        external/fastjet/ClusterSequence_DumbN3.$(SrcSuf) \
     824        external/fastjet/PseudoJet.hh \
     825        external/fastjet/ClusterSequence.hh
     826tmp/external/fastjet/ClusterSequence_Delaunay.$(ObjSuf): \
     827        external/fastjet/ClusterSequence_Delaunay.$(SrcSuf) \
    785828        external/fastjet/Error.hh \
    786829        external/fastjet/PseudoJet.hh \
    787830        external/fastjet/ClusterSequence.hh \
    788         external/fastjet/ClusterSequenceAreaBase.hh
    789 tmp/external/fastjet/ClusterSequenceVoronoiArea.$(ObjSuf): \
    790         external/fastjet/ClusterSequenceVoronoiArea.$(SrcSuf) \
    791         external/fastjet/ClusterSequenceVoronoiArea.hh \
    792         external/fastjet/internal/Voronoi.hh
    793 tmp/external/fastjet/ClusterSequence1GhostPassiveArea.$(ObjSuf): \
    794         external/fastjet/ClusterSequence1GhostPassiveArea.$(SrcSuf) \
    795         external/fastjet/ClusterSequence1GhostPassiveArea.hh
    796 tmp/external/fastjet/ClusterSequenceStructure.$(ObjSuf): \
    797         external/fastjet/ClusterSequenceStructure.$(SrcSuf) \
    798         external/fastjet/ClusterSequenceStructure.hh \
    799         external/fastjet/Error.hh \
    800         external/fastjet/PseudoJet.hh \
    801         external/fastjet/ClusterSequence.hh \
    802         external/fastjet/ClusterSequenceAreaBase.hh
     831        external/fastjet/internal/DynamicNearestNeighbours.hh \
     832        external/fastjet/internal/Dnn4piCylinder.hh \
     833        external/fastjet/internal/Dnn3piCylinder.hh \
     834        external/fastjet/internal/Dnn2piCylinder.hh
     835tmp/external/fastjet/Dnn4piCylinder.$(ObjSuf): \
     836        external/fastjet/Dnn4piCylinder.$(SrcSuf) \
     837        external/fastjet/internal/Dnn4piCylinder.hh
    803838tmp/external/fastjet/ClosestPair2D.$(ObjSuf): \
    804839        external/fastjet/ClosestPair2D.$(SrcSuf) \
     
    809844        external/fastjet/Error.hh \
    810845        external/fastjet/CompositeJetStructure.hh
    811 tmp/external/fastjet/ClusterSequenceActiveArea.$(ObjSuf): \
    812         external/fastjet/ClusterSequenceActiveArea.$(SrcSuf) \
    813         external/fastjet/PseudoJet.hh \
    814         external/fastjet/ClusterSequence.hh \
    815         external/fastjet/ClusterSequenceActiveArea.hh \
    816         external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh
    817 tmp/external/fastjet/Dnn4piCylinder.$(ObjSuf): \
    818         external/fastjet/Dnn4piCylinder.$(SrcSuf) \
    819         external/fastjet/internal/Dnn4piCylinder.hh
    820 tmp/external/fastjet/AreaDefinition.$(ObjSuf): \
    821         external/fastjet/AreaDefinition.$(SrcSuf) \
    822         external/fastjet/AreaDefinition.hh
    823 tmp/external/fastjet/ClusterSequence_Delaunay.$(ObjSuf): \
    824         external/fastjet/ClusterSequence_Delaunay.$(SrcSuf) \
    825         external/fastjet/Error.hh \
    826         external/fastjet/PseudoJet.hh \
    827         external/fastjet/ClusterSequence.hh \
    828         external/fastjet/internal/DynamicNearestNeighbours.hh \
    829         external/fastjet/internal/Dnn4piCylinder.hh \
    830         external/fastjet/internal/Dnn3piCylinder.hh \
    831         external/fastjet/internal/Dnn2piCylinder.hh
     846tmp/external/fastjet/RectangularGrid.$(ObjSuf): \
     847        external/fastjet/RectangularGrid.$(SrcSuf) \
     848        external/fastjet/RectangularGrid.hh
    832849tmp/external/fastjet/ClusterSequenceAreaBase.$(ObjSuf): \
    833850        external/fastjet/ClusterSequenceAreaBase.$(SrcSuf) \
    834851        external/fastjet/ClusterSequenceAreaBase.hh
     852tmp/external/fastjet/DnnPlane.$(ObjSuf): \
     853        external/fastjet/DnnPlane.$(SrcSuf) \
     854        external/fastjet/internal/DnnPlane.hh
     855tmp/external/fastjet/LazyTiling25.$(ObjSuf): \
     856        external/fastjet/LazyTiling25.$(SrcSuf) \
     857        external/fastjet/internal/LazyTiling25.hh \
     858        external/fastjet/internal/TilingExtent.hh
     859tmp/external/fastjet/LazyTiling9SeparateGhosts.$(ObjSuf): \
     860        external/fastjet/LazyTiling9SeparateGhosts.$(SrcSuf) \
     861        external/fastjet/internal/LazyTiling9SeparateGhosts.hh \
     862        external/fastjet/internal/TilingExtent.hh
     863tmp/external/fastjet/Error.$(ObjSuf): \
     864        external/fastjet/Error.$(SrcSuf) \
     865        external/fastjet/Error.hh \
     866        external/fastjet/config.h
     867tmp/external/fastjet/ClusterSequenceActiveArea.$(ObjSuf): \
     868        external/fastjet/ClusterSequenceActiveArea.$(SrcSuf) \
     869        external/fastjet/PseudoJet.hh \
     870        external/fastjet/ClusterSequence.hh \
     871        external/fastjet/ClusterSequenceActiveArea.hh \
     872        external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh
     873tmp/external/fastjet/CompositeJetStructure.$(ObjSuf): \
     874        external/fastjet/CompositeJetStructure.$(SrcSuf)
     875tmp/external/fastjet/ClusterSequence_N2.$(ObjSuf): \
     876        external/fastjet/ClusterSequence_N2.$(SrcSuf)
    835877tmp/external/fastjet/ClusterSequence_TiledN2.$(ObjSuf): \
    836878        external/fastjet/ClusterSequence_TiledN2.$(SrcSuf) \
    837879        external/fastjet/PseudoJet.hh \
    838880        external/fastjet/ClusterSequence.hh \
    839         external/fastjet/internal/MinHeap.hh
    840 tmp/external/fastjet/ClusterSequence_N2.$(ObjSuf): \
    841         external/fastjet/ClusterSequence_N2.$(SrcSuf)
     881        external/fastjet/internal/MinHeap.hh \
     882        external/fastjet/internal/TilingExtent.hh
     883tmp/external/fastjet/ClusterSequenceStructure.$(ObjSuf): \
     884        external/fastjet/ClusterSequenceStructure.$(SrcSuf) \
     885        external/fastjet/ClusterSequenceStructure.hh \
     886        external/fastjet/Error.hh \
     887        external/fastjet/PseudoJet.hh \
     888        external/fastjet/ClusterSequence.hh \
     889        external/fastjet/ClusterSequenceAreaBase.hh
    842890tmp/external/fastjet/ClusterSequencePassiveArea.$(ObjSuf): \
    843891        external/fastjet/ClusterSequencePassiveArea.$(SrcSuf) \
    844892        external/fastjet/ClusterSequencePassiveArea.hh \
    845893        external/fastjet/ClusterSequenceVoronoiArea.hh
    846 tmp/external/fastjet/Dnn3piCylinder.$(ObjSuf): \
    847         external/fastjet/Dnn3piCylinder.$(SrcSuf) \
    848         external/fastjet/internal/Dnn3piCylinder.hh
    849 tmp/external/fastjet/Dnn2piCylinder.$(ObjSuf): \
    850         external/fastjet/Dnn2piCylinder.$(SrcSuf) \
    851         external/fastjet/internal/Dnn2piCylinder.hh
    852 tmp/external/fastjet/ClusterSequence_CP2DChan.$(ObjSuf): \
    853         external/fastjet/ClusterSequence_CP2DChan.$(SrcSuf) \
    854         external/fastjet/ClusterSequence.hh \
    855         external/fastjet/internal/ClosestPair2D.hh
    856 tmp/external/fastjet/LimitedWarning.$(ObjSuf): \
    857         external/fastjet/LimitedWarning.$(SrcSuf) \
    858         external/fastjet/LimitedWarning.hh
    859 tmp/external/fastjet/Selector.$(ObjSuf): \
    860         external/fastjet/Selector.$(SrcSuf) \
    861         external/fastjet/Selector.hh \
    862         external/fastjet/GhostedAreaSpec.hh
    863 tmp/external/fastjet/BasicRandom.$(ObjSuf): \
    864         external/fastjet/BasicRandom.$(SrcSuf) \
    865         external/fastjet/internal/BasicRandom.hh
     894tmp/external/fastjet/PseudoJetStructureBase.$(ObjSuf): \
     895        external/fastjet/PseudoJetStructureBase.$(SrcSuf) \
     896        external/fastjet/PseudoJetStructureBase.hh \
     897        external/fastjet/Error.hh \
     898        external/fastjet/PseudoJet.hh \
     899        external/fastjet/ClusterSequence.hh \
     900        external/fastjet/ClusterSequenceAreaBase.hh
     901tmp/external/fastjet/TilingExtent.$(ObjSuf): \
     902        external/fastjet/TilingExtent.$(SrcSuf) \
     903        external/fastjet/internal/TilingExtent.hh
    866904tmp/external/fastjet/Voronoi.$(ObjSuf): \
    867905        external/fastjet/Voronoi.$(SrcSuf) \
    868906        external/fastjet/internal/Voronoi.hh
    869 tmp/external/fastjet/ClusterSequence_DumbN3.$(ObjSuf): \
    870         external/fastjet/ClusterSequence_DumbN3.$(SrcSuf) \
    871         external/fastjet/PseudoJet.hh \
    872         external/fastjet/ClusterSequence.hh
    873 tmp/external/fastjet/PseudoJet.$(ObjSuf): \
    874         external/fastjet/PseudoJet.$(SrcSuf) \
    875         external/fastjet/Error.hh \
    876         external/fastjet/PseudoJet.hh \
    877         external/fastjet/ClusterSequence.hh \
    878         external/fastjet/ClusterSequenceAreaBase.hh \
    879         external/fastjet/CompositeJetStructure.hh
    880 tmp/external/fastjet/CompositeJetStructure.$(ObjSuf): \
    881         external/fastjet/CompositeJetStructure.$(SrcSuf)
    882 tmp/external/fastjet/GhostedAreaSpec.$(ObjSuf): \
    883         external/fastjet/GhostedAreaSpec.$(SrcSuf) \
    884         external/fastjet/GhostedAreaSpec.hh \
    885         external/fastjet/Error.hh
    886 tmp/external/fastjet/DnnPlane.$(ObjSuf): \
    887         external/fastjet/DnnPlane.$(SrcSuf) \
    888         external/fastjet/internal/DnnPlane.hh
    889 tmp/external/fastjet/Error.$(ObjSuf): \
    890         external/fastjet/Error.$(SrcSuf) \
    891         external/fastjet/Error.hh \
    892         external/fastjet/config.h
     907tmp/external/fastjet/LazyTiling9Alt.$(ObjSuf): \
     908        external/fastjet/LazyTiling9Alt.$(SrcSuf) \
     909        external/fastjet/internal/LazyTiling9Alt.hh \
     910        external/fastjet/internal/TilingExtent.hh
     911tmp/external/fastjet/ClusterSequenceArea.$(ObjSuf): \
     912        external/fastjet/ClusterSequenceArea.$(SrcSuf) \
     913        external/fastjet/ClusterSequenceArea.hh
     914tmp/external/fastjet/ClusterSequence1GhostPassiveArea.$(ObjSuf): \
     915        external/fastjet/ClusterSequence1GhostPassiveArea.$(SrcSuf) \
     916        external/fastjet/ClusterSequence1GhostPassiveArea.hh
    893917tmp/external/fastjet/FunctionOfPseudoJet.$(ObjSuf): \
    894918        external/fastjet/FunctionOfPseudoJet.$(SrcSuf)
     
    896920        external/fastjet/MinHeap.$(SrcSuf) \
    897921        external/fastjet/internal/MinHeap.hh
     922tmp/external/fastjet/GhostedAreaSpec.$(ObjSuf): \
     923        external/fastjet/GhostedAreaSpec.$(SrcSuf) \
     924        external/fastjet/GhostedAreaSpec.hh \
     925        external/fastjet/Error.hh
    898926tmp/external/fastjet/RangeDefinition.$(ObjSuf): \
    899927        external/fastjet/RangeDefinition.$(SrcSuf) \
    900928        external/fastjet/RangeDefinition.hh
     929tmp/external/fastjet/ClusterSequence_CP2DChan.$(ObjSuf): \
     930        external/fastjet/ClusterSequence_CP2DChan.$(SrcSuf) \
     931        external/fastjet/ClusterSequence.hh \
     932        external/fastjet/internal/ClosestPair2D.hh
     933tmp/external/fastjet/PseudoJet.$(ObjSuf): \
     934        external/fastjet/PseudoJet.$(SrcSuf) \
     935        external/fastjet/Error.hh \
     936        external/fastjet/PseudoJet.hh \
     937        external/fastjet/ClusterSequence.hh \
     938        external/fastjet/ClusterSequenceAreaBase.hh \
     939        external/fastjet/CompositeJetStructure.hh
     940tmp/external/fastjet/LimitedWarning.$(ObjSuf): \
     941        external/fastjet/LimitedWarning.$(SrcSuf) \
     942        external/fastjet/LimitedWarning.hh
     943tmp/external/fastjet/ClusterSequenceVoronoiArea.$(ObjSuf): \
     944        external/fastjet/ClusterSequenceVoronoiArea.$(SrcSuf) \
     945        external/fastjet/ClusterSequenceVoronoiArea.hh \
     946        external/fastjet/internal/Voronoi.hh
    901947tmp/external/fastjet/ClusterSequence.$(ObjSuf): \
    902948        external/fastjet/ClusterSequence.$(SrcSuf) \
     
    905951        external/fastjet/ClusterSequence.hh \
    906952        external/fastjet/ClusterSequenceStructure.hh \
    907         external/fastjet/version.hh
    908 tmp/external/fastjet/ClusterSequenceArea.$(ObjSuf): \
    909         external/fastjet/ClusterSequenceArea.$(SrcSuf) \
    910         external/fastjet/ClusterSequenceArea.hh
    911 tmp/external/fastjet/tools/CASubJetTagger.$(ObjSuf): \
    912         external/fastjet/tools/CASubJetTagger.$(SrcSuf)
    913 tmp/external/fastjet/tools/Filter.$(ObjSuf): \
    914         external/fastjet/tools/Filter.$(SrcSuf) \
    915         external/fastjet/tools/Filter.hh
     953        external/fastjet/version.hh \
     954        external/fastjet/internal/LazyTiling9Alt.hh \
     955        external/fastjet/internal/LazyTiling9.hh \
     956        external/fastjet/internal/LazyTiling25.hh \
     957        external/fastjet/internal/LazyTiling9SeparateGhosts.hh
    916958tmp/external/fastjet/tools/RestFrameNSubjettinessTagger.$(ObjSuf): \
    917959        external/fastjet/tools/RestFrameNSubjettinessTagger.$(SrcSuf)
    918960tmp/external/fastjet/tools/MassDropTagger.$(ObjSuf): \
    919961        external/fastjet/tools/MassDropTagger.$(SrcSuf)
    920 tmp/external/fastjet/tools/BackgroundEstimatorBase.$(ObjSuf): \
    921         external/fastjet/tools/BackgroundEstimatorBase.$(SrcSuf) \
    922         external/fastjet/tools/BackgroundEstimatorBase.hh
    923 tmp/external/fastjet/tools/JHTopTagger.$(ObjSuf): \
    924         external/fastjet/tools/JHTopTagger.$(SrcSuf)
    925962tmp/external/fastjet/tools/GridMedianBackgroundEstimator.$(ObjSuf): \
    926963        external/fastjet/tools/GridMedianBackgroundEstimator.$(SrcSuf) \
    927964        external/fastjet/tools/GridMedianBackgroundEstimator.hh
    928 tmp/external/fastjet/tools/Subtractor.$(ObjSuf): \
    929         external/fastjet/tools/Subtractor.$(SrcSuf) \
    930         external/fastjet/tools/Subtractor.hh
    931965tmp/external/fastjet/tools/Pruner.$(ObjSuf): \
    932966        external/fastjet/tools/Pruner.$(SrcSuf) \
     
    934968        external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh \
    935969        external/fastjet/Selector.hh
     970tmp/external/fastjet/tools/CASubJetTagger.$(ObjSuf): \
     971        external/fastjet/tools/CASubJetTagger.$(SrcSuf)
     972tmp/external/fastjet/tools/BackgroundEstimatorBase.$(ObjSuf): \
     973        external/fastjet/tools/BackgroundEstimatorBase.$(SrcSuf) \
     974        external/fastjet/tools/BackgroundEstimatorBase.hh
     975tmp/external/fastjet/tools/Subtractor.$(ObjSuf): \
     976        external/fastjet/tools/Subtractor.$(SrcSuf) \
     977        external/fastjet/tools/Subtractor.hh
     978tmp/external/fastjet/tools/Recluster.$(ObjSuf): \
     979        external/fastjet/tools/Recluster.$(SrcSuf) \
     980        external/fastjet/tools/Recluster.hh \
     981        external/fastjet/CompositeJetStructure.hh
    936982tmp/external/fastjet/tools/JetMedianBackgroundEstimator.$(ObjSuf): \
    937983        external/fastjet/tools/JetMedianBackgroundEstimator.$(SrcSuf) \
    938984        external/fastjet/tools/JetMedianBackgroundEstimator.hh
     985tmp/external/fastjet/tools/JHTopTagger.$(ObjSuf): \
     986        external/fastjet/tools/JHTopTagger.$(SrcSuf)
     987tmp/external/fastjet/tools/Filter.$(ObjSuf): \
     988        external/fastjet/tools/Filter.$(SrcSuf) \
     989        external/fastjet/tools/Filter.hh \
     990        external/fastjet/tools/Recluster.hh
    939991tmp/external/fastjet/tools/TopTaggerBase.$(ObjSuf): \
    940992        external/fastjet/tools/TopTaggerBase.$(SrcSuf)
    941 tmp/external/fastjet/plugins/TrackJet/TrackJetPlugin.$(ObjSuf): \
    942         external/fastjet/plugins/TrackJet/TrackJetPlugin.$(SrcSuf) \
     993tmp/external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(ObjSuf): \
     994        external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(SrcSuf) \
     995        external/fastjet/ClusterSequence.hh \
     996        external/fastjet/Error.hh
     997tmp/external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(ObjSuf): \
     998        external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(SrcSuf) \
     999        external/fastjet/ClusterSequence.hh \
     1000        external/fastjet/Error.hh
     1001tmp/external/fastjet/plugins/CDFCones/MidPointAlgorithm.$(ObjSuf): \
     1002        external/fastjet/plugins/CDFCones/MidPointAlgorithm.$(SrcSuf)
     1003tmp/external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(ObjSuf): \
     1004        external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(SrcSuf) \
    9431005        external/fastjet/ClusterSequence.hh
     1006tmp/external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(ObjSuf): \
     1007        external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(SrcSuf)
     1008tmp/external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(ObjSuf): \
     1009        external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(SrcSuf) \
     1010        external/fastjet/ClusterSequence.hh \
     1011        external/fastjet/Error.hh
     1012tmp/external/fastjet/plugins/GridJet/GridJetPlugin.$(ObjSuf): \
     1013        external/fastjet/plugins/GridJet/GridJetPlugin.$(SrcSuf) \
     1014        external/fastjet/ClusterSequence.hh
     1015tmp/external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(ObjSuf): \
     1016        external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(SrcSuf) \
     1017        external/fastjet/ClusterSequence.hh
     1018tmp/external/fastjet/plugins/SISCone/split_merge.$(ObjSuf): \
     1019        external/fastjet/plugins/SISCone/split_merge.$(SrcSuf)
     1020tmp/external/fastjet/plugins/SISCone/hash.$(ObjSuf): \
     1021        external/fastjet/plugins/SISCone/hash.$(SrcSuf)
     1022tmp/external/fastjet/plugins/SISCone/siscone_error.$(ObjSuf): \
     1023        external/fastjet/plugins/SISCone/siscone_error.$(SrcSuf)
     1024tmp/external/fastjet/plugins/SISCone/ranlux.$(ObjSuf): \
     1025        external/fastjet/plugins/SISCone/ranlux.$(SrcSuf)
     1026tmp/external/fastjet/plugins/SISCone/SISConePlugin.$(ObjSuf): \
     1027        external/fastjet/plugins/SISCone/SISConePlugin.$(SrcSuf) \
     1028        external/fastjet/ClusterSequence.hh
     1029tmp/external/fastjet/plugins/SISCone/vicinity.$(ObjSuf): \
     1030        external/fastjet/plugins/SISCone/vicinity.$(SrcSuf)
     1031tmp/external/fastjet/plugins/SISCone/area.$(ObjSuf): \
     1032        external/fastjet/plugins/SISCone/area.$(SrcSuf)
     1033tmp/external/fastjet/plugins/SISCone/reference.$(ObjSuf): \
     1034        external/fastjet/plugins/SISCone/reference.$(SrcSuf)
     1035tmp/external/fastjet/plugins/SISCone/quadtree.$(ObjSuf): \
     1036        external/fastjet/plugins/SISCone/quadtree.$(SrcSuf)
     1037tmp/external/fastjet/plugins/SISCone/siscone.$(ObjSuf): \
     1038        external/fastjet/plugins/SISCone/siscone.$(SrcSuf)
     1039tmp/external/fastjet/plugins/SISCone/momentum.$(ObjSuf): \
     1040        external/fastjet/plugins/SISCone/momentum.$(SrcSuf)
     1041tmp/external/fastjet/plugins/SISCone/protocones.$(ObjSuf): \
     1042        external/fastjet/plugins/SISCone/protocones.$(SrcSuf)
     1043tmp/external/fastjet/plugins/SISCone/geom_2d.$(ObjSuf): \
     1044        external/fastjet/plugins/SISCone/geom_2d.$(SrcSuf)
    9441045tmp/external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(ObjSuf): \
    9451046        external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(SrcSuf) \
     
    9511052tmp/external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(ObjSuf): \
    9521053        external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(SrcSuf)
    953 tmp/external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(ObjSuf): \
    954         external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(SrcSuf) \
    955         external/fastjet/ClusterSequence.hh \
    956         external/fastjet/Error.hh
    957 tmp/external/fastjet/plugins/GridJet/GridJetPlugin.$(ObjSuf): \
    958         external/fastjet/plugins/GridJet/GridJetPlugin.$(SrcSuf) \
     1054tmp/external/fastjet/plugins/EECambridge/EECambridgePlugin.$(ObjSuf): \
     1055        external/fastjet/plugins/EECambridge/EECambridgePlugin.$(SrcSuf) \
     1056        external/fastjet/ClusterSequence.hh \
     1057        external/fastjet/NNH.hh
     1058tmp/external/fastjet/plugins/TrackJet/TrackJetPlugin.$(ObjSuf): \
     1059        external/fastjet/plugins/TrackJet/TrackJetPlugin.$(SrcSuf) \
    9591060        external/fastjet/ClusterSequence.hh
    960 tmp/external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(ObjSuf): \
    961         external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(SrcSuf) \
    962         external/fastjet/ClusterSequence.hh
    963 tmp/external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(ObjSuf): \
    964         external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(SrcSuf) \
    965         external/fastjet/ClusterSequence.hh \
    966         external/fastjet/Error.hh
    967 tmp/external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(ObjSuf): \
    968         external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(SrcSuf)
    969 tmp/external/fastjet/plugins/CDFCones/MidPointAlgorithm.$(ObjSuf): \
    970         external/fastjet/plugins/CDFCones/MidPointAlgorithm.$(SrcSuf)
    971 tmp/external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(ObjSuf): \
    972         external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(SrcSuf) \
    973         external/fastjet/ClusterSequence.hh \
    974         external/fastjet/Error.hh
    975 tmp/external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(ObjSuf): \
    976         external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(SrcSuf) \
    977         external/fastjet/ClusterSequence.hh
    978 tmp/external/fastjet/plugins/SISCone/area.$(ObjSuf): \
    979         external/fastjet/plugins/SISCone/area.$(SrcSuf)
    980 tmp/external/fastjet/plugins/SISCone/siscone.$(ObjSuf): \
    981         external/fastjet/plugins/SISCone/siscone.$(SrcSuf)
    982 tmp/external/fastjet/plugins/SISCone/vicinity.$(ObjSuf): \
    983         external/fastjet/plugins/SISCone/vicinity.$(SrcSuf)
    984 tmp/external/fastjet/plugins/SISCone/geom_2d.$(ObjSuf): \
    985         external/fastjet/plugins/SISCone/geom_2d.$(SrcSuf)
    986 tmp/external/fastjet/plugins/SISCone/hash.$(ObjSuf): \
    987         external/fastjet/plugins/SISCone/hash.$(SrcSuf)
    988 tmp/external/fastjet/plugins/SISCone/quadtree.$(ObjSuf): \
    989         external/fastjet/plugins/SISCone/quadtree.$(SrcSuf)
    990 tmp/external/fastjet/plugins/SISCone/split_merge.$(ObjSuf): \
    991         external/fastjet/plugins/SISCone/split_merge.$(SrcSuf)
    992 tmp/external/fastjet/plugins/SISCone/momentum.$(ObjSuf): \
    993         external/fastjet/plugins/SISCone/momentum.$(SrcSuf)
    994 tmp/external/fastjet/plugins/SISCone/ranlux.$(ObjSuf): \
    995         external/fastjet/plugins/SISCone/ranlux.$(SrcSuf)
    996 tmp/external/fastjet/plugins/SISCone/reference.$(ObjSuf): \
    997         external/fastjet/plugins/SISCone/reference.$(SrcSuf)
    998 tmp/external/fastjet/plugins/SISCone/SISConePlugin.$(ObjSuf): \
    999         external/fastjet/plugins/SISCone/SISConePlugin.$(SrcSuf) \
    1000         external/fastjet/ClusterSequence.hh
    1001 tmp/external/fastjet/plugins/SISCone/protocones.$(ObjSuf): \
    1002         external/fastjet/plugins/SISCone/protocones.$(SrcSuf)
    1003 tmp/external/fastjet/plugins/SISCone/siscone_error.$(ObjSuf): \
    1004         external/fastjet/plugins/SISCone/siscone_error.$(SrcSuf)
    10051061tmp/external/fastjet/plugins/Jade/JadePlugin.$(ObjSuf): \
    10061062        external/fastjet/plugins/Jade/JadePlugin.$(SrcSuf) \
     
    10101066        external/fastjet/plugins/NestedDefs/NestedDefsPlugin.$(SrcSuf) \
    10111067        external/fastjet/ClusterSequence.hh
    1012 tmp/external/fastjet/plugins/EECambridge/EECambridgePlugin.$(ObjSuf): \
    1013         external/fastjet/plugins/EECambridge/EECambridgePlugin.$(SrcSuf) \
    1014         external/fastjet/ClusterSequence.hh \
    1015         external/fastjet/NNH.hh
     1068tmp/external/fastjet/contribs/SoftKiller/SoftKiller.$(ObjSuf): \
     1069        external/fastjet/contribs/SoftKiller/SoftKiller.$(SrcSuf)
     1070tmp/external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(ObjSuf): \
     1071        external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(SrcSuf)
     1072tmp/external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(ObjSuf): \
     1073        external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(SrcSuf)
     1074tmp/external/fastjet/contribs/Nsubjettiness/AxesFinder.$(ObjSuf): \
     1075        external/fastjet/contribs/Nsubjettiness/AxesFinder.$(SrcSuf)
     1076tmp/external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.$(ObjSuf): \
     1077        external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.$(SrcSuf)
     1078tmp/external/fastjet/contribs/Nsubjettiness/Njettiness.$(ObjSuf): \
     1079        external/fastjet/contribs/Nsubjettiness/Njettiness.$(SrcSuf)
     1080tmp/external/fastjet/contribs/Nsubjettiness/NjettinessDefinition.$(ObjSuf): \
     1081        external/fastjet/contribs/Nsubjettiness/NjettinessDefinition.$(SrcSuf)
    10161082tmp/external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(ObjSuf): \
    10171083        external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(SrcSuf)
    1018 tmp/external/fastjet/contribs/Nsubjettiness/Njettiness.$(ObjSuf): \
    1019         external/fastjet/contribs/Nsubjettiness/Njettiness.$(SrcSuf)
    1020 tmp/external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(ObjSuf): \
    1021         external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(SrcSuf)
    1022 tmp/external/fastjet/contribs/Nsubjettiness/AxesFinder.$(ObjSuf): \
    1023         external/fastjet/contribs/Nsubjettiness/AxesFinder.$(SrcSuf)
    1024 tmp/external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(ObjSuf): \
    1025         external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(SrcSuf)
    1026 tmp/external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.$(ObjSuf): \
    1027         external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.$(SrcSuf)
     1084tmp/external/Hector/H_OpticalElement.$(ObjSuf): \
     1085        external/Hector/H_OpticalElement.$(SrcSuf)
     1086tmp/external/Hector/H_CircularAperture.$(ObjSuf): \
     1087        external/Hector/H_CircularAperture.$(SrcSuf)
     1088tmp/external/Hector/H_TransportMatrices.$(ObjSuf): \
     1089        external/Hector/H_TransportMatrices.$(SrcSuf)
     1090tmp/external/Hector/H_SectorDipole.$(ObjSuf): \
     1091        external/Hector/H_SectorDipole.$(SrcSuf)
     1092tmp/external/Hector/H_Dipole.$(ObjSuf): \
     1093        external/Hector/H_Dipole.$(SrcSuf)
     1094tmp/external/Hector/H_AbstractBeamLine.$(ObjSuf): \
     1095        external/Hector/H_AbstractBeamLine.$(SrcSuf)
     1096tmp/external/Hector/H_BeamLine.$(ObjSuf): \
     1097        external/Hector/H_BeamLine.$(SrcSuf)
     1098tmp/external/Hector/H_RectEllipticAperture.$(ObjSuf): \
     1099        external/Hector/H_RectEllipticAperture.$(SrcSuf)
     1100tmp/external/Hector/H_HorizontalKicker.$(ObjSuf): \
     1101        external/Hector/H_HorizontalKicker.$(SrcSuf)
     1102tmp/external/Hector/H_Kicker.$(ObjSuf): \
     1103        external/Hector/H_Kicker.$(SrcSuf)
     1104tmp/external/Hector/H_BeamLineParser.$(ObjSuf): \
     1105        external/Hector/H_BeamLineParser.$(SrcSuf)
     1106tmp/external/Hector/H_BeamParticle.$(ObjSuf): \
     1107        external/Hector/H_BeamParticle.$(SrcSuf)
     1108tmp/external/Hector/H_RectangularDipole.$(ObjSuf): \
     1109        external/Hector/H_RectangularDipole.$(SrcSuf)
     1110tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf): \
     1111        external/Hector/H_VerticalQuadrupole.$(SrcSuf)
     1112tmp/external/Hector/H_Marker.$(ObjSuf): \
     1113        external/Hector/H_Marker.$(SrcSuf)
     1114tmp/external/Hector/H_Beam.$(ObjSuf): \
     1115        external/Hector/H_Beam.$(SrcSuf)
     1116tmp/external/Hector/H_EllipticAperture.$(ObjSuf): \
     1117        external/Hector/H_EllipticAperture.$(SrcSuf)
     1118tmp/external/Hector/H_VerticalKicker.$(ObjSuf): \
     1119        external/Hector/H_VerticalKicker.$(SrcSuf)
    10281120tmp/external/Hector/H_HorizontalQuadrupole.$(ObjSuf): \
    10291121        external/Hector/H_HorizontalQuadrupole.$(SrcSuf)
    1030 tmp/external/Hector/H_Aperture.$(ObjSuf): \
    1031         external/Hector/H_Aperture.$(SrcSuf)
    1032 tmp/external/Hector/H_TransportMatrices.$(ObjSuf): \
    1033         external/Hector/H_TransportMatrices.$(SrcSuf)
     1122tmp/external/Hector/H_Parameters.$(ObjSuf): \
     1123        external/Hector/H_Parameters.$(SrcSuf)
     1124tmp/external/Hector/H_Drift.$(ObjSuf): \
     1125        external/Hector/H_Drift.$(SrcSuf)
    10341126tmp/external/Hector/H_RomanPot.$(ObjSuf): \
    10351127        external/Hector/H_RomanPot.$(SrcSuf)
    10361128tmp/external/Hector/H_RecRPObject.$(ObjSuf): \
    10371129        external/Hector/H_RecRPObject.$(SrcSuf)
    1038 tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf): \
    1039         external/Hector/H_VerticalQuadrupole.$(SrcSuf)
    1040 tmp/external/Hector/H_OpticalElement.$(ObjSuf): \
    1041         external/Hector/H_OpticalElement.$(SrcSuf)
     1130tmp/external/Hector/H_RectangularCollimator.$(ObjSuf): \
     1131        external/Hector/H_RectangularCollimator.$(SrcSuf)
     1132tmp/external/Hector/H_Aperture.$(ObjSuf): \
     1133        external/Hector/H_Aperture.$(SrcSuf)
    10421134tmp/external/Hector/H_RectangularAperture.$(ObjSuf): \
    10431135        external/Hector/H_RectangularAperture.$(SrcSuf)
    1044 tmp/external/Hector/H_EllipticAperture.$(ObjSuf): \
    1045         external/Hector/H_EllipticAperture.$(SrcSuf)
    1046 tmp/external/Hector/H_BeamLineParser.$(ObjSuf): \
    1047         external/Hector/H_BeamLineParser.$(SrcSuf)
    1048 tmp/external/Hector/H_RectangularDipole.$(ObjSuf): \
    1049         external/Hector/H_RectangularDipole.$(SrcSuf)
    1050 tmp/external/Hector/H_Marker.$(ObjSuf): \
    1051         external/Hector/H_Marker.$(SrcSuf)
    1052 tmp/external/Hector/H_Kicker.$(ObjSuf): \
    1053         external/Hector/H_Kicker.$(SrcSuf)
    1054 tmp/external/Hector/H_BeamLine.$(ObjSuf): \
    1055         external/Hector/H_BeamLine.$(SrcSuf)
    1056 tmp/external/Hector/H_Beam.$(ObjSuf): \
    1057         external/Hector/H_Beam.$(SrcSuf)
    1058 tmp/external/Hector/H_RectangularCollimator.$(ObjSuf): \
    1059         external/Hector/H_RectangularCollimator.$(SrcSuf)
    1060 tmp/external/Hector/H_Parameters.$(ObjSuf): \
    1061         external/Hector/H_Parameters.$(SrcSuf)
    1062 tmp/external/Hector/H_Drift.$(ObjSuf): \
    1063         external/Hector/H_Drift.$(SrcSuf)
    1064 tmp/external/Hector/H_CircularAperture.$(ObjSuf): \
    1065         external/Hector/H_CircularAperture.$(SrcSuf)
    1066 tmp/external/Hector/H_VerticalKicker.$(ObjSuf): \
    1067         external/Hector/H_VerticalKicker.$(SrcSuf)
    1068 tmp/external/Hector/H_SectorDipole.$(ObjSuf): \
    1069         external/Hector/H_SectorDipole.$(SrcSuf)
    1070 tmp/external/Hector/H_HorizontalKicker.$(ObjSuf): \
    1071         external/Hector/H_HorizontalKicker.$(SrcSuf)
    1072 tmp/external/Hector/H_Dipole.$(ObjSuf): \
    1073         external/Hector/H_Dipole.$(SrcSuf)
    1074 tmp/external/Hector/H_AbstractBeamLine.$(ObjSuf): \
    1075         external/Hector/H_AbstractBeamLine.$(SrcSuf)
    1076 tmp/external/Hector/H_BeamParticle.$(ObjSuf): \
    1077         external/Hector/H_BeamParticle.$(SrcSuf)
    10781136tmp/external/Hector/H_Quadrupole.$(ObjSuf): \
    10791137        external/Hector/H_Quadrupole.$(SrcSuf)
    1080 tmp/external/Hector/H_RectEllipticAperture.$(ObjSuf): \
    1081         external/Hector/H_RectEllipticAperture.$(SrcSuf)
    10821138DELPHES_OBJ +=  \
     1139        tmp/classes/DelphesPileUpReader.$(ObjSuf) \
     1140        tmp/classes/DelphesSTDHEPReader.$(ObjSuf) \
    10831141        tmp/classes/DelphesTF2.$(ObjSuf) \
     1142        tmp/classes/DelphesHepMCReader.$(ObjSuf) \
     1143        tmp/classes/DelphesLHEFReader.$(ObjSuf) \
    10841144        tmp/classes/DelphesStream.$(ObjSuf) \
    10851145        tmp/classes/DelphesModule.$(ObjSuf) \
     1146        tmp/classes/DelphesFactory.$(ObjSuf) \
     1147        tmp/classes/DelphesClasses.$(ObjSuf) \
     1148        tmp/classes/DelphesFormula.$(ObjSuf) \
    10861149        tmp/classes/DelphesPileUpWriter.$(ObjSuf) \
    1087         tmp/classes/DelphesHepMCReader.$(ObjSuf) \
    1088         tmp/classes/DelphesLHEFReader.$(ObjSuf) \
    1089         tmp/classes/DelphesFormula.$(ObjSuf) \
    1090         tmp/classes/DelphesClasses.$(ObjSuf) \
    1091         tmp/classes/DelphesSTDHEPReader.$(ObjSuf) \
    1092         tmp/classes/DelphesPileUpReader.$(ObjSuf) \
    1093         tmp/classes/DelphesFactory.$(ObjSuf) \
     1150        tmp/modules/StatusPidFilter.$(ObjSuf) \
     1151        tmp/modules/ParticlePropagator.$(ObjSuf) \
     1152        tmp/modules/Delphes.$(ObjSuf) \
     1153        tmp/modules/UniqueObjectFinder.$(ObjSuf) \
     1154        tmp/modules/ConstituentFilter.$(ObjSuf) \
     1155        tmp/modules/TrackPileUpSubtractor.$(ObjSuf) \
     1156        tmp/modules/Weighter.$(ObjSuf) \
    10941157        tmp/modules/Isolation.$(ObjSuf) \
    1095         tmp/modules/Efficiency.$(ObjSuf) \
    1096         tmp/modules/BTagging.$(ObjSuf) \
    10971158        tmp/modules/PileUpMerger.$(ObjSuf) \
    1098         tmp/modules/ImpactParameterSmearing.$(ObjSuf) \
    1099         tmp/modules/SimpleCalorimeter.$(ObjSuf) \
    1100         tmp/modules/PileUpJetID.$(ObjSuf) \
    1101         tmp/modules/Cloner.$(ObjSuf) \
    1102         tmp/modules/TauTagging.$(ObjSuf) \
    11031159        tmp/modules/ExampleModule.$(ObjSuf) \
    1104         tmp/modules/Merger.$(ObjSuf) \
    1105         tmp/modules/IdentificationMap.$(ObjSuf) \
    1106         tmp/modules/EnergyScale.$(ObjSuf) \
    1107         tmp/modules/MomentumSmearing.$(ObjSuf) \
    1108         tmp/modules/Calorimeter.$(ObjSuf) \
    1109         tmp/modules/TrackCountingBTagging.$(ObjSuf) \
    1110         tmp/modules/Delphes.$(ObjSuf) \
    1111         tmp/modules/TreeWriter.$(ObjSuf) \
    1112         tmp/modules/StatusPidFilter.$(ObjSuf) \
    11131160        tmp/modules/Hector.$(ObjSuf) \
    11141161        tmp/modules/EnergySmearing.$(ObjSuf) \
     1162        tmp/modules/FastJetFinder.$(ObjSuf) \
     1163        tmp/modules/SimpleCalorimeter.$(ObjSuf) \
    11151164        tmp/modules/LeptonDressing.$(ObjSuf) \
    1116         tmp/modules/UniqueObjectFinder.$(ObjSuf) \
    1117         tmp/modules/ConstituentFilter.$(ObjSuf) \
    1118         tmp/modules/ParticlePropagator.$(ObjSuf) \
     1165        tmp/modules/Efficiency.$(ObjSuf) \
     1166        tmp/modules/TimeSmearing.$(ObjSuf) \
     1167        tmp/modules/PileUpJetID.$(ObjSuf) \
    11191168        tmp/modules/JetPileUpSubtractor.$(ObjSuf) \
    1120         tmp/modules/TrackPileUpSubtractor.$(ObjSuf) \
    1121         tmp/modules/FastJetFinder.$(ObjSuf) \
    1122         tmp/modules/TimeSmearing.$(ObjSuf) \
    1123         tmp/modules/Weighter.$(ObjSuf) \
    1124         tmp/external/ExRootAnalysis/ExRootTask.$(ObjSuf) \
     1169        tmp/modules/TauTagging.$(ObjSuf) \
     1170        tmp/modules/BTagging.$(ObjSuf) \
     1171        tmp/modules/Merger.$(ObjSuf) \
     1172        tmp/modules/FastJetGridMedianEstimator.$(ObjSuf) \
     1173        tmp/modules/Cloner.$(ObjSuf) \
     1174        tmp/modules/PdgCodeFilter.$(ObjSuf) \
     1175        tmp/modules/EnergyScale.$(ObjSuf) \
     1176        tmp/modules/IdentificationMap.$(ObjSuf) \
     1177        tmp/modules/TrackCountingBTagging.$(ObjSuf) \
     1178        tmp/modules/Calorimeter.$(ObjSuf) \
     1179        tmp/modules/MomentumSmearing.$(ObjSuf) \
     1180        tmp/modules/ImpactParameterSmearing.$(ObjSuf) \
     1181        tmp/modules/TreeWriter.$(ObjSuf) \
    11251182        tmp/external/ExRootAnalysis/ExRootTreeWriter.$(ObjSuf) \
    11261183        tmp/external/ExRootAnalysis/ExRootFilter.$(ObjSuf) \
    11271184        tmp/external/ExRootAnalysis/ExRootResult.$(ObjSuf) \
    11281185        tmp/external/ExRootAnalysis/ExRootConfReader.$(ObjSuf) \
    1129         tmp/external/ExRootAnalysis/ExRootTreeReader.$(ObjSuf) \
    11301186        tmp/external/ExRootAnalysis/ExRootProgressBar.$(ObjSuf) \
    11311187        tmp/external/ExRootAnalysis/ExRootTreeBranch.$(ObjSuf) \
     1188        tmp/external/ExRootAnalysis/ExRootTreeReader.$(ObjSuf) \
     1189        tmp/external/ExRootAnalysis/ExRootTask.$(ObjSuf) \
    11321190        tmp/external/ExRootAnalysis/ExRootUtilities.$(ObjSuf) \
     1191        tmp/external/fastjet/Selector.$(ObjSuf) \
     1192        tmp/external/fastjet/BasicRandom.$(ObjSuf) \
     1193        tmp/external/fastjet/Dnn2piCylinder.$(ObjSuf) \
     1194        tmp/external/fastjet/Dnn3piCylinder.$(ObjSuf) \
    11331195        tmp/external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(ObjSuf) \
    1134         tmp/external/fastjet/PseudoJetStructureBase.$(ObjSuf) \
    1135         tmp/external/fastjet/ClusterSequenceVoronoiArea.$(ObjSuf) \
    1136         tmp/external/fastjet/ClusterSequence1GhostPassiveArea.$(ObjSuf) \
    1137         tmp/external/fastjet/ClusterSequenceStructure.$(ObjSuf) \
     1196        tmp/external/fastjet/LazyTiling9.$(ObjSuf) \
     1197        tmp/external/fastjet/AreaDefinition.$(ObjSuf) \
     1198        tmp/external/fastjet/ClusterSequence_DumbN3.$(ObjSuf) \
     1199        tmp/external/fastjet/ClusterSequence_Delaunay.$(ObjSuf) \
     1200        tmp/external/fastjet/Dnn4piCylinder.$(ObjSuf) \
    11381201        tmp/external/fastjet/ClosestPair2D.$(ObjSuf) \
    11391202        tmp/external/fastjet/JetDefinition.$(ObjSuf) \
     1203        tmp/external/fastjet/RectangularGrid.$(ObjSuf) \
     1204        tmp/external/fastjet/ClusterSequenceAreaBase.$(ObjSuf) \
     1205        tmp/external/fastjet/DnnPlane.$(ObjSuf) \
     1206        tmp/external/fastjet/LazyTiling25.$(ObjSuf) \
     1207        tmp/external/fastjet/LazyTiling9SeparateGhosts.$(ObjSuf) \
     1208        tmp/external/fastjet/Error.$(ObjSuf) \
    11401209        tmp/external/fastjet/ClusterSequenceActiveArea.$(ObjSuf) \
    1141         tmp/external/fastjet/Dnn4piCylinder.$(ObjSuf) \
    1142         tmp/external/fastjet/AreaDefinition.$(ObjSuf) \
    1143         tmp/external/fastjet/ClusterSequence_Delaunay.$(ObjSuf) \
    1144         tmp/external/fastjet/ClusterSequenceAreaBase.$(ObjSuf) \
     1210        tmp/external/fastjet/CompositeJetStructure.$(ObjSuf) \
     1211        tmp/external/fastjet/ClusterSequence_N2.$(ObjSuf) \
    11451212        tmp/external/fastjet/ClusterSequence_TiledN2.$(ObjSuf) \
    1146         tmp/external/fastjet/ClusterSequence_N2.$(ObjSuf) \
     1213        tmp/external/fastjet/ClusterSequenceStructure.$(ObjSuf) \
    11471214        tmp/external/fastjet/ClusterSequencePassiveArea.$(ObjSuf) \
    1148         tmp/external/fastjet/Dnn3piCylinder.$(ObjSuf) \
    1149         tmp/external/fastjet/Dnn2piCylinder.$(ObjSuf) \
    1150         tmp/external/fastjet/ClusterSequence_CP2DChan.$(ObjSuf) \
    1151         tmp/external/fastjet/LimitedWarning.$(ObjSuf) \
    1152         tmp/external/fastjet/Selector.$(ObjSuf) \
    1153         tmp/external/fastjet/BasicRandom.$(ObjSuf) \
     1215        tmp/external/fastjet/PseudoJetStructureBase.$(ObjSuf) \
     1216        tmp/external/fastjet/TilingExtent.$(ObjSuf) \
    11541217        tmp/external/fastjet/Voronoi.$(ObjSuf) \
    1155         tmp/external/fastjet/ClusterSequence_DumbN3.$(ObjSuf) \
    1156         tmp/external/fastjet/PseudoJet.$(ObjSuf) \
    1157         tmp/external/fastjet/CompositeJetStructure.$(ObjSuf) \
    1158         tmp/external/fastjet/GhostedAreaSpec.$(ObjSuf) \
    1159         tmp/external/fastjet/DnnPlane.$(ObjSuf) \
    1160         tmp/external/fastjet/Error.$(ObjSuf) \
     1218        tmp/external/fastjet/LazyTiling9Alt.$(ObjSuf) \
     1219        tmp/external/fastjet/ClusterSequenceArea.$(ObjSuf) \
     1220        tmp/external/fastjet/ClusterSequence1GhostPassiveArea.$(ObjSuf) \
    11611221        tmp/external/fastjet/FunctionOfPseudoJet.$(ObjSuf) \
    11621222        tmp/external/fastjet/MinHeap.$(ObjSuf) \
     1223        tmp/external/fastjet/GhostedAreaSpec.$(ObjSuf) \
    11631224        tmp/external/fastjet/RangeDefinition.$(ObjSuf) \
     1225        tmp/external/fastjet/ClusterSequence_CP2DChan.$(ObjSuf) \
     1226        tmp/external/fastjet/PseudoJet.$(ObjSuf) \
     1227        tmp/external/fastjet/LimitedWarning.$(ObjSuf) \
     1228        tmp/external/fastjet/ClusterSequenceVoronoiArea.$(ObjSuf) \
    11641229        tmp/external/fastjet/ClusterSequence.$(ObjSuf) \
    1165         tmp/external/fastjet/ClusterSequenceArea.$(ObjSuf) \
    1166         tmp/external/fastjet/tools/CASubJetTagger.$(ObjSuf) \
    1167         tmp/external/fastjet/tools/Filter.$(ObjSuf) \
    11681230        tmp/external/fastjet/tools/RestFrameNSubjettinessTagger.$(ObjSuf) \
    11691231        tmp/external/fastjet/tools/MassDropTagger.$(ObjSuf) \
     1232        tmp/external/fastjet/tools/GridMedianBackgroundEstimator.$(ObjSuf) \
     1233        tmp/external/fastjet/tools/Pruner.$(ObjSuf) \
     1234        tmp/external/fastjet/tools/CASubJetTagger.$(ObjSuf) \
    11701235        tmp/external/fastjet/tools/BackgroundEstimatorBase.$(ObjSuf) \
     1236        tmp/external/fastjet/tools/Subtractor.$(ObjSuf) \
     1237        tmp/external/fastjet/tools/Recluster.$(ObjSuf) \
     1238        tmp/external/fastjet/tools/JetMedianBackgroundEstimator.$(ObjSuf) \
    11711239        tmp/external/fastjet/tools/JHTopTagger.$(ObjSuf) \
    1172         tmp/external/fastjet/tools/GridMedianBackgroundEstimator.$(ObjSuf) \
    1173         tmp/external/fastjet/tools/Subtractor.$(ObjSuf) \
    1174         tmp/external/fastjet/tools/Pruner.$(ObjSuf) \
    1175         tmp/external/fastjet/tools/JetMedianBackgroundEstimator.$(ObjSuf) \
     1240        tmp/external/fastjet/tools/Filter.$(ObjSuf) \
    11761241        tmp/external/fastjet/tools/TopTaggerBase.$(ObjSuf) \
    1177         tmp/external/fastjet/plugins/TrackJet/TrackJetPlugin.$(ObjSuf) \
     1242        tmp/external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(ObjSuf) \
     1243        tmp/external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(ObjSuf) \
     1244        tmp/external/fastjet/plugins/CDFCones/MidPointAlgorithm.$(ObjSuf) \
     1245        tmp/external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(ObjSuf) \
     1246        tmp/external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(ObjSuf) \
     1247        tmp/external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(ObjSuf) \
     1248        tmp/external/fastjet/plugins/GridJet/GridJetPlugin.$(ObjSuf) \
     1249        tmp/external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(ObjSuf) \
     1250        tmp/external/fastjet/plugins/SISCone/split_merge.$(ObjSuf) \
     1251        tmp/external/fastjet/plugins/SISCone/hash.$(ObjSuf) \
     1252        tmp/external/fastjet/plugins/SISCone/siscone_error.$(ObjSuf) \
     1253        tmp/external/fastjet/plugins/SISCone/ranlux.$(ObjSuf) \
     1254        tmp/external/fastjet/plugins/SISCone/SISConePlugin.$(ObjSuf) \
     1255        tmp/external/fastjet/plugins/SISCone/vicinity.$(ObjSuf) \
     1256        tmp/external/fastjet/plugins/SISCone/area.$(ObjSuf) \
     1257        tmp/external/fastjet/plugins/SISCone/reference.$(ObjSuf) \
     1258        tmp/external/fastjet/plugins/SISCone/quadtree.$(ObjSuf) \
     1259        tmp/external/fastjet/plugins/SISCone/siscone.$(ObjSuf) \
     1260        tmp/external/fastjet/plugins/SISCone/momentum.$(ObjSuf) \
     1261        tmp/external/fastjet/plugins/SISCone/protocones.$(ObjSuf) \
     1262        tmp/external/fastjet/plugins/SISCone/geom_2d.$(ObjSuf) \
    11781263        tmp/external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(ObjSuf) \
    11791264        tmp/external/fastjet/plugins/ATLASCone/Jet.$(ObjSuf) \
    11801265        tmp/external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(ObjSuf) \
    11811266        tmp/external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(ObjSuf) \
    1182         tmp/external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(ObjSuf) \
    1183         tmp/external/fastjet/plugins/GridJet/GridJetPlugin.$(ObjSuf) \
    1184         tmp/external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(ObjSuf) \
    1185         tmp/external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(ObjSuf) \
    1186         tmp/external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(ObjSuf) \
    1187         tmp/external/fastjet/plugins/CDFCones/MidPointAlgorithm.$(ObjSuf) \
    1188         tmp/external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(ObjSuf) \
    1189         tmp/external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(ObjSuf) \
    1190         tmp/external/fastjet/plugins/SISCone/area.$(ObjSuf) \
    1191         tmp/external/fastjet/plugins/SISCone/siscone.$(ObjSuf) \
    1192         tmp/external/fastjet/plugins/SISCone/vicinity.$(ObjSuf) \
    1193         tmp/external/fastjet/plugins/SISCone/geom_2d.$(ObjSuf) \
    1194         tmp/external/fastjet/plugins/SISCone/hash.$(ObjSuf) \
    1195         tmp/external/fastjet/plugins/SISCone/quadtree.$(ObjSuf) \
    1196         tmp/external/fastjet/plugins/SISCone/split_merge.$(ObjSuf) \
    1197         tmp/external/fastjet/plugins/SISCone/momentum.$(ObjSuf) \
    1198         tmp/external/fastjet/plugins/SISCone/ranlux.$(ObjSuf) \
    1199         tmp/external/fastjet/plugins/SISCone/reference.$(ObjSuf) \
    1200         tmp/external/fastjet/plugins/SISCone/SISConePlugin.$(ObjSuf) \
    1201         tmp/external/fastjet/plugins/SISCone/protocones.$(ObjSuf) \
    1202         tmp/external/fastjet/plugins/SISCone/siscone_error.$(ObjSuf) \
     1267        tmp/external/fastjet/plugins/EECambridge/EECambridgePlugin.$(ObjSuf) \
     1268        tmp/external/fastjet/plugins/TrackJet/TrackJetPlugin.$(ObjSuf) \
    12031269        tmp/external/fastjet/plugins/Jade/JadePlugin.$(ObjSuf) \
    12041270        tmp/external/fastjet/plugins/NestedDefs/NestedDefsPlugin.$(ObjSuf) \
    1205         tmp/external/fastjet/plugins/EECambridge/EECambridgePlugin.$(ObjSuf) \
     1271        tmp/external/fastjet/contribs/SoftKiller/SoftKiller.$(ObjSuf) \
     1272        tmp/external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(ObjSuf) \
     1273        tmp/external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(ObjSuf) \
     1274        tmp/external/fastjet/contribs/Nsubjettiness/AxesFinder.$(ObjSuf) \
     1275        tmp/external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.$(ObjSuf) \
     1276        tmp/external/fastjet/contribs/Nsubjettiness/Njettiness.$(ObjSuf) \
     1277        tmp/external/fastjet/contribs/Nsubjettiness/NjettinessDefinition.$(ObjSuf) \
    12061278        tmp/external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(ObjSuf) \
    1207         tmp/external/fastjet/contribs/Nsubjettiness/Njettiness.$(ObjSuf) \
    1208         tmp/external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(ObjSuf) \
    1209         tmp/external/fastjet/contribs/Nsubjettiness/AxesFinder.$(ObjSuf) \
    1210         tmp/external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(ObjSuf) \
    1211         tmp/external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.$(ObjSuf) \
     1279        tmp/external/Hector/H_OpticalElement.$(ObjSuf) \
     1280        tmp/external/Hector/H_CircularAperture.$(ObjSuf) \
     1281        tmp/external/Hector/H_TransportMatrices.$(ObjSuf) \
     1282        tmp/external/Hector/H_SectorDipole.$(ObjSuf) \
     1283        tmp/external/Hector/H_Dipole.$(ObjSuf) \
     1284        tmp/external/Hector/H_AbstractBeamLine.$(ObjSuf) \
     1285        tmp/external/Hector/H_BeamLine.$(ObjSuf) \
     1286        tmp/external/Hector/H_RectEllipticAperture.$(ObjSuf) \
     1287        tmp/external/Hector/H_HorizontalKicker.$(ObjSuf) \
     1288        tmp/external/Hector/H_Kicker.$(ObjSuf) \
     1289        tmp/external/Hector/H_BeamLineParser.$(ObjSuf) \
     1290        tmp/external/Hector/H_BeamParticle.$(ObjSuf) \
     1291        tmp/external/Hector/H_RectangularDipole.$(ObjSuf) \
     1292        tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf) \
     1293        tmp/external/Hector/H_Marker.$(ObjSuf) \
     1294        tmp/external/Hector/H_Beam.$(ObjSuf) \
     1295        tmp/external/Hector/H_EllipticAperture.$(ObjSuf) \
     1296        tmp/external/Hector/H_VerticalKicker.$(ObjSuf) \
    12121297        tmp/external/Hector/H_HorizontalQuadrupole.$(ObjSuf) \
    1213         tmp/external/Hector/H_Aperture.$(ObjSuf) \
    1214         tmp/external/Hector/H_TransportMatrices.$(ObjSuf) \
     1298        tmp/external/Hector/H_Parameters.$(ObjSuf) \
     1299        tmp/external/Hector/H_Drift.$(ObjSuf) \
    12151300        tmp/external/Hector/H_RomanPot.$(ObjSuf) \
    12161301        tmp/external/Hector/H_RecRPObject.$(ObjSuf) \
    1217         tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf) \
    1218         tmp/external/Hector/H_OpticalElement.$(ObjSuf) \
     1302        tmp/external/Hector/H_RectangularCollimator.$(ObjSuf) \
     1303        tmp/external/Hector/H_Aperture.$(ObjSuf) \
    12191304        tmp/external/Hector/H_RectangularAperture.$(ObjSuf) \
    1220         tmp/external/Hector/H_EllipticAperture.$(ObjSuf) \
    1221         tmp/external/Hector/H_BeamLineParser.$(ObjSuf) \
    1222         tmp/external/Hector/H_RectangularDipole.$(ObjSuf) \
    1223         tmp/external/Hector/H_Marker.$(ObjSuf) \
    1224         tmp/external/Hector/H_Kicker.$(ObjSuf) \
    1225         tmp/external/Hector/H_BeamLine.$(ObjSuf) \
    1226         tmp/external/Hector/H_Beam.$(ObjSuf) \
    1227         tmp/external/Hector/H_RectangularCollimator.$(ObjSuf) \
    1228         tmp/external/Hector/H_Parameters.$(ObjSuf) \
    1229         tmp/external/Hector/H_Drift.$(ObjSuf) \
    1230         tmp/external/Hector/H_CircularAperture.$(ObjSuf) \
    1231         tmp/external/Hector/H_VerticalKicker.$(ObjSuf) \
    1232         tmp/external/Hector/H_SectorDipole.$(ObjSuf) \
    1233         tmp/external/Hector/H_HorizontalKicker.$(ObjSuf) \
    1234         tmp/external/Hector/H_Dipole.$(ObjSuf) \
    1235         tmp/external/Hector/H_AbstractBeamLine.$(ObjSuf) \
    1236         tmp/external/Hector/H_BeamParticle.$(ObjSuf) \
    1237         tmp/external/Hector/H_Quadrupole.$(ObjSuf) \
    1238         tmp/external/Hector/H_RectEllipticAperture.$(ObjSuf)
     1305        tmp/external/Hector/H_Quadrupole.$(ObjSuf)
    12391306
    12401307ifeq ($(HAS_PYTHIA8),true)
     
    12491316        display/DelphesDisplay.$(SrcSuf) \
    12501317        display/DelphesDisplay.h
     1318tmp/display/DelphesPlotSummary.$(ObjSuf): \
     1319        display/DelphesPlotSummary.$(SrcSuf) \
     1320        display/DelphesPlotSummary.h
     1321tmp/display/DelphesBranchElement.$(ObjSuf): \
     1322        display/DelphesBranchElement.$(SrcSuf) \
     1323        display/DelphesBranchElement.h \
     1324        classes/DelphesClasses.h
     1325tmp/display/Delphes3DGeometry.$(ObjSuf): \
     1326        display/Delphes3DGeometry.$(SrcSuf) \
     1327        display/Delphes3DGeometry.h \
     1328        external/ExRootAnalysis/ExRootConfReader.h \
     1329        classes/DelphesClasses.h
     1330tmp/display/DelphesHtmlSummary.$(ObjSuf): \
     1331        display/DelphesHtmlSummary.$(SrcSuf) \
     1332        display/DelphesHtmlSummary.h
     1333tmp/display/DelphesEventDisplay.$(ObjSuf): \
     1334        display/DelphesEventDisplay.$(SrcSuf) \
     1335        external/ExRootAnalysis/ExRootConfReader.h \
     1336        external/ExRootAnalysis/ExRootTreeReader.h \
     1337        display/DelphesCaloData.h \
     1338        display/DelphesBranchElement.h \
     1339        display/Delphes3DGeometry.h \
     1340        display/DelphesEventDisplay.h \
     1341        classes/DelphesClasses.h
    12511342DISPLAY_OBJ +=  \
    12521343        tmp/display/DelphesCaloData.$(ObjSuf) \
    1253         tmp/display/DelphesDisplay.$(ObjSuf)
     1344        tmp/display/DelphesDisplay.$(ObjSuf) \
     1345        tmp/display/DelphesPlotSummary.$(ObjSuf) \
     1346        tmp/display/DelphesBranchElement.$(ObjSuf) \
     1347        tmp/display/Delphes3DGeometry.$(ObjSuf) \
     1348        tmp/display/DelphesHtmlSummary.$(ObjSuf) \
     1349        tmp/display/DelphesEventDisplay.$(ObjSuf)
    12541350
    12551351ifeq ($(HAS_PYTHIA8),true)
     
    12581354endif
    12591355
     1356tmp/external/tcl/tclListObj.$(ObjSuf): \
     1357        external/tcl/tclListObj.c
     1358tmp/external/tcl/tclHash.$(ObjSuf): \
     1359        external/tcl/tclHash.c
     1360tmp/external/tcl/tclResolve.$(ObjSuf): \
     1361        external/tcl/tclResolve.c
     1362tmp/external/tcl/tclHistory.$(ObjSuf): \
     1363        external/tcl/tclHistory.c
     1364tmp/external/tcl/tclCompExpr.$(ObjSuf): \
     1365        external/tcl/tclCompExpr.c
     1366tmp/external/tcl/tclAsync.$(ObjSuf): \
     1367        external/tcl/tclAsync.c
     1368tmp/external/tcl/tclNamesp.$(ObjSuf): \
     1369        external/tcl/tclNamesp.c
     1370tmp/external/tcl/tclVar.$(ObjSuf): \
     1371        external/tcl/tclVar.c
     1372tmp/external/tcl/tclPreserve.$(ObjSuf): \
     1373        external/tcl/tclPreserve.c
     1374tmp/external/tcl/tclGet.$(ObjSuf): \
     1375        external/tcl/tclGet.c
     1376tmp/external/tcl/tclStringObj.$(ObjSuf): \
     1377        external/tcl/tclStringObj.c
     1378tmp/external/tcl/tclBasic.$(ObjSuf): \
     1379        external/tcl/tclBasic.c
     1380tmp/external/tcl/tclUtil.$(ObjSuf): \
     1381        external/tcl/tclUtil.c
     1382tmp/external/tcl/tclObj.$(ObjSuf): \
     1383        external/tcl/tclObj.c
     1384tmp/external/tcl/tclPosixStr.$(ObjSuf): \
     1385        external/tcl/tclPosixStr.c
    12601386tmp/external/tcl/tclCmdMZ.$(ObjSuf): \
    12611387        external/tcl/tclCmdMZ.c
    1262 tmp/external/tcl/tclHistory.$(ObjSuf): \
    1263         external/tcl/tclHistory.c
     1388tmp/external/tcl/tclIndexObj.$(ObjSuf): \
     1389        external/tcl/tclIndexObj.c
     1390tmp/external/tcl/tclCmdIL.$(ObjSuf): \
     1391        external/tcl/tclCmdIL.c
    12641392tmp/external/tcl/tclCmdAH.$(ObjSuf): \
    12651393        external/tcl/tclCmdAH.c
    1266 tmp/external/tcl/tclUtil.$(ObjSuf): \
    1267         external/tcl/tclUtil.c
    1268 tmp/external/tcl/tclListObj.$(ObjSuf): \
    1269         external/tcl/tclListObj.c
    1270 tmp/external/tcl/tclCmdIL.$(ObjSuf): \
    1271         external/tcl/tclCmdIL.c
    1272 tmp/external/tcl/tclResolve.$(ObjSuf): \
    1273         external/tcl/tclResolve.c
    1274 tmp/external/tcl/tclHash.$(ObjSuf): \
    1275         external/tcl/tclHash.c
    1276 tmp/external/tcl/tclParse.$(ObjSuf): \
    1277         external/tcl/tclParse.c
    1278 tmp/external/tcl/tclAlloc.$(ObjSuf): \
    1279         external/tcl/tclAlloc.c
    1280 tmp/external/tcl/tclIndexObj.$(ObjSuf): \
    1281         external/tcl/tclIndexObj.c
    1282 tmp/external/tcl/tclPosixStr.$(ObjSuf): \
    1283         external/tcl/tclPosixStr.c
    12841394tmp/external/tcl/tclLink.$(ObjSuf): \
    12851395        external/tcl/tclLink.c
    12861396tmp/external/tcl/tclProc.$(ObjSuf): \
    12871397        external/tcl/tclProc.c
    1288 tmp/external/tcl/tclNamesp.$(ObjSuf): \
    1289         external/tcl/tclNamesp.c
    1290 tmp/external/tcl/tclPreserve.$(ObjSuf): \
    1291         external/tcl/tclPreserve.c
    1292 tmp/external/tcl/tclAsync.$(ObjSuf): \
    1293         external/tcl/tclAsync.c
     1398tmp/external/tcl/tclCkalloc.$(ObjSuf): \
     1399        external/tcl/tclCkalloc.c
     1400tmp/external/tcl/tclAlloc.$(ObjSuf): \
     1401        external/tcl/tclAlloc.c
     1402tmp/external/tcl/tclCompile.$(ObjSuf): \
     1403        external/tcl/tclCompile.c
     1404tmp/external/tcl/panic.$(ObjSuf): \
     1405        external/tcl/panic.c
     1406tmp/external/tcl/tclParse.$(ObjSuf): \
     1407        external/tcl/tclParse.c
    12941408tmp/external/tcl/tclExecute.$(ObjSuf): \
    12951409        external/tcl/tclExecute.c
    1296 tmp/external/tcl/tclVar.$(ObjSuf): \
    1297         external/tcl/tclVar.c
    1298 tmp/external/tcl/tclGet.$(ObjSuf): \
    1299         external/tcl/tclGet.c
    1300 tmp/external/tcl/tclCompile.$(ObjSuf): \
    1301         external/tcl/tclCompile.c
    1302 tmp/external/tcl/tclCompExpr.$(ObjSuf): \
    1303         external/tcl/tclCompExpr.c
    1304 tmp/external/tcl/tclCkalloc.$(ObjSuf): \
    1305         external/tcl/tclCkalloc.c
    1306 tmp/external/tcl/panic.$(ObjSuf): \
    1307         external/tcl/panic.c
    1308 tmp/external/tcl/tclObj.$(ObjSuf): \
    1309         external/tcl/tclObj.c
    1310 tmp/external/tcl/tclStringObj.$(ObjSuf): \
    1311         external/tcl/tclStringObj.c
    1312 tmp/external/tcl/tclBasic.$(ObjSuf): \
    1313         external/tcl/tclBasic.c
    13141410TCL_OBJ +=  \
     1411        tmp/external/tcl/tclListObj.$(ObjSuf) \
     1412        tmp/external/tcl/tclHash.$(ObjSuf) \
     1413        tmp/external/tcl/tclResolve.$(ObjSuf) \
     1414        tmp/external/tcl/tclHistory.$(ObjSuf) \
     1415        tmp/external/tcl/tclCompExpr.$(ObjSuf) \
     1416        tmp/external/tcl/tclAsync.$(ObjSuf) \
     1417        tmp/external/tcl/tclNamesp.$(ObjSuf) \
     1418        tmp/external/tcl/tclVar.$(ObjSuf) \
     1419        tmp/external/tcl/tclPreserve.$(ObjSuf) \
     1420        tmp/external/tcl/tclGet.$(ObjSuf) \
     1421        tmp/external/tcl/tclStringObj.$(ObjSuf) \
     1422        tmp/external/tcl/tclBasic.$(ObjSuf) \
     1423        tmp/external/tcl/tclUtil.$(ObjSuf) \
     1424        tmp/external/tcl/tclObj.$(ObjSuf) \
     1425        tmp/external/tcl/tclPosixStr.$(ObjSuf) \
    13151426        tmp/external/tcl/tclCmdMZ.$(ObjSuf) \
    1316         tmp/external/tcl/tclHistory.$(ObjSuf) \
     1427        tmp/external/tcl/tclIndexObj.$(ObjSuf) \
     1428        tmp/external/tcl/tclCmdIL.$(ObjSuf) \
    13171429        tmp/external/tcl/tclCmdAH.$(ObjSuf) \
    1318         tmp/external/tcl/tclUtil.$(ObjSuf) \
    1319         tmp/external/tcl/tclListObj.$(ObjSuf) \
    1320         tmp/external/tcl/tclCmdIL.$(ObjSuf) \
    1321         tmp/external/tcl/tclResolve.$(ObjSuf) \
    1322         tmp/external/tcl/tclHash.$(ObjSuf) \
    1323         tmp/external/tcl/tclParse.$(ObjSuf) \
    1324         tmp/external/tcl/tclAlloc.$(ObjSuf) \
    1325         tmp/external/tcl/tclIndexObj.$(ObjSuf) \
    1326         tmp/external/tcl/tclPosixStr.$(ObjSuf) \
    13271430        tmp/external/tcl/tclLink.$(ObjSuf) \
    13281431        tmp/external/tcl/tclProc.$(ObjSuf) \
    1329         tmp/external/tcl/tclNamesp.$(ObjSuf) \
    1330         tmp/external/tcl/tclPreserve.$(ObjSuf) \
    1331         tmp/external/tcl/tclAsync.$(ObjSuf) \
    1332         tmp/external/tcl/tclExecute.$(ObjSuf) \
    1333         tmp/external/tcl/tclVar.$(ObjSuf) \
    1334         tmp/external/tcl/tclGet.$(ObjSuf) \
     1432        tmp/external/tcl/tclCkalloc.$(ObjSuf) \
     1433        tmp/external/tcl/tclAlloc.$(ObjSuf) \
    13351434        tmp/external/tcl/tclCompile.$(ObjSuf) \
    1336         tmp/external/tcl/tclCompExpr.$(ObjSuf) \
    1337         tmp/external/tcl/tclCkalloc.$(ObjSuf) \
    13381435        tmp/external/tcl/panic.$(ObjSuf) \
    1339         tmp/external/tcl/tclObj.$(ObjSuf) \
    1340         tmp/external/tcl/tclStringObj.$(ObjSuf) \
    1341         tmp/external/tcl/tclBasic.$(ObjSuf)
     1436        tmp/external/tcl/tclParse.$(ObjSuf) \
     1437        tmp/external/tcl/tclExecute.$(ObjSuf)
    13421438
    13431439external/fastjet/internal/ClosestPair2D.hh: \
     
    13571453        @touch $@
    13581454
     1455modules/FastJetGridMedianEstimator.h: \
     1456        classes/DelphesModule.h
     1457        @touch $@
     1458
    13591459external/fastjet/internal/MinHeap.hh: \
    13601460        external/fastjet/internal/base.hh
     
    13821482external/fastjet/JetDefinition.hh: \
    13831483        external/fastjet/internal/numconsts.hh \
    1384         external/fastjet/PseudoJet.hh
     1484        external/fastjet/PseudoJet.hh \
     1485        external/fastjet/ClusterSequence.hh
    13851486        @touch $@
    13861487
     
    14011502        @touch $@
    14021503
     1504modules/ExampleModule.h: \
     1505        classes/DelphesModule.h
     1506        @touch $@
     1507
    14031508modules/Isolation.h: \
    14041509        classes/DelphesModule.h
     
    14101515
    14111516modules/Merger.h: \
    1412         classes/DelphesModule.h
    1413         @touch $@
    1414 
    1415 modules/ExampleModule.h: \
    14161517        classes/DelphesModule.h
    14171518        @touch $@
     
    14321533        @touch $@
    14331534
     1535external/fastjet/internal/LazyTiling25.hh: \
     1536        external/fastjet/internal/MinHeap.hh \
     1537        external/fastjet/ClusterSequence.hh \
     1538        external/fastjet/internal/LazyTiling9Alt.hh \
     1539        external/fastjet/internal/LazyTiling9.hh
     1540        @touch $@
     1541
    14341542external/fastjet/Error.hh: \
    1435         external/fastjet/internal/base.hh
     1543        external/fastjet/internal/base.hh \
     1544        external/fastjet/config.h \
     1545        external/fastjet/LimitedWarning.hh
    14361546        @touch $@
    14371547
    14381548external/fastjet/contribs/Nsubjettiness/Njettiness.hh: \
    1439         external/fastjet/PseudoJet.hh
     1549        external/fastjet/PseudoJet.hh \
     1550        external/fastjet/SharedPtr.hh
     1551        @touch $@
     1552
     1553external/fastjet/internal/TilingExtent.hh: \
     1554        external/fastjet/ClusterSequence.hh
    14401555        @touch $@
    14411556
     
    14461561modules/TrackPileUpSubtractor.h: \
    14471562        classes/DelphesModule.h
    1448         @touch $@
    1449 
    1450 external/fastjet/tools/GridMedianBackgroundEstimator.hh: \
    1451         external/fastjet/tools/BackgroundEstimatorBase.hh
    14521563        @touch $@
    14531564
     
    14551566        external/fastjet/internal/Triangulation.hh \
    14561567        external/fastjet/internal/DynamicNearestNeighbours.hh
     1568        @touch $@
     1569
     1570external/fastjet/tools/GridMedianBackgroundEstimator.hh: \
     1571        external/fastjet/tools/BackgroundEstimatorBase.hh \
     1572        external/fastjet/RectangularGrid.hh
    14571573        @touch $@
    14581574
     
    14721588        @touch $@
    14731589
     1590external/fastjet/internal/LazyTiling9Alt.hh: \
     1591        external/fastjet/internal/MinHeap.hh \
     1592        external/fastjet/ClusterSequence.hh
     1593        @touch $@
     1594
     1595external/fastjet/RectangularGrid.hh: \
     1596        external/fastjet/PseudoJet.hh \
     1597        external/fastjet/Selector.hh
     1598        @touch $@
     1599
    14741600modules/PileUpMerger.h: \
    14751601        classes/DelphesModule.h
    14761602        @touch $@
    14771603
     1604display/DelphesBranchElement.h: \
     1605        display/DelphesCaloData.h
     1606        @touch $@
     1607
    14781608external/fastjet/internal/DynamicNearestNeighbours.hh: \
    1479         external/fastjet/internal/numconsts.hh
     1609        external/fastjet/internal/numconsts.hh \
     1610        external/fastjet/Error.hh
    14801611        @touch $@
    14811612
     
    15031634        @touch $@
    15041635
     1636external/fastjet/internal/LazyTiling9.hh: \
     1637        external/fastjet/internal/MinHeap.hh \
     1638        external/fastjet/ClusterSequence.hh \
     1639        external/fastjet/internal/LazyTiling9Alt.hh
     1640        @touch $@
     1641
    15051642modules/PileUpJetID.h: \
    15061643        classes/DelphesModule.h
     
    15131650modules/MomentumSmearing.h: \
    15141651        classes/DelphesModule.h
     1652        @touch $@
     1653
     1654display/DelphesEventDisplay.h: \
     1655        external/ExRootAnalysis/ExRootTreeReader.h \
     1656        display/DelphesDisplay.h \
     1657        display/Delphes3DGeometry.h \
     1658        display/DelphesHtmlSummary.h \
     1659        display/DelphesPlotSummary.h
    15151660        @touch $@
    15161661
     
    15581703        @touch $@
    15591704
     1705modules/PdgCodeFilter.h: \
     1706        classes/DelphesModule.h
     1707        @touch $@
     1708
    15601709external/fastjet/plugins/CDFCones/fastjet/CDFMidPointPlugin.hh: \
    15611710        external/fastjet/JetDefinition.hh
     
    15681717        @touch $@
    15691718
     1719external/fastjet/PseudoJetStructureBase.hh: \
     1720        external/fastjet/internal/base.hh
     1721        @touch $@
     1722
    15701723external/fastjet/ClusterSequenceAreaBase.hh: \
    15711724        external/fastjet/ClusterSequence.hh \
     
    15741727        @touch $@
    15751728
    1576 external/fastjet/PseudoJetStructureBase.hh: \
    1577         external/fastjet/internal/base.hh
    1578         @touch $@
    1579 
    15801729external/fastjet/ClusterSequenceVoronoiArea.hh: \
    15811730        external/fastjet/PseudoJet.hh \
     
    15991748modules/Hector.h: \
    16001749        classes/DelphesModule.h
     1750        @touch $@
     1751
     1752display/DelphesPlotSummary.h: \
     1753        external/ExRootAnalysis/ExRootTreeReader.h
    16011754        @touch $@
    16021755
     
    16231776
    16241777external/fastjet/tools/Subtractor.hh: \
     1778        external/fastjet/internal/base.hh \
    16251779        external/fastjet/tools/Transformer.hh \
    16261780        external/fastjet/tools/BackgroundEstimatorBase.hh
     1781        @touch $@
     1782
     1783external/fastjet/internal/LazyTiling9SeparateGhosts.hh: \
     1784        external/fastjet/internal/MinHeap.hh \
     1785        external/fastjet/ClusterSequence.hh \
     1786        external/fastjet/internal/LazyTiling9Alt.hh
     1787        @touch $@
     1788
     1789external/fastjet/AreaDefinition.hh: \
     1790        external/fastjet/GhostedAreaSpec.hh
    16271791        @touch $@
    16281792
     
    16331797        @touch $@
    16341798
    1635 external/fastjet/AreaDefinition.hh: \
    1636         external/fastjet/GhostedAreaSpec.hh
    1637         @touch $@
    1638 
    16391799modules/TimeSmearing.h: \
    16401800        classes/DelphesModule.h
     
    16591819        @touch $@
    16601820
     1821external/fastjet/LimitedWarning.hh: \
     1822        external/fastjet/internal/base.hh
     1823        @touch $@
     1824
    16611825external/fastjet/config.h: \
    16621826        external/fastjet/config_win.h
    1663         @touch $@
    1664 
    1665 external/fastjet/LimitedWarning.hh: \
    1666         external/fastjet/internal/base.hh
    16671827        @touch $@
    16681828
  • README

    rba7fc1e r37deb3b  
    137137or
    138138
    139    root -l examples/Example1.C\(\"delphes_output.root\"\)
     139   root -l examples/Example1.C'("delphes_output.root")'
  • README.md

    rba7fc1e r37deb3b  
    1 delphes
    2 =======
     1Quick start with Delphes
     2========================
    33
    4 A framework for fast simulation of a generic collider experiment
     4Commands to get the code:
     5
     6```
     7wget http://cp3.irmp.ucl.ac.be/downloads/Delphes-3.1.2.tar.gz
     8
     9tar -zxf Delphes-3.1.2.tar.gz
     10```
     11
     12Commands to compile the code:
     13
     14```
     15cd Delphes-3.1.2
     16
     17make
     18```
     19
     20Finally, we can run Delphes:
     21
     22```
     23./DelphesHepMC
     24```
     25
     26Command line parameters:
     27
     28```
     29./DelphesHepMC config_file output_file [input_file(s)]
     30  config_file - configuration file in Tcl format
     31  output_file - output file in ROOT format,
     32  input_file(s) - input file(s) in HepMC format,
     33  with no input_file, or when input_file is -, read standard input.
     34```
     35
     36Let's simulate some Z->ee events:
     37
     38```
     39wget http://cp3.irmp.ucl.ac.be/downloads/z_ee.hep.gz
     40gunzip z_ee.hep.gz
     41./DelphesSTDHEP examples/delphes_card_CMS.tcl delphes_output.root z_ee.hep
     42```
     43
     44or
     45
     46```
     47curl -s http://cp3.irmp.ucl.ac.be/downloads/z_ee.hep.gz | gunzip | ./DelphesSTDHEP examples/delphes_card_CMS.tcl delphes_output.root
     48```
     49
     50For more detailed documentation, please visit
     51
     52https://cp3.irmp.ucl.ac.be/projects/delphes/wiki/WorkBook
     53
     54
     55Simple analysis using TTree::Draw
     56=================================
     57
     58Now we can start ROOT and look at the data stored in the output ROOT file.
     59
     60Start ROOT and load Delphes shared library:
     61
     62```
     63root -l
     64gSystem->Load("libDelphes");
     65```
     66
     67Open ROOT file and do some basic analysis using Draw or TBrowser:
     68
     69```
     70TFile::Open("delphes_output.root");
     71Delphes->Draw("Electron.PT");
     72TBrowser browser;
     73```
     74
     75Note 1: Delphes - tree name, it can be learned e.g. from TBrowser
     76
     77Note 2: Electron - branch name; PT - variable (leaf) of this branch
     78
     79Complete description of all branches can be found in
     80
     81doc/RootTreeDescription.html
     82
     83This information is also available at
     84
     85https://cp3.irmp.ucl.ac.be/projects/delphes/wiki/WorkBook/RootTreeDescription
     86
     87
     88Macro-based analysis
     89====================
     90
     91Analysis macro consists of histogram booking, event loop (histogram filling),
     92histogram display.
     93
     94Start ROOT and load Delphes shared library:
     95
     96```
     97root -l
     98gSystem->Load("libDelphes");
     99```
     100
     101Basic analysis macro:
     102
     103```
     104{
     105  // Create chain of root trees
     106  TChain chain("Delphes");
     107  chain.Add("delphes_output.root");
     108 
     109  // Create object of class ExRootTreeReader
     110  ExRootTreeReader *treeReader = new ExRootTreeReader(&chain);
     111  Long64_t numberOfEntries = treeReader->GetEntries();
     112 
     113  // Get pointers to branches used in this analysis
     114  TClonesArray *branchElectron = treeReader->UseBranch("Electron");
     115
     116  // Book histograms
     117  TH1 *histElectronPT = new TH1F("electron pt", "electron P_{T}", 50, 0.0, 100.0);
     118
     119  // Loop over all events
     120  for(Int_t entry = 0; entry < numberOfEntries; ++entry)
     121  {
     122
     123    // Load selected branches with data from specified event
     124    treeReader->ReadEntry(entry);
     125 
     126    // If event contains at least 1 electron
     127    if(branchElectron->GetEntries() > 0)
     128    {
     129      // Take first electron
     130      Electron *electron = (Electron*) branchElectron->At(0);
     131     
     132      // Plot electron transverse momentum
     133      histElectronPT->Fill(electron->PT);
     134     
     135      // Print electron transverse momentum
     136      cout << electron->PT << endl;
     137    }
     138
     139  }
     140
     141  // Show resulting histograms
     142  histElectronPT->Draw();
     143}
     144```
     145
     146
     147More advanced macro-based analysis
     148==================================
     149
     150The 'examples' directory contains ROOT macros Example1.C, Example2.C and Example3.C.
     151
     152Here are the commands to run these ROOT macros:
     153
     154```
     155root -l
     156.X examples/Example1.C("delphes_output.root");
     157```
     158
     159or
     160
     161```
     162root -l examples/Example1.C'("delphes_output.root")'
     163```
  • classes/ClassesLinkDef.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** ExRootAnalysisLinkDef
  • classes/DelphesClasses.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/**
  • classes/DelphesClasses.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef DelphesClasses_h
    220#define DelphesClasses_h
  • classes/DelphesFactory.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class DelphesFactory
  • classes/DelphesFactory.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef DelphesFactory_h
    220#define DelphesFactory_h
     
    4967  ExRootTreeBranch *fObjArrays; //!
    5068
     69#if !defined(__CINT__) && !defined(__CLING__)
    5170  std::map< const TClass*, ExRootTreeBranch* > fBranches; //!
     71#endif
     72
    5273  std::set< TObject* > fPool; //!
    5374 
  • classes/DelphesFormula.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220#include "classes/DelphesFormula.h"
  • classes/DelphesFormula.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef DelphesFormula_h
    220#define DelphesFormula_h
  • classes/DelphesHepMCReader.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class DelphesHepMCReader
  • classes/DelphesHepMCReader.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef DelphesHepMCReader_h
    220#define DelphesHepMCReader_h
  • classes/DelphesLHEFReader.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class DelphesLHEFReader
  • classes/DelphesLHEFReader.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef DelphesLHEFReader_h
    220#define DelphesLHEFReader_h
  • classes/DelphesModule.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class DelphesModule
  • classes/DelphesModule.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef DelphesModule_h
    220#define DelphesModule_h
  • classes/DelphesPileUpReader.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class DelphesPileUpReader
  • classes/DelphesPileUpReader.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef DelphesPileUpReader_h
    220#define DelphesPileUpReader_h
  • classes/DelphesPileUpWriter.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class DelphesPileUpWriter
  • classes/DelphesPileUpWriter.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef DelphesPileUpWriter_h
    220#define DelphesPileUpWriter_h
  • classes/DelphesSTDHEPReader.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class DelphesSTDHEPReader
     
    386404  u_int number;
    387405
    388   // version
    389   xdr_string(fInputXDR, &fBuffer, 100);
    390 
    391406  // Extracting the event weight
    392407  xdr_double(fInputXDR, &fWeight);
  • classes/DelphesSTDHEPReader.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef DelphesSTDHEPReader_h
    220#define DelphesSTDHEPReader_h
  • classes/DelphesStream.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class DelphesStream
  • classes/DelphesStream.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef DelphesStream_h
    220#define DelphesStream_h
  • classes/DelphesTF2.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#include "classes/DelphesTF2.h"
    220#include "TString.h"
  • classes/DelphesTF2.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef DelphesTF2_h
    220#define DelphesTF2_h
  • classes/SortableObject.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef SortableObject_h
    220#define SortableObject_h
     
    2543public:
    2644  virtual ~CompBase() { }
    27   virtual Bool_t IsSortable(const TObject *obj) const { return kTRUE; }
     45  virtual Bool_t IsSortable(const TObject *) const { return kTRUE; }
    2846  virtual Int_t Compare(const TObject *obj1, const TObject *obj2) const = 0;
    2947};
  • converters/hepmc2pileup.cpp

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#include <stdexcept>
    220#include <iostream>
  • converters/lhco2root.cpp

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#include <stdexcept>
    220#include <iostream>
  • converters/pileup2root.cpp

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220#include <stdexcept>
  • converters/root2lhco.cpp

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#include <stdexcept>
    220#include <iostream>
  • converters/root2pileup.cpp

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#include <stdexcept>
    220#include <iostream>
  • converters/stdhep2pileup.cpp

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#include <stdexcept>
    220#include <iostream>
  • display/DelphesCaloData.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220#include "display/DelphesCaloData.h"
  • display/DelphesCaloData.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef DelphesCaloData_h
    220#define DelphesCaloData_h
  • display/DelphesDisplay.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220#include "TEveManager.h"
  • display/DelphesDisplay.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef DelphesDisplay_h
    220#define DelphesDisplay_h
  • display/DisplayLinkDef.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** ExRootAnalysisLinkDef
     
    1432#include "display/DelphesDisplay.h"
    1533#include "display/DelphesCaloData.h"
     34#include "display/DelphesBranchElement.h"
     35#include "display/Delphes3DGeometry.h"
     36#include "display/DelphesEventDisplay.h"
     37#include "display/DelphesHtmlSummary.h"
     38#include "display/DelphesPlotSummary.h"
    1639
    1740#ifdef __CINT__
     
    2346#pragma link C++ class DelphesDisplay+;
    2447#pragma link C++ class DelphesCaloData+;
     48#pragma link C++ class DelphesBranchElement<DelphesCaloData>-!;
     49#pragma link C++ class DelphesBranchElement<TEveElementList>-!;
     50#pragma link C++ class DelphesBranchElement<TEveTrackList>-!;
     51#pragma link C++ class Delphes3DGeometry;
     52#pragma link C++ class DelphesEventDisplay;
     53#pragma link C++ class DelphesHtmlObjTable;
     54#pragma link C++ class DelphesHtmlSummary;
     55#pragma link C++ class DelphesPlotSummary;
    2556
    2657#endif
  • doc/genMakefile.tcl

    rba7fc1e r37deb3b  
    208208CXXFLAGS += $(ROOTCFLAGS) -Wno-write-strings -D_FILE_OFFSET_BITS=64 -DDROP_CGAL -I. -Iexternal -Iexternal/tcl
    209209DELPHES_LIBS = $(shell $(RC) --libs) -lEG $(SYSLIBS)
    210 DISPLAY_LIBS = $(shell $(RC) --evelibs) $(SYSLIBS)
     210DISPLAY_LIBS = $(shell $(RC) --evelibs) -lGuiHtml  $(SYSLIBS)
    211211
    212212ifneq ($(CMSSW_FWLITE_INCLUDE_PATH),)
    213213HAS_CMSSW = true
    214214CXXFLAGS += -std=c++0x -I$(subst :, -I,$(CMSSW_FWLITE_INCLUDE_PATH))
    215 DELPHES_LIBS += -L$(subst include,lib,$(subst :, -L,$(CMSSW_FWLITE_INCLUDE_PATH)))
     215OPT_LIBS += -L$(subst include,lib,$(subst :, -L,$(CMSSW_FWLITE_INCLUDE_PATH)))
    216216ifneq ($(CMSSW_RELEASE_BASE),)
    217217CXXFLAGS += -I$(CMSSW_RELEASE_BASE)/src
    218218endif
    219219ifneq ($(LD_LIBRARY_PATH),)
    220 DELPHES_LIBS += -L$(subst include,lib,$(subst :, -L,$(LD_LIBRARY_PATH)))
    221 endif
    222 DELPHES_LIBS += -lGenVector -lFWCoreFWLite -lDataFormatsFWLite -lDataFormatsPatCandidates -lDataFormatsLuminosity -lSimDataFormatsGeneratorProducts -lCommonToolsUtils
     220OPT_LIBS += -L$(subst include,lib,$(subst :, -L,$(LD_LIBRARY_PATH)))
     221endif
     222OPT_LIBS += -lGenVector -lFWCoreFWLite -lDataFormatsFWLite -lDataFormatsPatCandidates -lDataFormatsLuminosity -lSimDataFormatsGeneratorProducts -lCommonToolsUtils
    223223endif
    224224
    225225ifneq ($(PROMC),)
    226226HAS_PROMC = true
    227 CXXFLAGS += -I$(PROMC)/include
    228 DELPHES_LIBS += -L$(PROMC)/lib -lprotoc -lprotobuf -lprotobuf-lite -lcbook -lz
     227CXXFLAGS += -I$(PROMC)/include -I$(PROMC)/src
     228OPT_LIBS += -L$(PROMC)/lib -lpromc -lprotoc -lprotobuf -lprotobuf-lite -lcbook -lz
    229229endif
    230230
     
    232232HAS_PYTHIA8 = true
    233233CXXFLAGS += -I$(PYTHIA8)/include
    234 DELPHES_LIBS += -L$(PYTHIA8)/lib -lpythia8 -lLHAPDF -lgfortran -lz
     234OPT_LIBS += -L$(PYTHIA8)/lib -lpythia8 -lLHAPDF -lgfortran -lz
    235235else
    236236ifneq ($(PYTHIA8DATA),)
    237237HAS_PYTHIA8 = true
    238238CXXFLAGS += -I$(PYTHIA8DATA)/../include
    239 DELPHES_LIBS += -L$(PYTHIA8DATA)/../lib -lpythia8 -lLHAPDF -lgfortran -lz
    240 endif
    241 endif
     239OPT_LIBS += -L$(PYTHIA8DATA)/../lib -lpythia8 -lLHAPDF -lgfortran -lz
     240endif
     241endif
     242
     243DELPHES_LIBS += $(OPT_LIBS)
     244DISPLAY_LIBS += $(OPT_LIBS)
    242245
    243246###
     
    268271puts {ifeq ($(HAS_PROMC),true)}
    269272executableDeps {readers/DelphesProMC.cpp}
    270 sourceDeps {DELPHES} {external/ProMC/*.cc}
    271273puts {endif}
    272274puts {}
  • doc/update_fastjet.sh

    rba7fc1e r37deb3b  
    1 version=3.0.6
     1version=3.1.0
    22
    33#wget http://fastjet.fr/repo/fastjet-${version}.tar.gz
     
    9090cp -a ../../fastjet-${version}/plugins/TrackJet/fastjet/*.hh TrackJet/fastjet
    9191
     92sed -i 's/#include "fastjet\//#include "/' D0RunICone/fastjet/D0RunIpre96ConePlugin.hh
     93sed -i 's/#include "fastjet\//#include "/' D0RunICone/fastjet/D0RunIConePlugin.hh
     94
     95sed -i 's/#include "siscone\//#include "/' SISCone/SISConePlugin.cc
     96
    9297cd -
  • examples/EventDisplay.C

    rba7fc1e r37deb3b  
    1 /*
    2 root -l examples/EventDisplay.C\(\"examples/delphes_card_CMS.tcl\",\"delphes_output.root\"\)
    3 ShowEvent(1);
    4 ShowEvent(2);
    5 */
     1/* Example:
     2 * root -l 'EventDisplay.C("delphes_card_CMS.tcl","../delphes_output.root")'
     3 * root -l 'EventDisplay.C("delphes_card_FCC_basic.tcl","../delphes_output.root","ParticlePropagator","ChargedHadronTrackingEfficiency","MuonTrackingEfficiency","Ecal,Hcal")'
     4 */
    65
    7 //------------------------------------------------------------------------------
     6void EventDisplay(const char* configfile = "delphes_card_CMS.tcl", const char* datafile = "delphes_output.root",
     7                  const char* ParticlePropagator="ParticlePropagator",
     8                  const char* TrackingEfficiency="ChargedHadronTrackingEfficiency",
     9                  const char* MuonEfficiency="MuonEfficiency",
     10                  const char* Calorimeters="Calorimeter",
     11                  bool displayGeometryOnly = false)
     12{
     13   // load the libraries
     14   gSystem->Load("libGeom");
     15   gSystem->Load("libGuiHtml");
     16   gSystem->Load("../libDelphesDisplay");
    817
    9 // radius of the barrel, in m
    10 Double_t gRadius = 1.29;
     18   if(displayGeometryOnly) {
     19     // create the detector representation without transparency
     20     Delphes3DGeometry det3D_geom(new TGeoManager("delphes", "Delphes geometry"), false);
     21     det3D_geom.readFile(configfile, ParticlePropagator, TrackingEfficiency, MuonEfficiency, Calorimeters);
    1122
    12 // half-length of the barrel, in m
    13 Double_t gHalfLength = 3.0;
     23     // display
     24     det3D_geom.getDetector()->Draw("ogl");
    1425
    15 // magnetic field
    16 Double_t gBz = 3.8;
     26   } else {
    1727
    18 TAxis *gEtaAxis = 0;
    19 TAxis *gPhiAxis = 0;
     28     // create the detector representation
     29     Delphes3DGeometry det3D(new TGeoManager("delphes", "Delphes geometry"), true);
     30     det3D.readFile(configfile, ParticlePropagator, TrackingEfficiency, MuonEfficiency, Calorimeters);
    2031
    21 //------------------------------------------------------------------------------
     32     // create the application
     33     DelphesEventDisplay* display = new DelphesEventDisplay(configfile, datafile, det3D);
    2234
    23 #include <set>
    24 #include <vector>
    25 
    26 using namespace std;
    27 
    28 class ExRootTreeReader;
    29 class DelphesCaloData;
    30 class DelphesDisplay;
    31 
    32 TChain gChain("Delphes");
    33 
    34 ExRootTreeReader *gTreeReader = 0;
    35 
    36 TClonesArray *gBranchTower = 0;
    37 TClonesArray *gBranchTrack = 0;
    38 TClonesArray *gBranchJet = 0;
    39 
    40 DelphesCaloData *gCaloData = 0;
    41 TEveElementList *gJetList = 0;
    42 TEveTrackList *gTrackList = 0;
    43 
    44 DelphesDisplay *gDelphesDisplay = 0;
    45 
    46 //------------------------------------------------------------------------------
    47 
    48 void EventDisplay(const char *configFile, const char *inputFile)
    49 {
    50   gSystem->Load("libDelphesDisplay");
    51 
    52   TEveManager::Create(kTRUE, "IV");
    53 
    54   ExRootConfParam param, paramEtaBins;
    55   Long_t i, j, size, sizeEtaBins;
    56   set< Double_t > etaSet;
    57   set< Double_t >::iterator itEtaSet;
    58 
    59   Double_t *etaBins;
    60 
    61   ExRootConfReader *confReader = new ExRootConfReader;
    62   confReader->ReadFile(configFile);
    63 
    64   gRadius = confReader->GetDouble("ParticlePropagator::Radius", 1.0);
    65   gHalfLength = confReader->GetDouble("ParticlePropagator::HalfLength", 3.0);
    66   gBz = confReader->GetDouble("ParticlePropagator::Bz", 0.0);
    67 
    68   // read eta and phi bins
    69   param = confReader->GetParam("Calorimeter::EtaPhiBins");
    70   size = param.GetSize();
    71   etaSet.clear();
    72   for(i = 0; i < size/2; ++i)
    73   {
    74     paramEtaBins = param[i*2];
    75     sizeEtaBins = paramEtaBins.GetSize();
    76 
    77     for(j = 0; j < sizeEtaBins; ++j)
    78     {
    79       etaSet.insert(paramEtaBins[j].GetDouble());
    80     }
    81   }
    82 
    83   delete confReader;
    84 
    85   etaBins = new Double_t[etaSet.size()];
    86   i = 0;
    87 
    88   for(itEtaSet = etaSet.begin(); itEtaSet != etaSet.end(); ++itEtaSet)
    89   {
    90     etaBins[i] = *itEtaSet;
    91     ++i;
    92   }
    93 
    94   gEtaAxis = new TAxis(etaSet.size() - 1, etaBins);
    95   gPhiAxis = new TAxis(72, -TMath::Pi(), TMath::Pi());
    96 
    97   // Create chain of root trees
    98   gChain.Add(inputFile);
    99 
    100   // Create object of class ExRootTreeReader
    101   gTreeReader = new ExRootTreeReader(&gChain);
    102 
    103   // Get pointers to branches
    104   gBranchTower = gTreeReader->UseBranch("Tower");
    105   gBranchTrack = gTreeReader->UseBranch("Track");
    106   gBranchJet = gTreeReader->UseBranch("Jet");
    107 
    108   // data
    109   gCaloData = new DelphesCaloData(2);
    110   gCaloData->RefSliceInfo(0).Setup("ECAL", 0.1, kRed);
    111   gCaloData->RefSliceInfo(1).Setup("HCAL", 0.1, kBlue);
    112   gCaloData->SetEtaBins(gEtaAxis);
    113   gCaloData->SetPhiBins(gPhiAxis);
    114   gCaloData->IncDenyDestroy();
    115 
    116   gJetList = new TEveElementList("Jets");
    117   gEve->AddElement(gJetList);
    118 
    119   gTrackList = new TEveTrackList("Tracks");
    120   gTrackList->SetMainColor(kBlue);
    121   gTrackList->SetMarkerColor(kRed);
    122   gTrackList->SetMarkerStyle(kCircle);
    123   gTrackList->SetMarkerSize(0.5);
    124   gEve->AddElement(gTrackList);
    125 
    126   TEveTrackPropagator *trkProp = gTrackList->GetPropagator();
    127   trkProp->SetMagField(0.0, 0.0, -gBz);
    128   trkProp->SetMaxR(gRadius*100.0);
    129   trkProp->SetMaxZ(gHalfLength*100.0);
    130 
    131   // viewers and scenes
    132 
    133   TEveElementList *geometry = new TEveElementList("Geometry");
    134 
    135   TEveGeoShape *barell = new TEveGeoShape("Barell");
    136   barell->SetShape(new TGeoTube(gRadius*100.0 - 1, gRadius*100.0, gHalfLength*100.0));
    137   barell->SetMainColor(kCyan);
    138   barell->SetMainTransparency(80);
    139   geometry->AddElement(barell);
    140 
    141   TEveCalo3D *calo = new TEveCalo3D(gCaloData);
    142   calo->SetBarrelRadius(gRadius*100.0);
    143   calo->SetEndCapPos(gHalfLength*100.0);
    144 
    145   gStyle->SetPalette(1, 0);
    146   TEveCaloLego *lego = new TEveCaloLego(gCaloData);
    147   lego->InitMainTrans();
    148   lego->RefMainTrans().SetScale(TMath::TwoPi(), TMath::TwoPi(), TMath::Pi());
    149   lego->SetAutoRebin(kFALSE);
    150   lego->Set2DMode(TEveCaloLego::kValSizeOutline);
    151 
    152   gDelphesDisplay = new DelphesDisplay;
    153 
    154   gEve->AddGlobalElement(geometry);
    155   gEve->AddGlobalElement(calo);
    156 
    157   gDelphesDisplay->ImportGeomRPhi(geometry);
    158   gDelphesDisplay->ImportCaloRPhi(calo);
    159 
    160   gDelphesDisplay->ImportGeomRhoZ(geometry);
    161   gDelphesDisplay->ImportCaloRhoZ(calo);
    162 
    163   gDelphesDisplay->ImportCaloLego(lego);
    164 
    165   gEve->Redraw3D(kTRUE);
     35   }
    16636}
    16737
    168 //------------------------------------------------------------------------------
    169 
    170 void ShowEvent(Long64_t event)
    171 {
    172   TIter itTower(gBranchTower);
    173   TIter itTrack(gBranchTrack);
    174   TIter itJet(gBranchJet);
    175 
    176   Tower *tower;
    177   Track *track;
    178   Jet *jet;
    179 
    180   TEveJetCone *eveJetCone;
    181   TEveTrack *eveTrack;
    182 
    183   Int_t counter;
    184 
    185   TEveElement *currentEvent = gEve->GetCurrentEvent();
    186 
    187   TEveTrackPropagator *trkProp = gTrackList->GetPropagator();
    188 
    189   if(event >= gTreeReader->GetEntries()) return;
    190 
    191   // Load selected branches with data from specified event
    192   gTreeReader->ReadEntry(event);
    193 
    194   gCaloData->ClearTowers();
    195   gJetList->DestroyElements();
    196   gTrackList->DestroyElements();
    197 
    198   // Loop over all towers
    199   itTower.Reset();
    200   while((tower = (Tower *) itTower.Next()))
    201   {
    202     gCaloData->AddTower(tower->Edges[0], tower->Edges[1], tower->Edges[2], tower->Edges[3]);
    203     gCaloData->FillSlice(0, tower->Eem);
    204     gCaloData->FillSlice(1, tower->Ehad);
    205   }
    206   gCaloData->DataChanged();
    207 
    208   // Loop over all tracks
    209   itTrack.Reset();
    210   counter = 0;
    211   while((track = (Track *) itTrack.Next()))
    212   {
    213     TParticle pb(track->PID, 1, 0, 0, 0, 0,
    214                  track->P4().Px(), track->P4().Py(),
    215                  track->P4().Pz(), track->P4().E(),
    216                  track->X, track->Y, track->Z, 0.0);
    217 
    218     eveTrack = new TEveTrack(&pb, counter, trkProp);
    219     eveTrack->SetName(Form("%s [%d]", pb.GetName(), counter++));
    220     eveTrack->SetStdTitle();
    221     eveTrack->SetAttLineAttMarker(gTrackList);
    222 
    223     switch(TMath::Abs(track->PID))
    224     {
    225       case 11:
    226         eveTrack->SetLineColor(kRed);
    227         break;
    228       case 13:
    229         eveTrack->SetLineColor(kGreen);
    230         break;
    231       default:
    232         eveTrack->SetLineColor(kBlue);
    233     }
    234     gTrackList->AddElement(eveTrack);
    235     eveTrack->MakeTrack();
    236   }
    237 
    238   // Loop over all jets
    239   itJet.Reset();
    240   counter = 0;
    241   while((jet = (Jet *) itJet.Next()))
    242   {
    243     eveJetCone = new TEveJetCone();
    244     eveJetCone->SetName(Form("jet [%d]", counter++));
    245     eveJetCone->SetMainTransparency(60);
    246     eveJetCone->SetLineColor(kYellow);
    247     eveJetCone->SetCylinder(gRadius*100.0 - 10, gHalfLength*100.0 - 10);
    248     eveJetCone->SetPickable(kTRUE);
    249     eveJetCone->AddEllipticCone(jet->Eta, jet->Phi, jet->DeltaEta, jet->DeltaPhi);
    250     gJetList->AddElement(eveJetCone);
    251   }
    252 
    253   gDelphesDisplay->DestroyEventRPhi();
    254   gDelphesDisplay->ImportEventRPhi(currentEvent);
    255 
    256   gDelphesDisplay->DestroyEventRhoZ();
    257   gDelphesDisplay->ImportEventRhoZ(currentEvent);
    258 
    259   gEve->Redraw3D(kTRUE);
    260 }
  • examples/Example1.C

    rba7fc1e r37deb3b  
    11/*
    2 root -l examples/Example1.C\(\"delphes_output.root\"\)
     2Simple macro showing how to access branches from the delphes output root file,
     3loop over events, and plot simple quantities such as the jet pt and the di-electron invariant
     4mass.
     5
     6root -l examples/Example1.C'("delphes_output.root")'
    37*/
    48
     
    4145     
    4246      // Print jet transverse momentum
    43       cout << jet->PT << endl;
     47      cout << "Jet pt: "<<jet->PT << endl;
    4448    }
    4549
     
    6266  histMass->Draw();
    6367}
     68
  • examples/Example1.cpp

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#include <iostream>
    220#include <utility>
  • examples/Example2.C

    rba7fc1e r37deb3b  
    11/*
    2 root -l examples/Example2.C\(\"delphes_output.root\"\)
     2Simple macro showing how to access branches from the delphes output root file,
     3loop over events, store histograms in a root file and print them as image files. 
     4
     5root -l examples/Example2.C'("delphes_output.root")'
    36*/
    47
  • examples/Example3.C

    rba7fc1e r37deb3b  
    11/*
    2 root -l examples/Example3.C\(\"delphes_output.root\"\)
     2This macro shows how to access the particle-level reference for reconstructed objects.
     3It is also shown how to loop over the jet constituents.
     4
     5root -l examples/Example3.C'("delphes_output.root")'
    36*/
    47
     
    3639
    3740  plots->fElectronDeltaPT = result->AddHist1D(
    38     "electron delta pt", "(p_{T}^{particle} - p_{T}^{electron})/p_{T}^{particle}",
     41    "electron_delta_pt", "(p_{T}^{particle} - p_{T}^{electron})/p_{T}^{particle}",
    3942    "(p_{T}^{particle} - p_{T}^{electron})/p_{T}^{particle}", "number of electrons",
    4043    100, -0.1, 0.1);
    4144
    4245  plots->fElectronDeltaEta = result->AddHist1D(
    43     "electron delta eta", "(#eta^{particle} - #eta^{electron})/#eta^{particle}",
     46    "electron_delta_eta", "(#eta^{particle} - #eta^{electron})/#eta^{particle}",
    4447    "(#eta^{particle} - #eta^{electron})/#eta^{particle}", "number of electrons",
    4548    100, -0.1, 0.1);
    4649
    4750  plots->fPhotonDeltaPT = result->AddHist1D(
    48     "photon delta pt", "(p_{T}^{particle} - p_{T}^{photon})/p_{T}^{particle}",
     51    "photon_delta_pt", "(p_{T}^{particle} - p_{T}^{photon})/p_{T}^{particle}",
    4952    "(p_{T}^{particle} - p_{T}^{photon})/p_{T}^{particle}", "number of photons",
    5053    100, -0.1, 0.1);
    5154
    5255  plots->fPhotonDeltaEta = result->AddHist1D(
    53     "photon delta eta", "(#eta^{particle} - #eta^{photon})/#eta^{particle}",
     56    "photon_delta_eta", "(#eta^{particle} - #eta^{photon})/#eta^{particle}",
    5457    "(#eta^{particle} - #eta^{photon})/#eta^{particle}", "number of photons",
    5558    100, -0.1, 0.1);
    5659
    5760  plots->fPhotonDeltaE = result->AddHist1D(
    58     "photon delta energy", "(E^{particle} - E^{photon})/E^{particle}",
     61    "photon_delta_energy", "(E^{particle} - E^{photon})/E^{particle}",
    5962    "(E^{particle} - E^{photon})/E^{particle}", "number of photons",
    6063    100, -0.1, 0.1);
    6164
    6265  plots->fMuonDeltaPT = result->AddHist1D(
    63     "muon delta pt", "(p_{T}^{particle} - p_{T}^{muon})/p_{T}^{particle}",
     66    "muon_delta_pt", "(p_{T}^{particle} - p_{T}^{muon})/p_{T}^{particle}",
    6467    "(p_{T}^{particle} - p_{T}^{muon})/p_{T}^{particle}", "number of muons",
    6568    100, -0.1, 0.1);
    6669
    6770  plots->fMuonDeltaEta = result->AddHist1D(
    68     "muon delta eta", "(#eta^{particle} - #eta^{muon})/#eta^{particle}",
     71    "muon_delta_eta", "(#eta^{particle} - #eta^{muon})/#eta^{particle}",
    6972    "(#eta^{particle} - #eta^{muon})/#eta^{particle}", "number of muons",
    7073    100, -0.1, 0.1);
    7174
    7275  plots->fTrackDeltaPT = result->AddHist1D(
    73     "track delta pt", "(p_{T}^{particle} - p_{T}^{track})/p_{T}^{particle}",
     76    "track_delta_pt", "(p_{T}^{particle} - p_{T}^{track})/p_{T}^{particle}",
    7477    "(p_{T}^{particle} - p_{T}^{track})/p_{T}^{particle}", "number of tracks",
    7578    100, -0.1, 0.1);
    7679
    7780  plots->fTrackDeltaEta = result->AddHist1D(
    78     "track delta eta", "(#eta^{particle} - #eta^{track})/#eta^{particle}",
     81    "track_delta_eta", "(#eta^{particle} - #eta^{track})/#eta^{particle}",
    7982    "(#eta^{particle} - #eta^{track})/#eta^{particle}", "number of tracks",
    8083    100, -0.1, 0.1);
    8184
    8285  plots->fJetDeltaPT = result->AddHist1D(
    83     "jet delta pt", "(p_{T}^{jet} - p_{T}^{constituents})/p_{T}^{jet}",
     86    "jet_delta_pt", "(p_{T}^{jet} - p_{T}^{constituents})/p_{T}^{jet}",
    8487    "(p_{T}^{jet} - p_{T}^{constituents})/p_{T}^{jet}", "number of jets",
    8588    100, -1.0e-1, 1.0e-1);
     
    179182    }
    180183
    181     cout<<"--  New event -- "<<endl;
     184  //  cout<<"--  New event -- "<<endl;
    182185
    183186    // Loop over all jets in event
     
    188191      momentum.SetPxPyPzE(0.0, 0.0, 0.0, 0.0);
    189192
    190       cout<<"Looping over jet constituents. Jet pt: "<<jet->PT<<", eta: "<<jet->Eta<<", phi: "<<jet->Phi<<endl;     
     193      //cout<<"Looping over jet constituents. Jet pt: "<<jet->PT<<", eta: "<<jet->Eta<<", phi: "<<jet->Phi<<endl;     
    191194
    192195      // Loop over all jet's constituents
     
    201204        {
    202205          particle = (GenParticle*) object;
    203           cout << "    GenPart pt: " << particle->PT << ", eta: " << particle->Eta << ", phi: " << particle->Phi << endl;
     206          //cout << "    GenPart pt: " << particle->PT << ", eta: " << particle->Eta << ", phi: " << particle->Phi << endl;
    204207          momentum += particle->P4();
    205208        }
     
    207210        {
    208211          track = (Track*) object;
    209           cout << "    Track pt: " << track->PT << ", eta: " << track->Eta << ", phi: " << track->Phi << endl;
     212          //cout << "    Track pt: " << track->PT << ", eta: " << track->Eta << ", phi: " << track->Phi << endl;
    210213          momentum += track->P4();
    211214        }
     
    213216        {
    214217          tower = (Tower*) object;
    215           cout << "    Tower pt: " << tower->ET << ", eta: " << tower->Eta << ", phi: " << tower->Phi << endl;
     218          //cout << "    Tower pt: " << tower->ET << ", eta: " << tower->Eta << ", phi: " << tower->Phi << endl;
    216219          momentum += tower->P4();
    217         }
    218         else if(object->IsA() == Muon::Class())
    219         {
    220           muon = (Muon*) object;
    221           cout << "    Muon pt: " << muon->PT << ", eta: " << muon->Eta << ", phi: " << muon->Phi << endl;
    222           momentum += muon->P4();
    223220        }
    224221      }
  • examples/MemoryUsage.C

    rba7fc1e r37deb3b  
    11/*
    2 root -l examples/MemoryUsage.C\(\"ps_output.txt\"\)
     2root -l examples/MemoryUsage.C'("ps_output.txt")'
    33*/
    44
  • examples/ProcessingTime.C

    rba7fc1e r37deb3b  
    11/*
    2 root -l examples/ProcessingTime.C\(\"delphes_output.root\"\)
     2root -l examples/ProcessingTime.C'("delphes_output.root")'
    33*/
    44
  • examples/delphes_card_ATLAS.tcl

    rba7fc1e r37deb3b  
    2929  MissingET
    3030
     31  NeutrinoFilter
    3132  GenJetFinder
    3233  FastJetFinder
     
    206207  set PhotonOutputArray photons
    207208
     209  set EcalTowerMinEnergy 0.50
     210  set HcalTowerMinEnergy 1.00
     211
     212  set EcalTowerMinSignificance 1.0
     213  set HcalTowerMinSignificance 1.0
     214 
    208215  set EFlowTrackOutputArray eflowTracks
    209216  set EFlowPhotonOutputArray eflowPhotons
     
    266273  set HCalResolutionFormula {                  (abs(eta) <= 1.7) * sqrt(energy^2*0.0302^2 + energy*0.5205^2 + 1.59^2) + \
    267274                             (abs(eta) > 1.7 && abs(eta) <= 3.2) * sqrt(energy^2*0.0500^2 + energy*0.706^2) + \
    268                              (abs(eta) > 3.2 && abs(eta) <= 4.9) * sqrt(energy^2*0.9420^2 + energy*0.075^2)}
     275                             (abs(eta) > 3.2 && abs(eta) <= 4.9) * sqrt(energy^2*0.09420^2 + energy*1.00^2)}
    269276}
    270277
     
    406413}
    407414
     415
     416#####################
     417# Neutrino Filter
     418#####################
     419
     420module PdgCodeFilter NeutrinoFilter {
     421 
     422  set InputArray Delphes/stableParticles
     423  set OutputArray filteredParticles
     424
     425  set PTMin 0.0
     426 
     427  add PdgCode {12}
     428  add PdgCode {14}
     429  add PdgCode {16}
     430  add PdgCode {-12}
     431  add PdgCode {-14}
     432  add PdgCode {-16}
     433
     434}
     435
    408436#####################
    409437# MC truth jet finder
     
    411439
    412440module FastJetFinder GenJetFinder {
    413   set InputArray Delphes/stableParticles
     441  set InputArray NeutrinoFilter/filteredParticles
    414442
    415443  set OutputArray jets
     
    422450}
    423451
     452
    424453############
    425454# Jet finder
     
    446475  set OutputArray jets
    447476
    448  # scale formula for jets
    449   set ScaleFormula {1.00}
     477  # scale formula for jets
     478  set ScaleFormula {  sqrt( (3.0 - 0.2*(abs(eta)))^2 / pt + 1.0 )  }
    450479}
    451480
  • examples/delphes_card_ATLAS_PileUp.tcl

    rba7fc1e r37deb3b  
    2020  TrackPileUpSubtractor
    2121  NeutralTowerMerger
     22  EFlowMergerAllTracks
    2223  EFlowMerger
    23 
     24 
     25  NeutrinoFilter
    2426  GenJetFinder
    2527
     
    246248  set TowerOutputArray towers
    247249  set PhotonOutputArray photons
     250
     251  set EcalTowerMinEnergy 0.50
     252  set HcalTowerMinEnergy 1.00
     253
     254  set EcalTowerMinSignificance 1.0
     255  set HcalTowerMinSignificance 1.0
    248256
    249257  set EFlowTrackOutputArray eflowTracks
     
    307315  set HCalResolutionFormula {                  (abs(eta) <= 1.7) * sqrt(energy^2*0.0302^2 + energy*0.5205^2 + 1.59^2) + \
    308316                             (abs(eta) > 1.7 && abs(eta) <= 3.2) * sqrt(energy^2*0.0500^2 + energy*0.706^2) + \
    309                              (abs(eta) > 3.2 && abs(eta) <= 4.9) * sqrt(energy^2*0.9420^2 + energy*0.075^2)}
     317                             (abs(eta) > 3.2 && abs(eta) <= 4.9) * sqrt(energy^2*0.09420^2 + energy*1.00^2)}
    310318}
    311319
     
    334342  add InputArray Calorimeter/eflowNeutralHadrons
    335343  set OutputArray eflowTowers
     344}
     345
     346##################################
     347# Energy flow merger (all tracks)
     348##################################
     349
     350module Merger EFlowMergerAllTracks {
     351# add InputArray InputArray
     352  add InputArray TrackMerger/tracks
     353  add InputArray Calorimeter/eflowPhotons
     354  add InputArray Calorimeter/eflowNeutralHadrons
     355  set OutputArray eflow
    336356}
    337357
     
    349369}
    350370
    351 
    352371#############
    353372# Rho pile-up
    354373#############
    355374
    356 module FastJetFinder Rho {
     375module FastJetGridMedianEstimator Rho {
     376 
    357377  set InputArray Calorimeter/towers
    358 
    359   set ComputeRho true
    360378  set RhoOutputArray rho
    361379
    362   # area algorithm: 0 Do not compute area, 1 Active area explicit ghosts, 2 One ghost passive area, 3 Passive area, 4 Voronoi, 5 Active area
    363   set AreaAlgorithm 5
    364 
    365   # jet algorithm: 1 CDFJetClu, 2 MidPoint, 3 SIScone, 4 kt, 5 Cambridge/Aachen, 6 antikt
    366   set JetAlgorithm 4
    367   set ParameterR 0.6
    368   set GhostEtaMax 5.0
    369   set RhoEtaMax 5.0
    370 
    371   add RhoEtaRange 0.0 5.0
    372 
    373   set JetPTMin 0.0
     380  # etamin etamax gridsize_eta gridsize_phi
     381 
     382  add GridRange 0.0 2.5 0.5 0.5
     383  add GridRange 2.5 5.0 0.5 0.5
     384
     385}
     386
     387
     388#####################
     389# Neutrino Filter
     390#####################
     391
     392module PdgCodeFilter NeutrinoFilter {
     393 
     394  set InputArray Delphes/stableParticles
     395  set OutputArray filteredParticles
     396
     397  set PTMin 0.0
     398 
     399  add PdgCode {12}
     400  add PdgCode {14}
     401  add PdgCode {16}
     402  add PdgCode {-12}
     403  add PdgCode {-14}
     404  add PdgCode {-16}
     405
    374406}
    375407
     
    379411
    380412module FastJetFinder GenJetFinder {
    381   set InputArray Delphes/stableParticles
     413  set InputArray NeutrinoFilter/filteredParticles
    382414
    383415  set OutputArray jets
     
    545577module Merger MissingET {
    546578# add InputArray InputArray
    547   add InputArray EFlowMerger/eflow
     579  add InputArray EFlowMergerAllTracks/eflow
    548580  set MomentumOutputArray momentum
    549581}
     
    644676
    645677#  add Branch TrackMerger/tracks Track Track
    646 #  add Branch Calorimeter/towers Tower Tower
     678  add Branch Calorimeter/towers Tower Tower
    647679
    648680#  add Branch Calorimeter/eflowTracks EFlowTrack Track
  • examples/delphes_card_CMS.tcl

    rba7fc1e r37deb3b  
    2929  MissingET
    3030
     31  NeutrinoFilter
    3132  GenJetFinder
    3233  FastJetFinder
     
    211212  set PhotonOutputArray photons
    212213
     214  set EcalTowerMinEnergy 0.5
     215  set HcalTowerMinEnergy 1.0
     216
     217  set EcalTowerMinSignificance 1.0
     218  set HcalTowerMinSignificance 1.0
     219   
    213220  set EFlowTrackOutputArray eflowTracks
    214221  set EFlowPhotonOutputArray eflowPhotons
     
    416423}
    417424
     425
     426#####################
     427# Neutrino Filter
     428#####################
     429
     430module PdgCodeFilter NeutrinoFilter {
     431 
     432  set InputArray Delphes/stableParticles
     433  set OutputArray filteredParticles
     434
     435  set PTMin 0.0
     436 
     437  add PdgCode {12}
     438  add PdgCode {14}
     439  add PdgCode {16}
     440  add PdgCode {-12}
     441  add PdgCode {-14}
     442  add PdgCode {-16}
     443
     444}
     445
     446
    418447#####################
    419448# MC truth jet finder
     
    421450
    422451module FastJetFinder GenJetFinder {
    423   set InputArray Delphes/stableParticles
     452  set InputArray NeutrinoFilter/filteredParticles
    424453
    425454  set OutputArray jets
     
    432461}
    433462
     463
     464
     465
    434466############
    435467# Jet finder
     
    457489  set OutputArray jets
    458490
    459  # scale formula for jets
    460   set ScaleFormula {1.00}
     491  # scale formula for jets
     492  set ScaleFormula {sqrt( (2.5 - 0.15*(abs(eta)))^2 / pt + 1.0 )}
    461493}
    462494
  • examples/delphes_card_CMS_PileUp.tcl

    rba7fc1e r37deb3b  
    1 
    21#######################################
    32# Order of execution of various modules
     
    2120  TrackPileUpSubtractor
    2221  NeutralTowerMerger
     22  EFlowMergerAllTracks
    2323  EFlowMerger
    24 
     24 
     25  NeutrinoFilter
    2526  GenJetFinder
    2627
     
    6768
    6869  # average expected pile up
    69   set MeanPileUp 10
     70  set MeanPileUp 50
    7071
    7172  # maximum spread in the beam direction in m
     
    253254  set TowerOutputArray towers
    254255  set PhotonOutputArray photons
     256
     257  set EcalTowerMinEnergy 0.5
     258  set HcalTowerMinEnergy 1.0
     259
     260  set EcalTowerMinSignificance 1.0
     261  set HcalTowerMinSignificance 1.0
    255262
    256263  set EFlowTrackOutputArray eflowTracks
     
    347354}
    348355
     356##################################
     357# Energy flow merger (all tracks)
     358##################################
     359
     360module Merger EFlowMergerAllTracks {
     361# add InputArray InputArray
     362  add InputArray TrackMerger/tracks
     363  add InputArray Calorimeter/eflowPhotons
     364  add InputArray Calorimeter/eflowNeutralHadrons
     365  set OutputArray eflow
     366}
     367
    349368
    350369####################
     
    361380
    362381
     382
    363383#############
    364384# Rho pile-up
    365385#############
    366386
    367 module FastJetFinder Rho {
    368 #  set InputArray Calorimeter/towers
     387module FastJetGridMedianEstimator Rho {
     388 
    369389  set InputArray EFlowMerger/eflow
    370 
    371   set ComputeRho true
    372390  set RhoOutputArray rho
    373391
    374   # area algorithm: 0 Do not compute area, 1 Active area explicit ghosts, 2 One ghost passive area, 3 Passive area, 4 Voronoi, 5 Active area
    375   set AreaAlgorithm 5
    376 
    377   # jet algorithm: 1 CDFJetClu, 2 MidPoint, 3 SIScone, 4 kt, 5 Cambridge/Aachen, 6 antikt
    378   set JetAlgorithm 4
    379   set ParameterR 0.6
    380   set GhostEtaMax 5.0
    381 
    382   add RhoEtaRange 0.0 2.5
    383   add RhoEtaRange 2.5 5.0
    384 
    385   set JetPTMin 0.0
    386 }
     392  # etamin etamax gridsize_eta gridsize_phi
     393 
     394  add GridRange 0.0 2.5 1.0 1.0
     395  add GridRange 2.5 5.0 1.0 1.0
     396
     397}
     398
     399#####################
     400# Neutrino Filter
     401#####################
     402
     403module PdgCodeFilter NeutrinoFilter {
     404 
     405  set InputArray Delphes/stableParticles
     406  set OutputArray filteredParticles
     407
     408  set PTMin 0.0
     409 
     410  add PdgCode {12}
     411  add PdgCode {14}
     412  add PdgCode {16}
     413  add PdgCode {-12}
     414  add PdgCode {-14}
     415  add PdgCode {-16}
     416
     417}
     418
     419
    387420
    388421#####################
     
    391424
    392425module FastJetFinder GenJetFinder {
    393   set InputArray Delphes/stableParticles
     426  set InputArray NeutrinoFilter/filteredParticles
    394427
    395428  set OutputArray jets
     
    583616module Merger MissingET {
    584617# add InputArray InputArray
    585   add InputArray EFlowMerger/eflow
     618  add InputArray EFlowMergerAllTracks/eflow
    586619  set MomentumOutputArray momentum
    587620}
  • examples/delphes_card_FCC_basic.tcl

    rba7fc1e r37deb3b  
    2424
    2525  MissingET
    26 
     26 
     27  NeutrinoFilter
    2728  GenJetFinder
    2829  FastJetFinder
     
    394395
    395396#####################
     397# Neutrino Filter
     398#####################
     399
     400module PdgCodeFilter NeutrinoFilter {
     401 
     402  set InputArray Delphes/stableParticles
     403  set OutputArray filteredParticles
     404
     405  set PTMin 0.0
     406 
     407  add PdgCode {12}
     408  add PdgCode {14}
     409  add PdgCode {16}
     410  add PdgCode {-12}
     411  add PdgCode {-14}
     412  add PdgCode {-16}
     413
     414}
     415
     416
     417#####################
    396418# MC truth jet finder
    397419#####################
    398420
    399421module FastJetFinder GenJetFinder {
    400   set InputArray Delphes/stableParticles
     422  set InputArray NeutrinoFilter/filteredParticles
    401423
    402424  set OutputArray jets
  • external/fastjet/AUTHORS

    rba7fc1e r37deb3b  
    1010----------------------------------------------------------------------
    1111
    12 Many people have provided bug reports, suggestions for development and
    13 in some cases explicit code for plugin algorithms. We would in
    14 particular like to thank
     12Many people have provided bug reports, suggestions for development,
     13documentation and in some cases explicit code for plugin
     14algorithms. We would in particular like to thank
    1515
    1616Vanya Belyaev
     
    3232Hartmut Stadie
    3333Mark Sutton
     34Jesse Thaler
    3435Chris Vermilion
    3536Markus Wobisch
     37Christopher Young
    3638
    3739----------------------------------------------------------------------
  • external/fastjet/ActiveAreaSpec.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: ActiveAreaSpec.hh 2577 2011-09-13 15:11:38Z salam $
     1//FJSTARTHEADER
     2// $Id: ActiveAreaSpec.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
  • external/fastjet/AreaDefinition.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: AreaDefinition.cc 3619 2014-08-13 14:17:19Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/AreaDefinition.hh"
     
    6870    break;
    6971  default:
    70     cerr << "Error: unrecognized area_type in AreaDefinition::description():"
     72    ostr << "Error: unrecognized area_type in AreaDefinition::description():"
    7173         << area_type() << endl;
    72     exit(-1);
     74    throw Error(ostr.str());
    7375  }
    7476  return ostr.str();
  • external/fastjet/AreaDefinition.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: AreaDefinition.hh 2687 2011-11-14 11:17:51Z soyez $
     1//FJSTARTHEADER
     2// $Id: AreaDefinition.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2006-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2006-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
  • external/fastjet/BasicRandom.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // simple random number generator class taken from nlojet++.
    3 // $Id$
     1//FJSTARTHEADER
     2// $Id: BasicRandom.cc 3433 2014-07-23 08:17:03Z salam $
    43//
    5 //  Copyright (C) 2002 Zoltan Nagy
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    65//
    7 //  This program is free software; you can redistribute it and/or modify
     6//----------------------------------------------------------------------
     7// This file is part of FastJet.
     8//
     9//  FastJet is free software; you can redistribute it and/or modify
    810//  it under the terms of the GNU General Public License as published by
    911//  the Free Software Foundation; either version 2 of the License, or
    1012//  (at your option) any later version.
    1113//
    12 //  This program is distributed in the hope that it will be useful,
     14//  The algorithms that underlie FastJet have required considerable
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
     17//  FastJet as part of work towards a scientific publication, please
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
     20//
     21//  FastJet is distributed in the hope that it will be useful,
    1322//  but WITHOUT ANY WARRANTY; without even the implied warranty of
    1423//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     
    1625//
    1726//  You should have received a copy of the GNU General Public License
    18 //  along with this program; if not, write to the Free Software
    19 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    20 //ENDHEADER
     27//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
     28//----------------------------------------------------------------------
     29//FJENDHEADER
    2130
    2231//   nlo includes
  • external/fastjet/CMakeLists.txt

    rba7fc1e r37deb3b  
    11include_directories(${CMAKE_SOURCE_DIR}/external)
    22
    3 file(GLOB sources *.cc plugins/*/*.cc contribs/Nsubjettiness/*.cc tools/*cc)
     3file(GLOB sources *.cc plugins/*/*.cc contribs/*/*.cc tools/*.cc)
    44
    55add_library(fastjet OBJECT ${sources})
  • external/fastjet/CircularRange.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: CircularRange.hh 2577 2011-09-13 15:11:38Z salam $
     1//FJSTARTHEADER
     2// $Id: CircularRange.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
  • external/fastjet/ClosestPair2D.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: ClosestPair2D.cc 3433 2014-07-23 08:17:03Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/internal/ClosestPair2D.hh"
     
    3638FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
    3739
    38 const unsigned int huge_unsigned = 4294967295U;
    3940const unsigned int twopow31      = 2147483648U;
    4041
     
    183184  ID2 = _ID(_points[ID1].neighbour);
    184185  distance2 = _points[ID1].neighbour_dist2;
     186  // we make the swap explicitly in the std namespace to avoid
     187  // potential conflict with the fastjet::swap introduced by
     188  // SharedPtr.
     189  // This is only an issue because we are in the fastjet namespace
    185190  if (ID1 > ID2) std::swap(ID1,ID2);
    186191}
  • external/fastjet/ClusterSequence.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: ClusterSequence.cc 3685 2014-09-11 20:15:00Z salam $
    33//
    4 // Copyright (c) 2005-2013, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/Error.hh"
     
    3234#include "fastjet/ClusterSequenceStructure.hh"
    3335#include "fastjet/version.hh" // stores the current version number
     36#include "fastjet/internal/LazyTiling9Alt.hh"
     37#include "fastjet/internal/LazyTiling9.hh"
     38#include "fastjet/internal/LazyTiling25.hh"
     39#ifndef __FJCORE__
     40#include "fastjet/internal/LazyTiling9SeparateGhosts.hh"
     41#endif  // __FJCORE__
    3442#include<iostream>
    3543#include<sstream>
     
    187195//DEP //----------------------------------------------------------------------
    188196//DEP void ClusterSequence::_initialise_and_run (
    189 //DEP                             const double & R,
     197//DEP                             const double R,
    190198//DEP                             const Strategy & strategy,
    191199//DEP                             const bool & writeout_combinations) {
     
    273281  //             ./fastjet_timing_plugins -kt -nhardest 30 -repeat 50000 -strategy -3 -R 0.5 -nev 1  <  ../../data/Pythia-PtMin1000-LHC-1000ev.dat
    274282  if (_strategy == Best) {
     283    _strategy = _best_strategy();
     284#ifdef DROP_CGAL
     285    // fall back strategy for large N when CGAL is missing
     286    if (_strategy == NlnN) _strategy = N2MHTLazy25;
     287#endif  // DROP_CGAL
     288  } else if (_strategy == BestFJ30) {
    275289    int N = _jets.size();
    276290    //if (N <= 55*max(0.5,min(1.0,_Rparam))) {// old empirical scaling with R
     
    324338  // run the code containing the selected strategy
    325339  //
    326   // We order the strategies stqrting from the ones used by the Best
     340  // We order the strategies starting from the ones used by the Best
    327341  // strategy in the order of increasing N, then the remaining ones
    328342  // again in the order of increasing N.
     
    334348  } else if (_strategy == N2MinHeapTiled) {
    335349    this->_minheap_faster_tiled_N2_cluster();
     350  } else if (_strategy == N2MHTLazy9Alt) {
     351    // attempt to use an external tiling routine -- it manipulates
     352    // the CS history via the plugin mechanism
     353    _plugin_activated = true;
     354    LazyTiling9Alt tiling(*this);
     355    tiling.run();
     356    _plugin_activated = false;
     357
     358  } else if (_strategy == N2MHTLazy25) {
     359    // attempt to use an external tiling routine -- it manipulates
     360    // the CS history via the plugin mechanism
     361    _plugin_activated = true;
     362    LazyTiling25 tiling(*this);
     363    tiling.run();
     364    _plugin_activated = false;
     365
     366  } else if (_strategy == N2MHTLazy9) {
     367    // attempt to use an external tiling routine -- it manipulates
     368    // the CS history via the plugin mechanism
     369    _plugin_activated = true;
     370    LazyTiling9 tiling(*this);
     371    tiling.run();
     372    _plugin_activated = false;
     373
     374#ifndef __FJCORE__
     375  } else if (_strategy == N2MHTLazy9AntiKtSeparateGhosts) {
     376    // attempt to use an external tiling routine -- it manipulates
     377    // the CS history via the plugin mechanism
     378    _plugin_activated = true;
     379    LazyTiling9SeparateGhosts tiling(*this);
     380    tiling.run();
     381    _plugin_activated = false;
     382#else
     383    throw Error("N2MHTLazy9AntiKtSeparateGhosts strategy not supported with FJCORE");
     384#endif  // __FJCORE__
     385
    336386  } else if (_strategy == NlnN) {
    337387    this->_delaunay_cluster();
     
    359409// these needs to be defined outside the class definition.
    360410bool ClusterSequence::_first_time = true;
    361 int ClusterSequence::_n_exclusive_warnings = 0;
     411LimitedWarning ClusterSequence::_exclusive_warnings;
    362412
    363413
     
    473523
    474524//----------------------------------------------------------------------
    475 // Return the component corresponding to the specified index.
    476 // taken from CLHEP
    477525string ClusterSequence::strategy_string (Strategy strategy_in)  const {
    478526  string strategy;
     
    492540  case N2PoorTiled:
    493541    strategy = "N2PoorTiled"; break;
     542  case N2MHTLazy9:
     543    strategy = "N2MHTLazy9"; break;
     544  case N2MHTLazy9Alt:
     545    strategy = "N2MHTLazy9Alt"; break;
     546  case N2MHTLazy25:
     547    strategy = "N2MHTLazy25"; break;
     548  case N2MHTLazy9AntiKtSeparateGhosts:
     549    strategy = "N2MHTLazy9AntiKtSeparateGhosts"; break;
    494550  case N3Dumb:
    495551    strategy = "N3Dumb"; break;
     
    528584    } else {return 1.0;}
    529585  } else {throw Error("Unrecognised jet algorithm");}
     586}
     587
     588//----------------------------------------------------------------------
     589// returns a suggestion for the best strategy to use on event
     590// multiplicity, algorithm, R, etc.
     591//
     592// Some of the work to establish the best strategy is collected in
     593// issue-tracker/2014-07-auto-strategy-selection;
     594// transition_fit_v2.fit indicates the results of the fits that we're
     595// using here. (Automatically generated by transition_fit_v2.gp).
     596//
     597// The transition to NlnN is always present, and it is the the
     598// caller's responsibility to drop back down to N2MHTLazy25 if NlnN
     599// isn't available.
     600//
     601// This routine should be called only if the jet alg is one of kt,
     602// antikt, cam or genkt.
     603Strategy ClusterSequence::_best_strategy() const {
     604  int N = _jets.size();
     605  // define bounded R, always above 0.1, because we don't trust any
     606  // of our parametrizations below R = 0.1
     607  double bounded_R = max(_Rparam, 0.1);
     608
     609  // the very first test thing is a quick hard-coded test to decide
     610  // if we immediately opt for N2Plain
     611  if (N <= 30 || N <= 39.0/(bounded_R + 0.6)) {
     612    return N2Plain;
     613  }
     614 
     615  // Define objects that describe our various boundaries. A prefix N_
     616  // indicates that boundary is for N, while L_ means it's for log(N).
     617  //
     618  // Hopefully having them static will ensure minimal overhead
     619  // in creating them; collecting them in one place should
     620  // help with updates?
     621  //
     622  const static _Parabola N_Tiled_to_MHT_lowR             (-45.4947,54.3528,44.6283);
     623  const static _Parabola L_MHT_to_MHTLazy9_lowR          (0.677807,-1.05006,10.6994);
     624  const static _Parabola L_MHTLazy9_to_MHTLazy25_akt_lowR(0.169967,-0.512589,12.1572);
     625  const static _Parabola L_MHTLazy9_to_MHTLazy25_kt_lowR (0.16237,-0.484612,12.3373);
     626  const static _Parabola L_MHTLazy9_to_MHTLazy25_cam_lowR = L_MHTLazy9_to_MHTLazy25_kt_lowR;
     627  const static _Parabola L_MHTLazy25_to_NlnN_akt_lowR    (0.0472051,-0.22043,15.9196);
     628  const static _Parabola L_MHTLazy25_to_NlnN_kt_lowR     (0.118609,-0.326811,14.8287);
     629  const static _Parabola L_MHTLazy25_to_NlnN_cam_lowR    (0.10119,-0.295748,14.3924);
     630
     631  const static _Line     L_Tiled_to_MHTLazy9_medR         (-1.31304,7.29621);
     632  const static _Parabola L_MHTLazy9_to_MHTLazy25_akt_medR = L_MHTLazy9_to_MHTLazy25_akt_lowR;
     633  const static _Parabola L_MHTLazy9_to_MHTLazy25_kt_medR  = L_MHTLazy9_to_MHTLazy25_kt_lowR;
     634  const static _Parabola L_MHTLazy9_to_MHTLazy25_cam_medR = L_MHTLazy9_to_MHTLazy25_cam_lowR;
     635  const static _Parabola L_MHTLazy25_to_NlnN_akt_medR     = L_MHTLazy25_to_NlnN_akt_lowR;
     636  const static _Parabola L_MHTLazy25_to_NlnN_kt_medR      = L_MHTLazy25_to_NlnN_kt_lowR;
     637  const static _Parabola L_MHTLazy25_to_NlnN_cam_medR     = L_MHTLazy25_to_NlnN_cam_lowR;
     638
     639  const static double    N_Plain_to_MHTLazy9_largeR         = 75;
     640  const static double    N_MHTLazy9_to_MHTLazy25_akt_largeR = 700;
     641  const static double    N_MHTLazy9_to_MHTLazy25_kt_largeR  = 1000;
     642  const static double    N_MHTLazy9_to_MHTLazy25_cam_largeR = 1000;
     643  const static double    N_MHTLazy25_to_NlnN_akt_largeR     = 100000;
     644  const static double    N_MHTLazy25_to_NlnN_kt_largeR      = 40000;
     645  const static double    N_MHTLazy25_to_NlnN_cam_largeR     = 15000;
     646
     647  // We have timing studies only for kt, cam and antikt; for other
     648  // algorithms we set the local jet_algorithm variable to the one of
     649  // kt,cam,antikt that we think will be closest in behaviour to the
     650  // other alg.
     651  JetAlgorithm jet_algorithm;
     652  if (_jet_algorithm == genkt_algorithm) {
     653    // for genkt, then we set the local jet_algorithm variable (used
     654    // only for strategy choice) to be either kt or antikt, depending on
     655    // the p value.
     656    double p   = jet_def().extra_param();
     657    if (p < 0.0) jet_algorithm = antikt_algorithm;
     658    else         jet_algorithm =     kt_algorithm;
     659  } else if (_jet_algorithm == cambridge_for_passive_algorithm) {
     660    // we assume (but haven't tested) that using the kt-alg timing
     661    // transitions should be adequate for cambridge_for_passive_algorithm
     662    jet_algorithm = kt_algorithm;
     663  } else {
     664    jet_algorithm = _jet_algorithm;
     665  }
     666
     667  if (bounded_R < 0.65) {
     668    // low R case
     669    if          (N    < N_Tiled_to_MHT_lowR(bounded_R))              return N2Tiled;
     670    double logN = log(double(N));
     671    if          (logN < L_MHT_to_MHTLazy9_lowR(bounded_R))           return N2MinHeapTiled;
     672    else {
     673      if (jet_algorithm == antikt_algorithm){
     674        if      (logN < L_MHTLazy9_to_MHTLazy25_akt_lowR(bounded_R)) return N2MHTLazy9;
     675        else if (logN < L_MHTLazy25_to_NlnN_akt_lowR(bounded_R))     return N2MHTLazy25;
     676        else                                                         return NlnN;
     677      } else if (jet_algorithm == kt_algorithm){
     678        if      (logN < L_MHTLazy9_to_MHTLazy25_kt_lowR(bounded_R))  return N2MHTLazy9;
     679        else if (logN < L_MHTLazy25_to_NlnN_kt_lowR(bounded_R))      return N2MHTLazy25;
     680        else                                                         return NlnN;
     681      } else if (jet_algorithm == cambridge_algorithm)  {
     682        if      (logN < L_MHTLazy9_to_MHTLazy25_cam_lowR(bounded_R)) return N2MHTLazy9;
     683        else if (logN < L_MHTLazy25_to_NlnN_cam_lowR(bounded_R))     return N2MHTLazy25;
     684        else                                                         return NlnNCam;
     685      }
     686    }
     687  } else if (bounded_R < 0.5*pi) {
     688    // medium R case
     689    double logN = log(double(N));
     690    if      (logN < L_Tiled_to_MHTLazy9_medR(bounded_R))             return N2Tiled;
     691    else {
     692      if (jet_algorithm == antikt_algorithm){
     693        if      (logN < L_MHTLazy9_to_MHTLazy25_akt_medR(bounded_R)) return N2MHTLazy9;
     694        else if (logN < L_MHTLazy25_to_NlnN_akt_medR(bounded_R))     return N2MHTLazy25;
     695        else                                                         return NlnN;
     696      } else if (jet_algorithm == kt_algorithm){
     697        if      (logN < L_MHTLazy9_to_MHTLazy25_kt_medR(bounded_R))  return N2MHTLazy9;
     698        else if (logN < L_MHTLazy25_to_NlnN_kt_medR(bounded_R))      return N2MHTLazy25;
     699        else                                                         return NlnN;
     700      } else if (jet_algorithm == cambridge_algorithm)  {
     701        if      (logN < L_MHTLazy9_to_MHTLazy25_cam_medR(bounded_R)) return N2MHTLazy9;
     702        else if (logN < L_MHTLazy25_to_NlnN_cam_medR(bounded_R))     return N2MHTLazy25;
     703        else                                                         return NlnNCam;
     704      }
     705    }
     706  } else {
     707    // large R case (R > pi/2)
     708    if      (N    < N_Plain_to_MHTLazy9_largeR)                      return N2Plain;
     709    else {
     710      if (jet_algorithm == antikt_algorithm){
     711        if      (N < N_MHTLazy9_to_MHTLazy25_akt_largeR)             return N2MHTLazy9;
     712        else if (N < N_MHTLazy25_to_NlnN_akt_largeR)                 return N2MHTLazy25;
     713        else                                                         return NlnN;
     714      } else if (jet_algorithm == kt_algorithm){
     715        if      (N < N_MHTLazy9_to_MHTLazy25_kt_largeR)              return N2MHTLazy9;
     716        else if (N < N_MHTLazy25_to_NlnN_kt_largeR)                  return N2MHTLazy25;
     717        else                                                         return NlnN;
     718      } else if (jet_algorithm == cambridge_algorithm)  {
     719        if      (N < N_MHTLazy9_to_MHTLazy25_cam_largeR)             return N2MHTLazy9;
     720        else if (N < N_MHTLazy25_to_NlnN_cam_largeR)                 return N2MHTLazy25;
     721        else                                                         return NlnNCam;
     722      }
     723    }
     724  }
     725 
     726  bool code_should_never_reach_here = false;
     727  assert(code_should_never_reach_here);
     728  return N2MHTLazy9;
     729
    530730}
    531731
     
    662862//----------------------------------------------------------------------
    663863// return all inclusive jets with pt > ptmin
    664 vector<PseudoJet> ClusterSequence::inclusive_jets (const double & ptmin) const{
     864vector<PseudoJet> ClusterSequence::inclusive_jets (const double ptmin) const{
    665865  double dcut = ptmin*ptmin;
    666866  int i = _history.size() - 1; // last jet
     
    714914// return the number of exclusive jets that would have been obtained
    715915// running the algorithm in exclusive mode with the given dcut
    716 int ClusterSequence::n_exclusive_jets (const double & dcut) const {
     916int ClusterSequence::n_exclusive_jets (const double dcut) const {
    717917
    718918  // first locate the point where clustering would have stopped (i.e. the
     
    733933// return all exclusive jets that would have been obtained running
    734934// the algorithm in exclusive mode with the given dcut
    735 vector<PseudoJet> ClusterSequence::exclusive_jets (const double & dcut) const {
     935vector<PseudoJet> ClusterSequence::exclusive_jets (const double dcut) const {
    736936  int njets = n_exclusive_jets(dcut);
    737937  return exclusive_jets(njets);
     
    742942// return the jets obtained by clustering the event to n jets.
    743943// Throw an error if there are fewer than n particles.
    744 vector<PseudoJet> ClusterSequence::exclusive_jets (const int & njets) const {
     944vector<PseudoJet> ClusterSequence::exclusive_jets (const int njets) const {
    745945
    746946  // make sure the user does not ask for more than jets than there
     
    759959// return the jets obtained by clustering the event to n jets.
    760960// If there are fewer than n particles, simply return all particles
    761 vector<PseudoJet> ClusterSequence::exclusive_jets_up_to (const int & njets) const {
     961vector<PseudoJet> ClusterSequence::exclusive_jets_up_to (const int njets) const {
    762962
    763963  // provide a warning when extracting exclusive jets for algorithms
    764964  // that does not support it explicitly.
    765   // Native algorithm that support it are: kt, ee_kt, cambridge,
     965  // Native algorithm that support it are: kt, ee_kt, Cambridge/Aachen,
    766966  //   genkt and ee_genkt (both with p>=0)
    767967  // For plugins, we check Plugin::exclusive_sequence_meaningful()
     
    773973       (_jet_def.extra_param() <0)) &&
    774974      ((_jet_def.jet_algorithm() != plugin_algorithm) ||
    775        (!_jet_def.plugin()->exclusive_sequence_meaningful())) &&
    776       (_n_exclusive_warnings < 5)) {
    777     _n_exclusive_warnings++;
    778     cerr << "FastJet WARNING: dcut and exclusive jets for jet-finders other than kt should be interpreted with care." << endl;
     975       (!_jet_def.plugin()->exclusive_sequence_meaningful()))) {
     976    _exclusive_warnings.warn("dcut and exclusive jets for jet-finders other than kt, C/A or genkt with p>=0 should be interpreted with care.");
    779977  }
    780978
     
    8291027/// return the dmin corresponding to the recombination that went from
    8301028/// n+1 to n jets
    831 double ClusterSequence::exclusive_dmerge (const int & njets) const {
     1029double ClusterSequence::exclusive_dmerge (const int njets) const {
    8321030  assert(njets >= 0);
    8331031  if (njets >= _initial_n) {return 0.0;}
     
    8411039/// exclusive_dmerge, except in cases where the dmin do not increase
    8421040/// monotonically.
    843 double ClusterSequence::exclusive_dmerge_max (const int & njets) const {
     1041double ClusterSequence::exclusive_dmerge_max (const int njets) const {
    8441042  assert(njets >= 0);
    8451043  if (njets >= _initial_n) {return 0.0;}
     
    8531051/// the algorithm with the given dcut.
    8541052std::vector<PseudoJet> ClusterSequence::exclusive_subjets
    855    (const PseudoJet & jet, const double & dcut) const {
     1053   (const PseudoJet & jet, const double dcut) const {
    8561054
    8571055  set<const history_element*> subhist;
     
    8761074/// exclusive_subjets.size()
    8771075int ClusterSequence::n_exclusive_subjets(const PseudoJet & jet,
    878                         const double & dcut) const {
     1076                        const double dcut) const {
    8791077  set<const history_element*> subhist;
    8801078  // get the set of history elements that correspond to subjets at
     
    11811379// //----------------------------------------------------------------------
    11821380// // print out all inclusive jets with pt > ptmin
    1183 // void ClusterSequence::print_jets (const double & ptmin) const{
     1381// void ClusterSequence::print_jets (const double ptmin) const{
    11841382//     vector<PseudoJet> jets = sorted_by_pt(inclusive_jets(ptmin));
    11851383//
     
    12571455// initialise the history in a standard way
    12581456void ClusterSequence::_add_step_to_history (
    1259                const int & step_number, const int & parent1,
    1260                const int & parent2, const int & jetp_index,
    1261                const double & dij) {
     1457               const int step_number, const int parent1,
     1458               const int parent2, const int jetp_index,
     1459               const double dij) {
    12621460
    12631461  history_element element;
     
    14291627/// of the recombined jet, newjet_k.
    14301628void ClusterSequence::_do_ij_recombination_step(
    1431                                const int & jet_i, const int & jet_j,
    1432                                const double & dij,
     1629                               const int jet_i, const int jet_j,
     1630                               const double dij,
    14331631                               int & newjet_k) {
    14341632
     
    14661664/// jet_i with the beam
    14671665void ClusterSequence::_do_iB_recombination_step(
    1468                                   const int & jet_i, const double & diB) {
     1666                                  const int jet_i, const double diB) {
    14691667  // get history index
    14701668  int newstep_k = _history.size();
  • external/fastjet/ClusterSequence.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: ClusterSequence.hh 3114 2013-05-04 08:46:00Z salam $
     1#ifndef __FASTJET_CLUSTERSEQUENCE_HH__
     2#define __FASTJET_CLUSTERSEQUENCE_HH__
     3
     4//FJSTARTHEADER
     5// $Id: ClusterSequence.hh 3709 2014-09-29 13:19:11Z soyez $
    36//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    58//
    69//----------------------------------------------------------------------
     
    1316//
    1417//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1620//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    1823//
    1924//  FastJet is distributed in the hope that it will be useful,
     
    2530//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2631//----------------------------------------------------------------------
    27 //ENDHEADER
    28 
    29 
    30 #ifndef __FASTJET_CLUSTERSEQUENCE_HH__
    31 #define __FASTJET_CLUSTERSEQUENCE_HH__
     32//FJENDHEADER
     33
    3234
    3335#include<vector>
     
    6567  ClusterSequence () : _deletes_self_when_unused(false) {}
    6668
    67 //   /// create a clustersequence starting from the supplied set
    68 //   /// of pseudojets and clustering them with the long-invariant
    69 //   /// kt algorithm (E-scheme recombination) with the supplied
    70 //   /// value for R.
    71 //   ///
    72 //   /// If strategy=DumbN3 a very stupid N^3 algorithm is used for the
    73 //   /// clustering; otherwise strategy = NlnN* uses cylinders algorithms
    74 //   /// with some number of pi coverage. If writeout_combinations=true a
    75 //   /// summary of the recombination sequence is written out
    76 //   template<class L> ClusterSequence (const std::vector<L> & pseudojets,
    77 //                 const double & R = 1.0,
    78 //                 const Strategy & strategy = Best,
    79 //                 const bool & writeout_combinations = false);
    80 
    81 
    82   /// create a clustersequence starting from the supplied set
    83   /// of pseudojets and clustering them with jet definition specified
     69  /// create a ClusterSequence, starting from the supplied set
     70  /// of PseudoJets and clustering them with jet definition specified
    8471  /// by jet_def (which also specifies the clustering strategy)
    8572  template<class L> ClusterSequence (
     
    10491  /// algorithm) with pt >= ptmin. Time taken should be of the order
    10592  /// of the number of jets returned.
    106   std::vector<PseudoJet> inclusive_jets (const double & ptmin = 0.0) const;
     93  std::vector<PseudoJet> inclusive_jets (const double ptmin = 0.0) const;
    10794
    10895  /// return the number of jets (in the sense of the exclusive
    10996  /// algorithm) that would be obtained when running the algorithm
    11097  /// with the given dcut.
    111   int n_exclusive_jets (const double & dcut) const;
     98  int n_exclusive_jets (const double dcut) const;
    11299
    113100  /// return a vector of all jets (in the sense of the exclusive
    114101  /// algorithm) that would be obtained when running the algorithm
    115102  /// with the given dcut.
    116   std::vector<PseudoJet> exclusive_jets (const double & dcut) const;
     103  std::vector<PseudoJet> exclusive_jets (const double dcut) const;
    117104
    118105  /// return a vector of all jets when the event is clustered (in the
     
    121108  /// If there are fewer than njets particles in the ClusterSequence
    122109  /// an error is thrown
    123   std::vector<PseudoJet> exclusive_jets (const int & njets) const;
     110  std::vector<PseudoJet> exclusive_jets (const int njets) const;
    124111
    125112  /// return a vector of all jets when the event is clustered (in the
     
    128115  /// If there are fewer than njets particles in the ClusterSequence
    129116  /// the function just returns however many particles there were.
    130   std::vector<PseudoJet> exclusive_jets_up_to (const int & njets) const;
     117  std::vector<PseudoJet> exclusive_jets_up_to (const int njets) const;
    131118
    132119  /// return the dmin corresponding to the recombination that went
    133120  /// from n+1 to n jets (sometimes known as d_{n n+1}). If the number
    134121  /// of particles in the event is <= njets, the function returns 0.
    135   double exclusive_dmerge (const int & njets) const;
     122  double exclusive_dmerge (const int njets) const;
    136123
    137124  /// return the maximum of the dmin encountered during all recombinations
     
    139126  /// exclusive_dmerge, except in cases where the dmin do not increase
    140127  /// monotonically.
    141   double exclusive_dmerge_max (const int & njets) const;
     128  double exclusive_dmerge_max (const int njets) const;
    142129
    143130  /// return the ymin corresponding to the recombination that went from
     
    158145
    159146
    160   //int n_exclusive_jets (const PseudoJet & jet, const double & dcut) const;
     147  //int n_exclusive_jets (const PseudoJet & jet, const double dcut) const;
    161148
    162149  /// return a vector of all subjets of the current jet (in the sense
     
    169156  /// just getting that list of constituents.
    170157  std::vector<PseudoJet> exclusive_subjets (const PseudoJet & jet,
    171                                             const double & dcut) const;
     158                                            const double dcut) const;
    172159
    173160  /// return the size of exclusive_subjets(...); still n ln n with same
     
    175162  /// exclusive_subjets.size()
    176163  int n_exclusive_subjets(const PseudoJet & jet,
    177                           const double & dcut) const;
     164                          const double dcut) const;
    178165
    179166  /// return the list of subjets obtained by unclustering the supplied
     
    193180                                                  int nsub) const;
    194181
    195   /// return the dij that was present in the merging nsub+1 -> nsub
     182  /// returns the dij that was present in the merging nsub+1 -> nsub
    196183  /// subjets inside this jet.
    197184  ///
     
    199186  double exclusive_subdmerge(const PseudoJet & jet, int nsub) const;
    200187
    201   /// return the maximum dij that occurred in the whole event at the
     188  /// returns the maximum dij that occurred in the whole event at the
    202189  /// stage that the nsub+1 -> nsub merge of subjets occurred inside
    203190  /// this jet.
     
    207194
    208195  //std::vector<PseudoJet> exclusive_jets (const PseudoJet & jet,
    209   //                                       const int & njets) const;
    210   //double exclusive_dmerge (const PseudoJet & jet, const int & njets) const;
     196  //                                       const int njets) const;
     197  //double exclusive_dmerge (const PseudoJet & jet, const int njets) const;
    211198
    212199  /// returns the sum of all energies in the event (relevant mainly for e+e-)
     
    272259// Not yet. Perhaps in a future release.
    273260//   /// print out all inclusive jets with pt > ptmin
    274 //   virtual void print_jets (const double & ptmin=0.0) const;
     261//   virtual void print_jets (const double ptmin=0.0) const;
    275262
    276263  /// add on to subjet_vector the constituents of jet (for internal use mainly)
     
    300287  ///
    301288  /// NB: after having made this call, the user is still allowed to
    302   /// delete the CS or let it go out of scope. Jets associated with it
    303   /// will then simply not be able to access their substructure after
    304   /// that point.
     289  /// delete the CS. Jets associated with it will then simply not be
     290  /// able to access their substructure after that point.
    305291  void delete_self_when_unused();
    306292
     
    313299
    314300  /// returns the scale associated with a jet as required for this
    315   /// clustering algorithm (kt^2 for the kt-algorithm, 1 for the
    316   /// Cambridge algorithm). [May become virtual at some point]
     301  /// clustering algorithm (kt^2 for the kt-algorithm, 1 for the
     302  /// Cambridge algorithm). Intended mainly for internal use and not
     303  /// valid for plugin algorithms.
    317304  double jet_scale_for_algorithm(const PseudoJet & jet) const;
    318305
     
    363350
    364351  /// the plugin can associate some extra information with the
     352  /// ClusterSequence object by calling this function. The
     353  /// ClusterSequence takes ownership of the pointer (and
     354  /// responsibility for deleting it when the CS gets deleted).
     355  inline void plugin_associate_extras(Extras * extras_in) {
     356    _extras.reset(extras_in);
     357  }
     358
     359  /// the plugin can associate some extra information with the
    365360  /// ClusterSequence object by calling this function
     361  ///
     362  /// As of FJ v3.1, this is deprecated, in line with the deprecation
     363  /// of auto_ptr in C++11
    366364  inline void plugin_associate_extras(std::auto_ptr<Extras> extras_in) {
    367     //_extras = extras_in;
    368365    _extras.reset(extras_in.release());
    369366  }
     
    599596//DEP   /// clustering, provided for legacy purposes. The jet finder is that
    600597//DEP   /// specified in the static member _default_jet_algorithm.
    601 //DEP   void _initialise_and_run (const double & R,
     598//DEP   void _initialise_and_run (const double R,
    602599//DEP                       const Strategy & strategy,
    603600//DEP                       const bool & writeout_combinations);
     
    622619  /// jet_j, at distance scale dij; return the index newjet_k of the
    623620  /// result of the recombination of i and j.
    624   void _do_ij_recombination_step(const int & jet_i, const int & jet_j,
    625                                  const double & dij, int & newjet_k);
     621  void _do_ij_recombination_step(const int jet_i, const int jet_j,
     622                                 const double dij, int & newjet_k);
    626623
    627624  /// carry out an recombination step in which _jets[jet_i] merges with
    628625  /// the beam,
    629   void _do_iB_recombination_step(const int & jet_i, const double & diB);
     626  void _do_iB_recombination_step(const int jet_i, const double diB);
    630627
    631628  /// every time a jet is added internally during clustering, this
     
    640637  void _update_structure_use_count();
    641638 
     639  /// returns a suggestion for the best strategy to use on event
     640  /// multiplicity, algorithm, R, etc.
     641  Strategy _best_strategy() const;
     642 
     643  /// \if internal_doc
     644  /// \class _Parabola
     645  /// returns c*(a*R**2 + b*R + 1);
     646  /// Written as a class in case we want to give names to different
     647  /// parabolas
     648  /// \endif
     649  class _Parabola {
     650  public:
     651    _Parabola(double a, double b, double c) : _a(a), _b(b), _c(c) {}
     652    inline double operator()(const double R) const {return _c*(_a*R*R + _b*R + 1);}
     653  private:
     654    double _a, _b, _c;
     655  };
     656
     657  /// \if internal_doc
     658  /// \class _Line
     659  /// operator()(R) returns a*R+b;
     660  /// \endif
     661  class _Line {
     662  public:
     663    _Line(double a, double b) : _a(a), _b(b) {}
     664    inline double operator()(const double R) const {return _a*R + _b;}
     665  private:
     666    double _a, _b;
     667  };
    642668
    643669  /// This contains the physical PseudoJets; for each PseudoJet one
     
    681707
    682708  bool _plugin_activated;
    683   //std::auto_ptr<Extras> _extras; // things the plugin might want to add
    684709  SharedPtr<Extras> _extras; // things the plugin might want to add
    685710
     
    705730  void _fast_NsqrtN_cluster();
    706731
    707   void _add_step_to_history(const int & step_number, const int & parent1,
    708                                const int & parent2, const int & jetp_index,
    709                                const double & dij);
     732  void _add_step_to_history(const int step_number, const int parent1,
     733                               const int parent2, const int jetp_index,
     734                               const double dij);
    710735
    711736  /// internal routine associated with the construction of the unique
     
    726751
    727752  /// currently used only in the Voronoi based code
    728   void _add_ktdistance_to_map(const int & ii,
     753  void _add_ktdistance_to_map(const int ii,
    729754                              DistMap & DijMap,
    730755                              const DynamicNearestNeighbours * DNN);
     
    734759  static bool _first_time;
    735760
    736   /// record the number of warnings provided about the exclusive
    737   /// algorithm -- so that we don't print it out more than a few
    738   /// times.
    739   static int _n_exclusive_warnings;
     761  /// manage warnings related to exclusive jets access
     762  static LimitedWarning _exclusive_warnings;
    740763
    741764  /// the limited warning member for notification of user that
     
    754777    int        _jets_index;
    755778  };
    756 
    757779
    758780  /// structure analogous to BriefJet, but with the extra information
     
    862884  // routines for tiled case, including some overloads of the plain
    863885  // BriefJet cases
    864   int  _tile_index(const double & eta, const double & phi) const;
     886  int  _tile_index(const double eta, const double phi) const;
    865887  void _tj_set_jetinfo ( TiledJet * const jet, const int _jets_index);
    866888  void  _bj_remove_from_tiles(TiledJet * const jet);
     
    871893  void _add_untagged_neighbours_to_tile_union(const int tile_index,
    872894                 std::vector<int> & tile_union, int & n_near_tiles);
    873 
    874895
    875896  //----------------------------------------------------------------------
     
    923944// template<class L> ClusterSequence::ClusterSequence (
    924945//                                const std::vector<L> & pseudojets,
    925 //                                const double & R,
     946//                                const double R,
    926947//                                const Strategy & strategy,
    927948//                                const bool & writeout_combinations) {
     
    966987
    967988inline unsigned int ClusterSequence::n_particles() const {return _initial_n;}
     989
     990//----------------------------------------------------------------------
     991// implementation of JetDefinition::operator() is here to avoid nasty
     992// issues of order of implementations and includes
     993template<class L>
     994std::vector<PseudoJet> JetDefinition::operator()(const std::vector<L> & particles) const {
     995  // create a new cluster sequence
     996  ClusterSequence * cs = new ClusterSequence(particles, *this);
     997
     998  // get the jets, and sort them according to whether the algorithm
     999  // is spherical or not
     1000  std::vector<PseudoJet> jets;
     1001  if (is_spherical()) {
     1002    jets = sorted_by_E(cs->inclusive_jets());
     1003  } else {
     1004    jets = sorted_by_pt(cs->inclusive_jets());
     1005  }
     1006 
     1007  // make sure the ClusterSequence gets deleted once it's no longer
     1008  // needed
     1009  if (jets.size() != 0) {
     1010    cs->delete_self_when_unused();
     1011  } else {
     1012    delete cs;
     1013  }
     1014
     1015  return jets;
     1016}
    9681017
    9691018
  • external/fastjet/ClusterSequence1GhostPassiveArea.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: ClusterSequence1GhostPassiveArea.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/ClusterSequence1GhostPassiveArea.hh"
  • external/fastjet/ClusterSequence1GhostPassiveArea.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: ClusterSequence1GhostPassiveArea.hh 2687 2011-11-14 11:17:51Z soyez $
     1//FJSTARTHEADER
     2// $Id: ClusterSequence1GhostPassiveArea.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __FASTJET_CLUSTERSEQUENCE1GHOSTPASSIVEAREA_HH__
  • external/fastjet/ClusterSequenceActiveArea.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: ClusterSequenceActiveArea.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/PseudoJet.hh"
  • external/fastjet/ClusterSequenceActiveArea.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: ClusterSequenceActiveArea.hh 2687 2011-11-14 11:17:51Z soyez $
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: ClusterSequenceActiveArea.hh 3619 2014-08-13 14:17:19Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __FASTJET_CLUSTERSEQUENCEACTIVEAREA_HH__
     
    8385  /// the background (e.g. non-jet) activity in a highly populated event; the
    8486  /// one that has been most extensively tested is median.
     87  ///
     88  /// These strategies are OBSOLETE and deprecated (see comment
     89  /// for pt_per_unit_area).
    8590  enum mean_pt_strategies{median=0, non_ghost_median, pttot_over_areatot,
    8691                          pttot_over_areatot_cut, mean_ratio_cut, play,
     
    9398  /// have pt/area > median(pt/area)*range.
    9499  ///
    95   /// NB: This call is OBSOLETE; use media_pt_per_unit_area from the
    96   //      ClusterSequenceAreaBase class instead
     100  /// NB: This call is OBSOLETE and deprecated; use a
     101  /// JetMedianBackgroundEstimator or GridMedianBackgroundEstimator
     102  /// instead.
    97103  double pt_per_unit_area(mean_pt_strategies strat=median,
    98104                          double range=2.0 ) const;
    99105
    100   // following code removed -- now dealt with by AreaBase class (and
    101   // this definition here conflicts with it).
    102 //   /// fits a form pt_per_unit_area(y) = a + b*y^2 in the range
    103 //   /// abs(y)<raprange (for negative raprange, it defaults to
    104 //   /// _safe_rap_for_area).
    105 //   void parabolic_pt_per_unit_area(double & a,double & b, double raprange=-1.0,
    106 //                                double exclude_above=-1.0,
    107 //                                bool use_area_4vector=false ) const;
    108 //
    109106  /// rewrite the empty area from the parent class, so as to use
    110107  /// all info at our disposal
  • external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: ClusterSequenceActiveAreaExplicitGhosts.cc 3433 2014-07-23 08:17:03Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh"
  • external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: ClusterSequenceActiveAreaExplicitGhosts.hh 2687 2011-11-14 11:17:51Z soyez $
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: ClusterSequenceActiveAreaExplicitGhosts.hh 3433 2014-07-23 08:17:03Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __FASTJET_CLUSTERSEQUENCEACTIVEAREAEXPLICITGHOSTS_HH_
  • external/fastjet/ClusterSequenceArea.cc

    rba7fc1e r37deb3b  
     1//FJSTARTHEADER
     2// $Id: ClusterSequenceArea.cc 3433 2014-07-23 08:17:03Z salam $
     3//
     4// Copyright (c) 2006-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     5//
     6//----------------------------------------------------------------------
     7// This file is part of FastJet.
     8//
     9//  FastJet is free software; you can redistribute it and/or modify
     10//  it under the terms of the GNU General Public License as published by
     11//  the Free Software Foundation; either version 2 of the License, or
     12//  (at your option) any later version.
     13//
     14//  The algorithms that underlie FastJet have required considerable
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
     17//  FastJet as part of work towards a scientific publication, please
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
     20//
     21//  FastJet is distributed in the hope that it will be useful,
     22//  but WITHOUT ANY WARRANTY; without even the implied warranty of
     23//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     24//  GNU General Public License for more details.
     25//
     26//  You should have received a copy of the GNU General Public License
     27//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
     28//----------------------------------------------------------------------
     29//FJENDHEADER
     30
    131#include "fastjet/ClusterSequenceArea.hh"
    232
  • external/fastjet/ClusterSequenceArea.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: ClusterSequenceArea.hh 2690 2011-11-14 14:57:54Z soyez $
    3 //
    4 // Copyright (c) 2006-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: ClusterSequenceArea.hh 3484 2014-07-29 21:39:39Z soyez $
     3//
     4// Copyright (c) 2006-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __FASTJET_CLUSTERSEQUENCEAREA_HH__
     
    245247    break;
    246248  default:
    247     std::cerr << "Error: unrecognized area_type in ClusterSequenceArea:"
    248               << _area_def.area_type() << std::endl;
    249     exit(-1);
     249    std::ostringstream err;
     250    err << "Error: unrecognized area_type in ClusterSequenceArea:"
     251        << _area_def.area_type();
     252    throw Error(err.str());
     253    //exit(-1);
    250254  }
    251255  // now copy across the information from the area base class
  • external/fastjet/ClusterSequenceAreaBase.cc

    rba7fc1e r37deb3b  
    11
    2 //STARTHEADER
    3 // $Id$
    4 //
    5 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     2//FJSTARTHEADER
     3// $Id: ClusterSequenceAreaBase.cc 3433 2014-07-23 08:17:03Z salam $
     4//
     5// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    66//
    77//----------------------------------------------------------------------
     
    1414//
    1515//  The algorithms that underlie FastJet have required considerable
    16 //  development and are described in hep-ph/0512210. If you use
     16//  development. They are described in the original FastJet paper,
     17//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1718//  FastJet as part of work towards a scientific publication, please
    18 //  include a citation to the FastJet paper.
     19//  quote the version you use and include a citation to the manual and
     20//  optionally also to hep-ph/0512210.
    1921//
    2022//  FastJet is distributed in the hope that it will be useful,
     
    2628//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2729//----------------------------------------------------------------------
    28 //ENDHEADER
     30//FJENDHEADER
    2931
    3032
  • external/fastjet/ClusterSequenceAreaBase.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: ClusterSequenceAreaBase.hh 2687 2011-11-14 11:17:51Z soyez $
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: ClusterSequenceAreaBase.hh 3433 2014-07-23 08:17:03Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __FASTJET_CLUSTERSEQUENCEAREABASE_HH__
  • external/fastjet/ClusterSequencePassiveArea.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: ClusterSequencePassiveArea.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/ClusterSequencePassiveArea.hh"
  • external/fastjet/ClusterSequencePassiveArea.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: ClusterSequencePassiveArea.hh 2687 2011-11-14 11:17:51Z soyez $
     1//FJSTARTHEADER
     2// $Id: ClusterSequencePassiveArea.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __FASTJET_CLUSTERSEQUENCEPASSIVEAREA_HH__
  • external/fastjet/ClusterSequenceStructure.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: ClusterSequenceStructure.cc 3433 2014-07-23 08:17:03Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/ClusterSequenceStructure.hh"
  • external/fastjet/ClusterSequenceStructure.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: ClusterSequenceStructure.hh 3071 2013-04-01 12:52:46Z cacciari $
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: ClusterSequenceStructure.hh 3433 2014-07-23 08:17:03Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
  • external/fastjet/ClusterSequenceVoronoiArea.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
    3 //
    4 // Copyright (c) 2006-2007 Matteo Cacciari, Gavin Salam and Gregory Soyez
    5 //
    6 //----------------------------------------------------------------------
    7 // This file is part of a simple command-line handling environment
     1//FJSTARTHEADER
     2// $Id: ClusterSequenceVoronoiArea.cc 3433 2014-07-23 08:17:03Z salam $
     3//
     4// Copyright (c) 2006-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     5//
     6//----------------------------------------------------------------------
     7// This file is part of FastJet.
    88//
    99//  FastJet is free software; you can redistribute it and/or modify
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/ClusterSequenceVoronoiArea.hh"
     
    276278  //  -- first the initial ones
    277279  _voronoi_area.reserve(2*n_particles());
     280  _voronoi_area_4vector.reserve(2*n_particles());
    278281  for (unsigned int i=0; i<n_particles(); i++) {
    279282    _voronoi_area.push_back(_pa_calc->area(i));
  • external/fastjet/ClusterSequenceVoronoiArea.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: ClusterSequenceVoronoiArea.hh 2687 2011-11-14 11:17:51Z soyez $
     1//FJSTARTHEADER
     2// $Id: ClusterSequenceVoronoiArea.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __FASTJET_CLUSTERSEQUENCEVORONOIAREA_HH__
     
    6668    return _voronoi_area[jet.cluster_hist_index()];}
    6769
    68   /// return a 4-vector area associated with the given jet -- stricly
     70  /// return a 4-vector area associated with the given jet -- strictly
    6971  /// this is not the exact 4-vector area, but rather an approximation
    7072  /// made of sums of centres of all Voronoi cells in jet, each
  • external/fastjet/ClusterSequenceWithArea.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: ClusterSequenceWithArea.hh 2577 2011-09-13 15:11:38Z salam $
     1//FJSTARTHEADER
     2// $Id: ClusterSequenceWithArea.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2006-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2006-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __FASTJET_CLUSTERSEQUENCEWITHAREA_HH__
  • external/fastjet/ClusterSequence_CP2DChan.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: ClusterSequence_CP2DChan.cc 3433 2014-07-23 08:17:03Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/ClusterSequence.hh"
  • external/fastjet/ClusterSequence_Delaunay.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: ClusterSequence_Delaunay.cc 3475 2014-07-29 11:57:23Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
     
    8587    throw Error(err.str());
    8688    //assert(false);
    87   }
     89  } else
    8890#endif // DROP_CGAL
    8991  {
    90     ostringstream err;
    91     err << "ERROR: Unrecognized value for strategy: "<<_strategy<<endl;
     92    //ostringstream err;
     93    //err << "ERROR: Unrecognized value for strategy: "<<_strategy<<endl;
     94    //throw Error(err.str());
     95    //-----------------------------------------------------------------
     96    // The code should never reach this point, because the checks above
     97    // should always handle all _strategy values for which
     98    // _delaunay_cluster() is called
    9299    assert(false);
    93     throw Error(err.str());
    94100  }
    95101
     
    217223///
    218224void ClusterSequence::_add_ktdistance_to_map(
    219                           const int & ii,
     225                          const int ii,
    220226                          DistMap & DijMap,
    221227                          const DynamicNearestNeighbours * DNN) {
  • external/fastjet/ClusterSequence_DumbN3.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: ClusterSequence_DumbN3.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
  • external/fastjet/ClusterSequence_N2.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: ClusterSequence_N2.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
  • external/fastjet/ClusterSequence_TiledN2.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: ClusterSequence_TiledN2.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
    28 
    29 
    30 // The plain N^2 part of the ClusterSequence class -- separated out
     29//FJENDHEADER
     30
     31
     32// The tiled N^2 part of the ClusterSequence class -- separated out
    3133// from the rest of the class implementation so as to speed up
    3234// compilation of this particular part while it is under test.
     
    3941#include "fastjet/ClusterSequence.hh"
    4042#include "fastjet/internal/MinHeap.hh"
     43#include "fastjet/internal/TilingExtent.hh"
    4144
    4245FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
     
    9497  _tile_size_phi = twopi / _n_tiles_phi; // >= _Rparam and fits in 2pi
    9598
    96   // always include zero rapidity in the tiling region
    97   _tiles_eta_min = 0.0;
    98   _tiles_eta_max = 0.0;
    99   // but go no further than following
    100   const double maxrap = 7.0;
    101 
    102   // and find out how much further one should go
    103   for(unsigned int i = 0; i < _jets.size(); i++) {
    104     double eta = _jets[i].rap();
    105     // first check if eta is in range -- to avoid taking into account
    106     // very spurious rapidities due to particles with near-zero kt.
    107     if (abs(eta) < maxrap) {
    108       if (eta < _tiles_eta_min) {_tiles_eta_min = eta;}
    109       if (eta > _tiles_eta_max) {_tiles_eta_max = eta;}
    110     }
    111   }
     99  TilingExtent tiling_analysis(*this);
     100  _tiles_eta_min = tiling_analysis.minrap();
     101  _tiles_eta_max = tiling_analysis.maxrap();
     102
     103  // // always include zero rapidity in the tiling region
     104  // _tiles_eta_min = 0.0;
     105  // _tiles_eta_max = 0.0;
     106  // // but go no further than following
     107  // const double maxrap = 7.0;
     108  //
     109  // // and find out how much further one should go
     110  // for(unsigned int i = 0; i < _jets.size(); i++) {
     111  //   double eta = _jets[i].rap();
     112  //   // first check if eta is in range -- to avoid taking into account
     113  //   // very spurious rapidities due to particles with near-zero kt.
     114  //   if (abs(eta) < maxrap) {
     115  //     if (eta < _tiles_eta_min) {_tiles_eta_min = eta;}
     116  //     if (eta > _tiles_eta_max) {_tiles_eta_max = eta;}
     117  //   }
     118  // }
    112119
    113120  // now adjust the values
     
    167174//----------------------------------------------------------------------
    168175/// return the tile index corresponding to the given eta,phi point
    169 int ClusterSequence::_tile_index(const double & eta, const double & phi) const {
     176int ClusterSequence::_tile_index(const double eta, const double phi) const {
    170177  int ieta, iphi;
    171178  if      (eta <= _tiles_eta_min) {ieta = 0;}
     
    249256/// their "tagged" status is false; when a neighbour is added its
    250257/// tagged status is set to true.
     258///
     259/// Note that with a high level of warnings (-pedantic -Wextra -ansi,
     260/// gcc complains about tile_index maybe being used uninitialised for
     261/// oldB in ClusterSequence::_minheap_faster_tiled_N2_cluster(). We
     262/// have explicitly checked that it was harmless so we could disable
     263/// the gcc warning by hand using the construct below
     264///
     265///  #pragma GCC diagnostic push
     266///  #pragma GCC diagnostic ignored "-Wpragmas"
     267///  #pragma GCC diagnostic ignored "-Wuninitialized"
     268///  #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
     269///    ...
     270///  #pragma GCC diagnostic pop
     271///
     272/// the @GCC diagnostic push/pop directive was only introduced in
     273/// gcc-4.6, so for broader usage, we'd need to insert #pragma GCC
     274/// diagnostic ignored "-Wpragmas" at the top of this file
    251275inline void ClusterSequence::_add_untagged_neighbours_to_tile_union(
    252276               const int tile_index,
     
    274298  TiledJet * jetA = briefjets, * jetB;
    275299  TiledJet oldB;
    276   oldB.tile_index=0; // prevents a gcc warning 
     300  oldB.tile_index=0; // prevents a gcc warning
    277301
    278302  // will be used quite deep inside loops, but declare it here so that
     
    517541  TiledJet * jetA = briefjets, * jetB;
    518542  TiledJet oldB;
    519   oldB.tile_index=0; // prevents a gcc warning 
     543  oldB.tile_index=0; // prevents a gcc warning
    520544
    521545  // will be used quite deep inside loops, but declare it here so that
     
    555579    // when we set NN for both jetA and jetB on the RH tiles.
    556580  }
    557 
    558581 
    559582  // now create the diJ (where J is i's NN) table -- remember that
     
    721744}
    722745
    723 
    724 
    725746//----------------------------------------------------------------------
    726747/// run a tiled clustering, with our minheap for keeping track of the
     
    735756  TiledJet oldB;
    736757  oldB.tile_index=0; // prevents a gcc warning
    737  
    738758
    739759  // will be used quite deep inside loops, but declare it here so that
  • external/fastjet/CompositeJetStructure.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: CompositeJetStructure.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include <fastjet/CompositeJetStructure.hh>
     
    151153  double a_err=0;
    152154  for (unsigned i = 0; i < _pieces.size(); i++)
    153     a_err += _pieces[i].area();
     155    a_err += _pieces[i].area_error();
    154156
    155157  return a_err;
  • external/fastjet/CompositeJetStructure.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: CompositeJetStructure.hh 3071 2013-04-01 12:52:46Z cacciari $
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: CompositeJetStructure.hh 3652 2014-09-03 13:31:13Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
     
    110112  virtual bool is_pure_ghost(const PseudoJet &reference) const;
    111113
    112   // allow to modify the area information
    113   // (for use in join())
    114   //------------------------------------------------------------------------------
    115   void set_area_information(PseudoJet *area_4vector_ptr){
    116     _area_4vector_ptr = area_4vector_ptr;
     114  //unused: // allows one to modify the area information
     115  //unused: // (for use in join())
     116  //unused: //
     117  //unused: // This member cannot be used by users who need to create a jet with
     118  //unused: // user-supplied area information, because it sets only the 4-vector
     119  //unused: // part of the area, but not all the other area information
     120  //unused: // (e.g. scalar area) -- that other information is always deduced
     121  //unused: // dynamically from the individual constituents.
     122  //unused: // ------------------------------------------------------------------------------
     123  //unused: void set_area_information(PseudoJet *area_4vector_ptr){
     124  //unused:   _area_4vector_ptr = area_4vector_ptr;
     125  //unused: }
     126
     127  /// disable the area of the composite jet
     128  ///
     129  /// this can be used e.g. to discard the area of a composite jet
     130  /// made of pieces with non-explicit-ghost area since the area may
     131  /// by erroneous in that case
     132  void discard_area(){
     133    if (_area_4vector_ptr) delete _area_4vector_ptr;
     134    _area_4vector_ptr = 0;
    117135  }
    118136
     
    226244                                    const JetDefinition::Recombiner & recombiner){
    227245  std::vector<PseudoJet> pieces;
     246  pieces.reserve(2);
    228247  pieces.push_back(j1);
    229248  pieces.push_back(j2);
     
    237256                                    const JetDefinition::Recombiner & recombiner){
    238257  std::vector<PseudoJet> pieces;
     258  pieces.reserve(3);
    239259  pieces.push_back(j1);
    240260  pieces.push_back(j2);
     
    249269                                    const JetDefinition::Recombiner & recombiner){
    250270  std::vector<PseudoJet> pieces;
     271  pieces.reserve(4);
    251272  pieces.push_back(j1);
    252273  pieces.push_back(j2);
  • external/fastjet/Dnn2piCylinder.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: Dnn2piCylinder.cc 3433 2014-07-23 08:17:03Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
  • external/fastjet/Dnn3piCylinder.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: Dnn3piCylinder.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
  • external/fastjet/Dnn4piCylinder.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: Dnn4piCylinder.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
  • external/fastjet/DnnPlane.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: DnnPlane.cc 3442 2014-07-24 07:20:49Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
     
    3335#include<list>
    3436#include "fastjet/internal/DnnPlane.hh"
     37
    3538using namespace std;
    3639
    3740FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
     41
     42const double DnnPlane::DISTANCE_FOR_CGAL_CHECKS=1.0e-12; 
    3843
    3944
     
    5358       _TR.insert(Point(input_points[i].first, input_points[i].second));
    5459
    55     // we are not up to dealing with coincident vertices, so make
    56     // sure the user knows!
    57     _CrashIfVertexPresent(sv.vertex, i);
    58    
    59     // we need to assicate an index to each vertex -- thus when we get
    60     // a vertex (e.g. as a nearest neighbour) from CGAL, we will be
    61     // able to figure out which particle it corresponded to.
    62     sv.vertex->info() = i;
     60    // check if we are dealing with coincident vertices
     61    int coinciding_index = _CheckIfVertexPresent(sv.vertex, i);
     62    if (coinciding_index == i){
     63      // we need to associate an index to each vertex -- thus when we get
     64      // a vertex (e.g. as a nearest neighbour) from CGAL, we will be
     65      // able to figure out which particle it corresponded to.
     66      sv.vertex->info() = sv.coincidence = i;
     67    } else {
     68      //cout << "  coincident with " << coinciding_index << endl;
     69      // the new vertex points to the already existing one and we
     70      // record the coincidence
     71      //
     72      // Note that we must not only set the coincidence of the
     73      // currently-added particle, the one it coincides with also
     74      // needs be updated (taking into account that it might already
     75      // coincide with another one)
     76      //
     77      // An example may help. Say coinciding_index = i1 and we're adding i2==i.
     78      // Then _sv[i2].coincidence = i1; _sv[i1].coincidence = i2. In both
     79      // cases sv.vertex->info() == i1;
     80      //
     81      // Later on we add i3; we find out that its coinciding index is i1;
     82      // so we set _sv[i3].coincidence = i2 and sv[i1].coincidence = i3.
     83      //
     84      // This gives us the structure
     85      //  _supervertex[i1].coincidence == in
     86      //  _supervertex[i2].coincidence == i1
     87      //  ...
     88      //  _supervertex[in].coincidence == in-1
     89      //
     90      sv.coincidence = _supervertex[coinciding_index].coincidence; // handles cases with previous coincidences
     91      _supervertex[coinciding_index].coincidence = i;
     92    }
     93     
    6394    _supervertex.push_back(sv);   
    6495  }
     
    76107/// Crashes if the given vertex handle already exists. Otherwise
    77108/// it does the bookkeeping for future such tests
    78 void DnnPlane::_CrashIfVertexPresent(
    79         const Vertex_handle & vertex, const int & its_index) {
    80   if (!_crash_on_coincidence) return;
    81 
     109int DnnPlane::_CheckIfVertexPresent(
     110        const Vertex_handle & vertex, const int its_index) {
    82111  // vertices that do not have the same geometric position as any
    83112  // other vertex so far added have info().val() == NEW_VERTEX -- this
     
    90119  // DNN:DNN) to be equal to a vertex "index".
    91120  if (vertex->info().val() != NEW_VERTEX) {
    92     ostringstream err;
    93     err << "ERROR in DnnPlane::_CrashIfVertexPresent"
    94          <<endl << "Point "<<its_index<<" coincides with point "
    95          <<vertex->info().val() << endl;
    96     throw DnnError(err.str());
    97   }
     121    if (_crash_on_coincidence){
     122      ostringstream err;
     123      err << "Error: DnnPlane::_CheckIfVertexPresent"
     124          << "Point "<<its_index<<" coincides with point "
     125          <<vertex->info().val() << endl;
     126      throw DnnError(err.str());
     127    }
     128    return vertex->info().val();
     129  }
     130
     131  return its_index;
    98132}
    99133
     
    116150                          vector<int> & indices_of_updated_neighbours) {
    117151
     152  if (_verbose) cout << "Starting  DnnPlane::RemoveAndAddPoints" << endl;
    118153
    119154  // build set of UNION of Voronoi neighbours of a pair of nearest
     
    124159  set<int> indices_removed;
    125160
    126   // for each of the indices to be removed add the voronoi neighbourhood to
    127   // the NeighbourUnion set.
     161  // for each of the indices to be removed add the voronoi
     162  // neighbourhood to the NeighbourUnion set as well as the coinciding
     163  // points that had the current point as coincidence before.
    128164  for (size_t ir = 0; ir < indices_to_remove.size(); ir++) {
    129165    int index = indices_to_remove[ir];
    130166    indices_removed.insert(index);
    131     if (_verbose) cout << " Starting  RemoveAndAddPoints" << endl;
    132     if (_verbose) cout << " point " << index << endl;                   
     167    if (_verbose) cout << "  scheduling point " << index << " for removal" << endl;
     168
     169    if (_supervertex[index].coincidence != index){
     170      // we have a coincidence
     171      //
     172      // The only one of the coincident points that has to be
     173      // inserted in the neighbourhood list (and thus updated) is the
     174      // one that has 'index' as coincidence.
     175      int new_index = _supervertex[index].coincidence;
     176      while (_supervertex[new_index].coincidence != index)
     177        new_index = _supervertex[new_index].coincidence;
     178      if (_verbose) cout << "  inserted coinciding " << new_index << " to neighbours union" << endl;
     179      NeighbourUnion.insert(new_index);
     180
     181      // if this is the point among the coiciding ones that holds the
     182      // CGAL vertex, then also insert the CGAL neighbours, otherwise
     183      // just skip that step.
     184      if (index != _supervertex[index].vertex->info().val()) continue;
     185    }
     186
    133187    // have a circulators that will go round the Voronoi neighbours of
    134188    // _supervertex[index1].vertex
    135189    Vertex_circulator vc = _TR.incident_vertices(_supervertex[index].vertex);
    136190    Vertex_circulator done = vc;
    137     do  {
    138       // if a neighbouring vertex not the infinite vertex, then add it
    139       // to our union of neighbouring vertices.
    140       if (_verbose) cout << "examining " << vc->info().val() << endl;
    141       if (vc->info().val() != INFINITE_VERTEX) {
    142         // NB: from it=1 onwards occasionally it might already have
    143         // been inserted -- but double insertion still leaves only one
    144         // copy in the set, so there's no problem
    145         NeighbourUnion.insert(vc->info().val());
    146         if (_verbose) cout << "inserted " << vc->info().val() << endl;
    147       }
    148     } while (++vc != done);
     191    if (vc != NULL){ // a safety check in case there is no Voronoi
     192                     // neighbour (which may happen e.g. if we just
     193                     // have a bunch of coincident points)
     194      do  {
     195        // if a neighbouring vertex is not the infinite vertex, then add it
     196        // to our union of neighbouring vertices.
     197        if (_verbose) cout << "examining " << vc->info().val() << endl;
     198        if (vc->info().val() != INFINITE_VERTEX) {
     199          // NB: from it=1 onwards occasionally it might already have
     200          // been inserted -- but double insertion still leaves only one
     201          // copy in the set, so there's no problem
     202          NeighbourUnion.insert(vc->info().val());
     203          if (_verbose) cout << "  inserted " << vc->info().val() << " to neighbours union" << endl;
     204        }
     205      } while (++vc != done);
     206    }
    149207  }
    150208 
     
    160218  for (size_t ir = 0; ir < indices_to_remove.size(); ir++) {
    161219    int index = indices_to_remove[ir];
     220    if (_verbose) cout << "  removing " << index << endl;
    162221
    163222    // NeighbourUnion should not contain the points to be removed
    164223    // (because later we will assume they still exist).
    165224    NeighbourUnion.erase(indices_to_remove[ir]);
    166    
     225
     226    // first deal with  coincidences
     227    if (_supervertex[index].coincidence != index){
     228      int new_index = _supervertex[index].coincidence;
     229
     230      // if this is the point among the coiciding ones that "owns" the
     231      // CGAL vertex we need to re-label the CGAL vertex so that it
     232      // points to the coincident particle and set the current one to
     233      // NULL
     234      //
     235      // This can be done only on the first point as they all share
     236      // the same value
     237      //
     238      // Note that this has to be done before the following step since
     239      // it will alter the coincidence information
     240      if (index == _supervertex[index].vertex->info().val())
     241        _supervertex[new_index].vertex->info() = new_index;
     242
     243      // we need to browse the coincidences until we end the loop, at
     244      // which point we reset the coincidence of the point that has
     245      // the current one as a coincidence
     246      while (_supervertex[new_index].coincidence != index)
     247        new_index = _supervertex[new_index].coincidence;
     248      _supervertex[new_index].coincidence = _supervertex[index].coincidence;
     249
     250      // remove the coincidence on the point being removed and mark it
     251      // as removed
     252      _supervertex[index].coincidence = index;
     253      _supervertex[index].vertex = NULL;
     254
     255      continue;
     256    }
     257
    167258    // points to be removed should also be eliminated from the
    168259    // triangulation and the supervertex structure should be updated
     
    192283  // of the neighbour union happens to be on the wrong side.
    193284  Face_handle face;
    194   if (indices_to_remove.size() > 0) {
     285  //if (indices_to_remove.size() > 0) { // GS: use NeighbourUnion instead
     286                                        //     (safe also in case of coincidences)
     287  if (NeighbourUnion.size() > 0) {
    195288    // face can only be found if there were points to remove in first place
    196289    face = _TR.incident_faces(
     
    204297    int index = _supervertex.size()-1;
    205298    indices_added.push_back(index);
    206 
    207     if (indices_to_remove.size() > 0) {
     299    if (_verbose) cout << "  adding " << index << endl;
     300
     301    //if (indices_to_remove.size() > 0) {
     302    if (NeighbourUnion.size() > 0) {
    208303      // be careful of using face (for location hinting) only when it exists
    209304      _supervertex[index].vertex = _TR.insert(Point(points_to_add[ia].first,
     
    213308                                                    points_to_add[ia].second));
    214309    }
    215     // we are not up to dealing with coincident vertices, so make
    216     // sure the user knows!
    217     _CrashIfVertexPresent(_supervertex[index].vertex, index);
    218     _supervertex[index].vertex->info() = index;
     310
     311    // check if this leads to a coincidence
     312    int coinciding_index = _CheckIfVertexPresent(_supervertex[index].vertex, index);
     313    if (coinciding_index == index){
     314      // we need to associate an index to each vertex -- thus when we get
     315      // a vertex (e.g. as a nearest neighbour) from CGAL, we will be
     316      // able to figure out which particle it corresponded to.
     317      _supervertex[index].vertex->info() = _supervertex[index].coincidence = index;
     318    } else {
     319      if (_verbose) cout << "  coinciding with vertex " << coinciding_index << endl;
     320      // the new vertex points to an already existing one and we
     321      // record the coincidence
     322      //
     323      // we also update the NN of the coinciding particle (to avoid
     324      // having to loop over the list of coinciding neighbours later)
     325      // This is done first as it allows us to check if this is a new
     326      // coincidence or a coincidence added to a particle that was
     327      // previously "alone"
     328      _supervertex[coinciding_index].NNindex = index;
     329      _supervertex[coinciding_index].NNdistance = 0.0;
     330      indices_of_updated_neighbours.push_back(coinciding_index);
     331
     332      // Note that we must not only set the coincidence of the
     333      // currently-added particle, the one it coincides with also
     334      // needs be updated (taking into account that it might already
     335      // coincide with another one)
     336      _supervertex[index].coincidence = _supervertex[coinciding_index].coincidence; // handles cases with previous coincidences
     337      _supervertex[coinciding_index].coincidence = index;
     338
     339    }
    219340   
    220341    // first find nearest neighbour of "newpoint" (shorthand for
     
    227348    indices_of_updated_neighbours.push_back(index);
    228349    _SetAndUpdateNearest(index, indices_of_updated_neighbours);
     350
     351    //cout << "Added: " << setprecision(20) << " ("
     352    //     << points_to_add[ia].first << "," << points_to_add[ia].second
     353    //     << ") with index " << index << endl;
    229354  }
    230355
     
    251376  }
    252377
     378  if (_verbose) cout << "Leaving  DnnPlane::RemoveAndAddPoints" << endl;
    253379}
    254 
    255380
    256381//----------------------------------------------------------------------
    257382/// Determines the index and distance of the nearest neighbour to
    258383/// point j and puts the information into the _supervertex entry for j.
    259 void DnnPlane::_SetNearest (const int & j) {
     384void DnnPlane::_SetNearest (const int j) {
     385  // first deal with the cases where we have a coincidence
     386  if (_supervertex[j].coincidence != j){
     387    _supervertex[j].NNindex = _supervertex[j].coincidence;
     388    _supervertex[j].NNdistance = 0.0;
     389    return;
     390  }
     391
     392  // The code below entirely uses CGAL distance comparisons to compute
     393  // the nearest neighbour. It has the mais drawback to induice a
     394  // 10-20% time penalty so we switched to our own comparison (which
     395  // only turns to CGAL for dangerous situations)
     396  //
     397  //  Vertex_handle current = _supervertex[j].vertex;
     398  //  Vertex_circulator vc = _TR.incident_vertices(current);
     399  //  Vertex_circulator done = vc;
     400  //  Vertex_handle nearest = _TR.infinite_vertex();
     401  //  double mindist = HUGE_DOUBLE;
     402  //
     403  //   // when there is only one finite point left in the triangulation,
     404  //   // there are no triangles. Presumably this is why voronoi returns
     405  //   // NULL for the incident vertex circulator. Check if this is
     406  //   // happening before circulating over it... (Otherwise it crashes
     407  //   // when looking for neighbours of last point)
     408  //   if (vc != NULL){
     409  //     // initialise the nearest vertex handle to the first incident
     410  //     // vertex that is not INFINITE_VERTEX
     411  //     while (vc->info().val() == INFINITE_VERTEX){
     412  //       vc++;
     413  //       if (vc==done) break; // if vc==done, then INFINITE_VERTEX is the
     414  //                       // only element in the neighbourhood
     415  //     }
     416  //
     417  //     // if there is just the infinite vertex, we have vc->info().val()
     418  //     // == INFINITE_VERTEX and nothing has to be done
     419  //     // otherwise, use the current vc as an initialisation
     420  //     if (vc->info().val() != INFINITE_VERTEX){
     421  //       nearest = vc; // initialisation to the first non-infinite vertex
     422  //
     423  //       // and loop over the following ones
     424  //       while (++vc != done){
     425  //    // we should not compare with the infinite vertex
     426  //    if (vc->info().val() == INFINITE_VERTEX) continue;
     427  //
     428  //    if (_verbose) cout << current->info().val() << " " << vc->info().val() << endl;
     429  //    // use CGAL's distance comparison to check if 'vc' is closer to
     430  //    // 'current' than the nearest so far (we include the == case for
     431  //    // safety though it should not matter in this precise case)
     432  //    if (CGAL::compare_distance_to_point(current->point(), vc->point(), nearest->point())!=CGAL::LARGER){
     433  //      nearest = vc;
     434  //      if (_verbose) cout << "nearer";
     435  //    }
     436  //       }
     437  //
     438  //       // now compute the distance
     439  //       //
     440  //       // Note that since we're always using CGAL to compare distances
     441  //       // (and never the distance computed using _euclid_distance) we
     442  //       // should not worry about rounding errors in mindist
     443  //       mindist = _euclid_distance(current->point(), nearest->point());
     444  //     }
     445  //   }
     446  //
     447  //  // set j's supervertex info about nearest neighbour
     448  //  _supervertex[j].NNindex = nearest->info().val();
     449  //  _supervertex[j].NNdistance = mindist;
     450
    260451  Vertex_handle current = _supervertex[j].vertex;
    261452  Vertex_circulator vc = _TR.incident_vertices(current);
     
    264455  double mindist = HUGE_DOUBLE; // change this to "HUGE" or max_double?
    265456  Vertex_handle nearest = _TR.infinite_vertex();
    266 
     457 
    267458  // when there is only one finite point left in the triangulation,
    268459  // there are no triangles. Presumably this is why voronoi returns
     
    274465      // find distance between j and its Voronoi neighbour (vc)
    275466      if (_verbose) cout << current->info().val() << " " << vc->info().val() << endl;
    276       dist = _euclid_distance(current->point(), vc->point());
     467
    277468      // check if j is closer to vc than vc's currently registered
    278469      // nearest neighbour (and update things if it is)
    279       if (dist < mindist) {
    280         mindist = dist; nearest = vc;
    281         if (_verbose) cout << "nearer ";
     470      if (_is_closer_to(current->point(), vc->point(), nearest, dist, mindist)){
     471        nearest = vc;
     472        if (_verbose) cout << "nearer ";
    282473      }
    283474      if (_verbose) cout << vc->point() << "; "<< dist << endl;
    284475    }
    285476  } while (++vc != done); // move on to next Voronoi neighbour
     477 
    286478  // set j's supervertex info about nearest neighbour
    287479  _supervertex[j].NNindex = nearest->info().val();
     
    291483//----------------------------------------------------------------------
    292484/// Determines and stores the nearest neighbour of j, and where
    293 /// necessary update the nearest-neighbour info of Voronoi neighbours
     485/// necessary updates the nearest-neighbour info of Voronoi neighbours
    294486/// of j;
    295487///
     
    304496/// NB: note that we have _SetAndUpdateNearest as a completely
    305497///     separate routine from _SetNearest because we want to
    306 ///     use one single ciruclation over voronoi neighbours to find the
     498///     use one single circulation over voronoi neighbours to find the
    307499///     nearest neighbour and to update the voronoi neighbours if need
    308500///     be.
    309501void DnnPlane::_SetAndUpdateNearest(
    310                           const int & j,
     502                          const int j,
    311503                          vector<int> & indices_of_updated_neighbours) {
     504  //cout << "SetAndUpdateNearest for point " << j << endl;
     505  // first deal with coincidences
     506  if (_supervertex[j].coincidence != j){
     507    _supervertex[j].NNindex = _supervertex[j].coincidence;
     508    _supervertex[j].NNdistance = 0.0;
     509    //cout << "  set to coinciding point " << _supervertex[j].coincidence << endl;
     510    return;
     511  }
    312512
    313513  Vertex_handle current = _supervertex[j].vertex;
     
    326526    if (vc->info().val() != INFINITE_VERTEX) {
    327527      if (_verbose) cout << current->info().val() << " " << vc->info().val() << endl;
    328       // find distance between j and its Voronoi neighbour (vc)
    329       dist = _euclid_distance(current->point(), vc->point());
     528
    330529      // update the mindist if we are closer than anything found so far
    331       if (dist < mindist) {
    332         mindist = dist; nearest = vc;
    333         if (_verbose) cout << "nearer ";
     530      if (_is_closer_to(current->point(), vc->point(), nearest, dist, mindist)){
     531        nearest = vc;
     532        if (_verbose) cout << "nearer ";
    334533      }
     534
    335535      // find index corresponding to vc for easy manipulation
    336536      int vcindx = vc->info().val();
    337537      if (_verbose) cout << vc->point() << "; "<< dist << endl;
    338       // check if j is closer to vc than vc's currently registered
    339       // nearest neighbour (and update things if it is)
    340       if (dist < _supervertex[vcindx].NNdistance) {
     538
     539      if (_is_closer_to_with_hint(vc->point(), current->point(),
     540                                  _supervertex[_supervertex[vcindx].NNindex].vertex,
     541                                  dist, _supervertex[vcindx].NNdistance)){
    341542        if (_verbose) cout << vcindx << "'s NN becomes " << current->info().val() << endl;
    342         _supervertex[vcindx].NNdistance = dist;
    343543        _supervertex[vcindx].NNindex = j;
    344544        indices_of_updated_neighbours.push_back(vcindx);
    345545      }
     546
     547      // original code without the use of CGAL distance in potentially
     548      // dangerous cases
     549      //
     550      // // check if j is closer to vc than vc's currently registered
     551      // // nearest neighbour (and update things if it is)
     552      // //
     553      // // GS: originally, the distance test below was a strict <. It
     554      // //     has to be <= because if the two distances are ==, it is
     555      // //     possible that the old NN is no longer connected to vc in
     556      // //     the triangulation, and we are sure that the newly
     557      // //     inserted point (j) is (since we loop over j's
     558      // //     neighbouring points in the triangulation).
     559      // if (dist <= _supervertex[vcindx].NNdistance) {
     560      //        if (_verbose) cout << vcindx << "'s NN becomes " << current->info().val() << endl;
     561      //        _supervertex[vcindx].NNdistance = dist;
     562      //        _supervertex[vcindx].NNindex = j;
     563      //        indices_of_updated_neighbours.push_back(vcindx);
     564      // }
    346565    }
    347566  } while (++vc != done); // move on to next Voronoi neighbour
    348567  // set j's supervertex info about nearest neighbour
     568  //cout << "  set to point " << nearest->info().val() << endl;
    349569  _supervertex[j].NNindex = nearest->info().val();
    350570  _supervertex[j].NNdistance = mindist;
  • external/fastjet/Error.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: Error.cc 3695 2014-09-18 13:57:56Z cacciari $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/Error.hh"
     
    3133#include <sstream>
    3234
     35#ifndef __FJCORE__
    3336// printing the stack would need execinfo
    3437#ifdef FASTJET_HAVE_EXECINFO_H
    3538#include <execinfo.h>
    3639#include <cstdlib>
    37 #endif
     40#ifdef FASTJET_HAVE_DEMANGLING_SUPPORT
     41#include <cstdio>
     42#include <cxxabi.h>
     43#endif // FASTJET_HAVE_DEMANGLING_SUPPORT
     44#endif // FASTJET_HAVE_EXECINFO_H
     45#endif  // __FJCORE__
    3846
    3947FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
     
    4452bool Error::_print_backtrace = false;
    4553ostream * Error::_default_ostr = & cerr;
     54#if (!defined(FASTJET_HAVE_EXECINFO_H)) || defined(__FJCORE__)
     55  LimitedWarning Error::_execinfo_undefined;
     56#endif
    4657
     58//----------------------------------------------------------------------
     59#ifndef __FJCORE__
     60
     61// demangling only is included, i.e. --enable-demangling is specified
     62// at configure time, execinfo.h is present and the GNU C++ ABI is
     63// supported
     64#if defined(FASTJET_HAVE_EXECINFO_H) && defined(FASTJET_HAVE_DEMANGLING_SUPPORT)
     65// demangle a given backtrace symbol
     66//
     67// Notes:
     68//  - at the moment, only the symbol is parsed.
     69//  - one can get the offset by using
     70//      "%*[^(]%*[^_]%127[^+)]%64[+x0123456789abcdef]", symbol, offset
     71//    and checking if sscanf returns 0, 1 or 2
     72//    (offset includes the leading +)
     73//  - Similarly one could exctract the address and try to convert it
     74//    into a filename+line number like addr2line does but this seems
     75//    to require exteral dependencies. If we want to go down that
     76//    route, one could look into the inplementation o faddr2line(.c)
     77//    and/or dladdr.
     78string Error::_demangle(const char* symbol) {
     79  size_t size;
     80  int status;
     81  char temp[128];
     82  char* demangled;
     83  // first, try to demangle a c++ name
     84  // decryption:
     85  //   %*[^(]  matches any number of characters different from "("
     86  //           the * tells not to store in input var
     87  //   %*[^_]  matches any number of characters different from "_"
     88  //           the * tells not to store in input var
     89  //   %127[^)+]  matches at most 127 characters different from "+"
     90  //              match is stored
     91  if (1 == sscanf(symbol, "%*[^(]%*[^_]%127[^)+]", temp)) {
     92    //cout << symbol << " -> " << temp << endl;
     93    if (NULL != (demangled = abi::__cxa_demangle(temp, NULL, &size, &status))) {
     94      string result(demangled);
     95      free(demangled);
     96      return result;
     97    }
     98  }
     99  //if that didn't work, try to get a regular c symbol
     100  if (1 == sscanf(symbol, "%127s", temp)) {
     101    return temp;
     102  }
     103 
     104  //if all else fails, just return the symbol
     105  return symbol;
     106}
     107#endif  // FASTJET_HAVE_DEMANGLING_SUPPORT && FASTJET_HAVE_EXECINFO_H
     108#endif  // __FJCORE__
     109
     110
     111//----------------------------------------------------------------------
    47112Error::Error(const std::string & message_in) {
    48113  _message = message_in;
     114
    49115  if (_print_errors && _default_ostr){
    50116    ostringstream oss;
    51117    oss << "fastjet::Error:  "<< message_in << endl;
    52118
     119#ifndef __FJCORE__
    53120    // only print the stack if execinfo is available and stack enabled
    54121#ifdef FASTJET_HAVE_EXECINFO_H
     
    62129      oss << "stack:" << endl;
    63130      for (int i = 1; i < size && messages != NULL; ++i){
     131#ifdef FASTJET_HAVE_DEMANGLING_SUPPORT
     132        oss << "  #" << i << ": " << _demangle(messages[i])
     133            << " [" << messages[i]  << "]" << endl;
     134#else
    64135        oss << "  #" << i << ": " << messages[i] << endl;
     136#endif
    65137      }
    66138      free(messages);
    67139    }
    68 #endif
     140#endif  // FASTJET_HAVE_EXECINFO_H
     141#endif  // __FJCORE__
    69142
    70143    *_default_ostr << oss.str();
     
    83156}
    84157
     158//----------------------------------------------------------------------
     159void Error::set_print_backtrace(bool enabled) {
     160#if (!defined(FASTJET_HAVE_EXECINFO_H)) || defined(__FJCORE__)
     161  if (enabled) {
     162    _execinfo_undefined.warn("Error::set_print_backtrace(true) will not work with this build of FastJet");
     163  }
     164#endif   
     165  _print_backtrace = enabled;
     166}
     167
    85168FASTJET_END_NAMESPACE
    86169
  • external/fastjet/Error.hh

    rba7fc1e r37deb3b  
    22#define __FASTJET_ERROR_HH__
    33
    4 //STARTHEADER
    5 // $Id: Error.hh 2577 2011-09-13 15:11:38Z salam $
     4//FJSTARTHEADER
     5// $Id: Error.hh 3694 2014-09-18 13:21:54Z soyez $
    66//
    7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234#include<iostream>
    3335#include<string>
    3436#include "fastjet/internal/base.hh"
     37#include "fastjet/config.h"
     38#if (!defined(FASTJET_HAVE_EXECINFO_H)) || defined(__FJCORE__)
     39#include "fastjet/LimitedWarning.hh"
     40#endif
    3541
    3642FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
     
    6369  /// controls whether the backtrace is printed out with the error message or not.
    6470  /// The default is "false".
    65   static void set_print_backtrace(bool enabled) {_print_backtrace = enabled;}
     71  static void set_print_backtrace(bool enabled);
    6672
    6773  /// sets the default output stream for all errors; by default
     
    7278
    7379private:
     80
     81#ifndef __FJCORE__
     82#if defined(FASTJET_HAVE_EXECINFO_H) && defined(FASTJET_HAVE_DEMANGLING_SUPPORT)
     83  /// demangle a given backtrace symbol
     84  std::string _demangle(const char* symbol);
     85#endif
     86#endif
     87
    7488  std::string _message;                ///< error message
    7589  static bool _print_errors;           ///< do we print anything?
    7690  static bool _print_backtrace;        ///< do we print the backtrace?
    7791  static std::ostream * _default_ostr; ///< the output stream (cerr if not set)
     92#if (!defined(FASTJET_HAVE_EXECINFO_H)) || defined(__FJCORE__)
     93  static LimitedWarning _execinfo_undefined;
     94#endif
    7895};
    7996
  • external/fastjet/FunctionOfPseudoJet.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: FunctionOfPseudoJet.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include <fastjet/FunctionOfPseudoJet.hh>
  • external/fastjet/FunctionOfPseudoJet.hh

    rba7fc1e r37deb3b  
    22#define __FASTJET_FUNCTION_OF_PSEUDOJET_HH__
    33
    4 //STARTHEADER
    5 // $Id: FunctionOfPseudoJet.hh 2577 2011-09-13 15:11:38Z salam $
     4//FJSTARTHEADER
     5// $Id: FunctionOfPseudoJet.hh 3433 2014-07-23 08:17:03Z salam $
    66//
    7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234#include <fastjet/PseudoJet.hh>
     
    4951  FunctionOfPseudoJet(){}
    5052
    51   /// ctor that creates a constant function
    52   FunctionOfPseudoJet(const TOut &constant_value);
     53  // ctor that creates a constant function
     54  //----------
     55  // this declaration was present in versions of FJ from 3.0.0 to 3.0.6,
     56  // but never implemented. It is being removed from 3.0.7 upwards
     57  // to avoid misleading users
     58  //FunctionOfPseudoJet(const TOut &constant_value);
    5359
    5460  /// default dtor (virtual to allow safe polymorphism)
  • external/fastjet/GhostedAreaSpec.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: GhostedAreaSpec.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/GhostedAreaSpec.hh"
  • external/fastjet/GhostedAreaSpec.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: GhostedAreaSpec.hh 2728 2011-11-20 14:18:59Z salam $
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: GhostedAreaSpec.hh 3433 2014-07-23 08:17:03Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
     
    122124
    123125  // for accessing values set by the user
     126  inline double ghost_rapmax () const {return _ghost_maxrap;}
     127  inline double ghost_maxrap () const {return _ghost_maxrap;}
    124128  inline double ghost_etamax () const {return _ghost_maxrap;}
    125   inline double ghost_maxrap () const {return _ghost_maxrap;}
     129  inline double ghost_maxeta () const {return _ghost_maxrap;}
    126130  inline double ghost_area   () const {return _ghost_area   ;}
    127131  inline double grid_scatter () const {return _grid_scatter;}
     
    140144  // when explicitly modifying values, sometimes call the initializer
    141145  inline void set_ghost_area   (double val) {_ghost_area    = val; _initialize();}
     146  inline void set_ghost_rapmax (double val) {_ghost_maxrap = val; _initialize();}
     147  inline void set_ghost_maxrap (double val) {_ghost_maxrap = val; _initialize();}
    142148  inline void set_ghost_etamax (double val) {_ghost_maxrap = val; _initialize();}
    143   inline void set_ghost_maxrap (double val) {_ghost_maxrap = val; _initialize();}
     149  inline void set_ghost_maxeta (double val) {_ghost_maxrap = val; _initialize();}
    144150  inline void set_grid_scatter (double val) {_grid_scatter   = val; }
    145151  inline void set_pt_scatter   (double val) {_pt_scatter     = val; }
  • external/fastjet/JetDefinition.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: JetDefinition.cc 3677 2014-09-09 22:45:25Z soyez $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/JetDefinition.hh"
     
    6870  // cross-check the number of parameters that were declared in setting up the
    6971  // algorithm (passed internally from the public constructors)
    70   switch (jet_algorithm_in) {
    71   case ee_kt_algorithm:
    72     if (nparameters != 0) {
    73       ostringstream oss;
    74       oss << "ee_kt_algorithm should be constructed with 0 parameters but was called with "
    75           << nparameters << " parameter(s)\n";
    76       throw Error(oss.str());
    77     }
    78     break;
    79   case genkt_algorithm:
    80   case ee_genkt_algorithm:
    81     if (nparameters != 2) {
    82       ostringstream oss;
    83       oss << "(ee_)genkt_algorithm should be constructed with 2 parameters but was called with "
    84           << nparameters << " parameter(s)\n";
    85       throw Error(oss.str());
    86     }
    87     break;
    88   default:
    89     if (nparameters != 1) {
    90       ostringstream oss;
    91       oss << "The jet algorithm you requested ("
    92           << jet_algorithm_in << ") should be constructed with 1 parameter but was called with "
    93           << nparameters << " parameter(s)\n";
    94       throw Error(oss.str());
    95     }
     72  unsigned int nparameters_expected = n_parameters_for_algorithm(jet_algorithm_in);
     73  if (nparameters != (int) nparameters_expected){
     74    ostringstream oss;
     75    oss << "The jet algorithm you requested ("
     76        << jet_algorithm_in << ") should be constructed with " << nparameters_expected
     77        << " parameter(s) but was called with " << nparameters << " parameter(s)\n";
     78    throw Error(oss.str());
    9679  }
    9780
     
    10689
    10790//----------------------------------------------------------------------
     91// returns true if the jet definition involves an algorithm
     92// intended for use on a spherical geometry (e.g. e+e- algorithms,
     93// as opposed to most pp algorithms, which use a cylindrical,
     94// rapidity-phi geometry).
     95bool JetDefinition::is_spherical() const {
     96  if (jet_algorithm() == plugin_algorithm) {
     97    return plugin()->is_spherical();
     98  } else {
     99    return (jet_algorithm() == ee_kt_algorithm ||  // as of 2013-02-14, the two
     100            jet_algorithm() == ee_genkt_algorithm  // native spherical algorithms
     101            );
     102  }
     103}
     104
     105//----------------------------------------------------------------------
    108106string JetDefinition::description() const {
     107  ostringstream name;
     108 
     109  name << description_no_recombiner();
     110
     111  if ((jet_algorithm() == plugin_algorithm) || (jet_algorithm() == undefined_jet_algorithm)){
     112    return name.str();
     113  }
     114
     115  if (n_parameters_for_algorithm(jet_algorithm()) == 0)
     116    name << " with ";
     117  else
     118    name << " and ";
     119  name << recombiner()->description();
     120
     121  return name.str();
     122}
     123
     124//----------------------------------------------------------------------
     125string JetDefinition::description_no_recombiner() const {
     126 
    109127  ostringstream name;
    110128  if (jet_algorithm() == plugin_algorithm) {
    111129    return plugin()->description();
    112   } else if (jet_algorithm() == kt_algorithm) {
    113     name << "Longitudinally invariant kt algorithm with R = " << R();
    114     name << " and " << recombiner()->description();
    115   } else if (jet_algorithm() == cambridge_algorithm) {
    116     name << "Longitudinally invariant Cambridge/Aachen algorithm with R = "
    117          << R() ;
    118     name << " and " << recombiner()->description();
    119   } else if (jet_algorithm() == antikt_algorithm) {
    120     name << "Longitudinally invariant anti-kt algorithm with R = "
    121          << R() ;
    122     name << " and " << recombiner()->description();
    123   } else if (jet_algorithm() == genkt_algorithm) {
    124     name << "Longitudinally invariant generalised kt algorithm with R = "
    125          << R() << ", p = " << extra_param();
    126     name << " and " << recombiner()->description();
    127   } else if (jet_algorithm() == cambridge_for_passive_algorithm) {
    128     name << "Longitudinally invariant Cambridge/Aachen algorithm with R = "
    129          << R() << "and a special hack whereby particles with kt < "
    130          << extra_param() << "are treated as passive ghosts";
    131   } else if (jet_algorithm() == ee_kt_algorithm) {
    132     name << "e+e- kt (Durham) algorithm (NB: no R)";
    133     name << " with " << recombiner()->description();
    134   } else if (jet_algorithm() == ee_genkt_algorithm) {
    135     name << "e+e- generalised kt algorithm with R = "
    136          << R() << ", p = " << extra_param();
    137     name << " and " << recombiner()->description();
    138130  } else if (jet_algorithm() == undefined_jet_algorithm) {
    139     name << "uninitialised JetDefinition (jet_algorithm=undefined_jet_algorithm)" ;
    140   } else {
    141     throw Error("JetDefinition::description(): unrecognized jet_algorithm");
    142   }
     131    return "uninitialised JetDefinition (jet_algorithm=undefined_jet_algorithm)" ;
     132  }
     133
     134  name << algorithm_description(jet_algorithm());
     135  switch (n_parameters_for_algorithm(jet_algorithm())){
     136  case 0: name << " (NB: no R)"; break;
     137  case 1: name << " with R = " << R(); break; // the parameter is always R
     138  case 2:
     139    // the 1st parameter is always R
     140    name << " with R = " << R();
     141    // the 2nd depends on the algorithm
     142    if (jet_algorithm() == cambridge_for_passive_algorithm){
     143      name << "and a special hack whereby particles with kt < "
     144           << extra_param() << "are treated as passive ghosts";
     145    } else {
     146      name << ", p = " << extra_param();
     147    }
     148  };
     149
    143150  return name.str();
    144151}
    145152
    146 
     153//----------------------------------------------------------------------
     154string JetDefinition::algorithm_description(const JetAlgorithm jet_alg){
     155  ostringstream name;
     156  switch (jet_alg){
     157  case plugin_algorithm:                return "plugin algorithm";
     158  case kt_algorithm:                    return "Longitudinally invariant kt algorithm";
     159  case cambridge_algorithm:             return "Longitudinally invariant Cambridge/Aachen algorithm";
     160  case antikt_algorithm:                return "Longitudinally invariant anti-kt algorithm";
     161  case genkt_algorithm:                 return "Longitudinally invariant generalised kt algorithm";
     162  case cambridge_for_passive_algorithm: return "Longitudinally invariant Cambridge/Aachen algorithm";
     163  case ee_kt_algorithm:                 return "e+e- kt (Durham) algorithm (NB: no R)";
     164  case ee_genkt_algorithm:              return "e+e- generalised kt algorithm";
     165  case undefined_jet_algorithm:         return "undefined jet algorithm";
     166  default:
     167    throw Error("JetDefinition::algorithm_description(): unrecognized jet_algorithm");
     168  };
     169}
     170
     171//----------------------------------------------------------------------
     172unsigned int JetDefinition::n_parameters_for_algorithm(const JetAlgorithm jet_alg){
     173  switch (jet_alg) {
     174  case ee_kt_algorithm:    return 0;
     175  case genkt_algorithm:
     176  case ee_genkt_algorithm: return 2;
     177  default:                 return 1;
     178  };
     179}
     180
     181//----------------------------------------------------------------------
    147182void JetDefinition::set_recombination_scheme(
    148183                               RecombinationScheme recomb_scheme) {
     
    150185
    151186  // do not forget to delete the existing recombiner if needed
    152   if (_recombiner_shared()) _recombiner_shared.reset();
     187  if (_shared_recombiner()) _shared_recombiner.reset();
    153188
    154189  _recombiner = 0;
     190}
     191
     192void JetDefinition::set_recombiner(const JetDefinition &other_jet_def){
     193  // make sure the "invariants" of the other jet def are sensible
     194  assert(other_jet_def._recombiner ||
     195         other_jet_def.recombination_scheme() != external_scheme);
     196
     197  // first treat the situation where we're using the default recombiner
     198  if (other_jet_def._recombiner == 0){
     199    set_recombination_scheme(other_jet_def.recombination_scheme());
     200    return;
     201  }
     202
     203  // in other cases, copy the pointer to the recombiner
     204  _recombiner = other_jet_def._recombiner;
     205  // set the default recombiner appropriately
     206  _default_recombiner = DefaultRecombiner(external_scheme);
     207  // and set the _shared_recombiner to the same state
     208  // as in the other_jet_def, whatever that was
     209  _shared_recombiner.reset(other_jet_def._shared_recombiner);
     210
     211  // NB: it is tempting to go via set_recombiner and then to sort
     212  // out the shared part, but this would be dangerous in the
     213  // specific (rare?) case where other_jet_def is the same as this
     214  // it deletes_recombiner_when_unused. In that case the shared
     215  // pointer reset would delete the recombiner.
    155216}
    156217
     
    163224  if (other_jd.recombination_scheme() != scheme) return false;
    164225
    165   // if the scheme is "external", also check that they ahve the same
     226  // if the scheme is "external", also check that they have the same
    166227  // recombiner
    167228  return (scheme != external_scheme)
     
    169230}
    170231
    171 /// allows to let the JetDefinition handle the deletion of the
     232/// causes the JetDefinition to handle the deletion of the
    172233/// recombiner when it is no longer used
    173234void JetDefinition::delete_recombiner_when_unused(){
    174235  if (_recombiner == 0){
    175236    throw Error("tried to call JetDefinition::delete_recombiner_when_unused() for a JetDefinition without a user-defined recombination scheme");
    176   }
    177 
    178   _recombiner_shared.reset(_recombiner);
     237  } else if (_shared_recombiner.get()) {
     238    throw Error("Error in JetDefinition::delete_recombiner_when_unused: the recombiner is already scheduled for deletion when unused (or was already set as shared)");
     239  }
     240
     241  _shared_recombiner.reset(_recombiner);
    179242}
    180243
     
    207270  case BIpt2_scheme:
    208271    return "boost-invariant pt2 scheme recombination";
     272  case WTA_pt_scheme:
     273    return "pt-ordered Winner-Takes-All recombination";
     274  // Energy-ordering can lead to dangerous situations with particles at
     275  // rest. We instead implement the WTA_modp_scheme
     276  //
     277  //   case WTA_E_scheme:
     278  //     return "energy-ordered Winner-Takes-All recombination";
     279  case WTA_modp_scheme:
     280    return "|3-momentum|-ordered Winner-Takes-All recombination";
    209281  default:
    210282    ostringstream err;
     
    246318    weightb = pb.perp2();
    247319    break;
     320  case WTA_pt_scheme:{
     321    const PseudoJet & phard = (pa.pt2() >= pb.pt2()) ? pa : pb;
     322    /// keep y,phi and m from the hardest, sum pt
     323    pab.reset_PtYPhiM(pa.pt()+pb.pt(),
     324                      phard.rap(), phard.phi(), phard.m());
     325    return;}
     326  // Energy-ordering can lead to dangerous situations with particles at
     327  // rest. We instead implement the WTA_modp_scheme
     328  //
     329  //   case WTA_E_scheme:{
     330  //     const PseudoJet & phard = (pa.E() >= pb.E()) ? pa : pb;
     331  //     /// keep 3-momentum direction and mass from the hardest, sum energies
     332  //     ///
     333  //     /// If the particle with the largest energy is at rest, the sum
     334  //     /// remains at rest, implying that the mass of the sum is larger
     335  //     /// than the mass of pa.
     336  //     double Eab = pa.E() + pb.E();
     337  //     double scale = (phard.modp2()==0.0)
     338  //       ? 0.0
     339  //       : sqrt((Eab*Eab - phard.m2())/phard.modp2());
     340  //     pab.reset(phard.px()*scale, phard.py()*scale, phard.pz()*scale, Eab);
     341  //     return;}
     342  case WTA_modp_scheme:{
     343    // Note: we need to compute both a and b modp. And we need pthard
     344    // and its modp. If we want to avoid repeating the test and do
     345    // only 2 modp calculations, we'd have to duplicate the code (or
     346    // use a pair<const PJ&>). An alternative is to write modp_soft as
     347    // modp_ab-modp_hard but this could suffer from larger rounding
     348    // errors
     349    bool a_hardest = (pa.modp2() >= pb.modp2());
     350    const PseudoJet & phard = a_hardest ? pa : pb;
     351    const PseudoJet & psoft = a_hardest ? pb : pa;
     352    /// keep 3-momentum direction and mass from the hardest, sum modp
     353    ///
     354    /// If the hardest particle is at rest, the sum remains at rest
     355    /// (the energy of the sum is therefore the mass of pa)
     356    double modp_hard = phard.modp();
     357    double modp_ab = modp_hard + psoft.modp();
     358    if (phard.modp2()==0.0){
     359      pab.reset(0.0, 0.0, 0.0, phard.m());
     360    } else {
     361      double scale = modp_ab/modp_hard;
     362      pab.reset(phard.px()*scale, phard.py()*scale, phard.pz()*scale,
     363                sqrt(modp_ab*modp_ab + phard.m2()));
     364    }
     365    return;}
    248366  default:
    249367    ostringstream err;
     
    281399  case BIpt_scheme:
    282400  case BIpt2_scheme:
     401  case WTA_pt_scheme:
     402  //case WTA_E_scheme:
     403  case WTA_modp_scheme:
    283404    break;
    284405  case pt_scheme:
  • external/fastjet/JetDefinition.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: JetDefinition.hh 2687 2011-11-14 11:17:51Z soyez $
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1#ifndef __FASTJET_JETDEFINITION_HH__
     2#define __FASTJET_JETDEFINITION_HH__
     3
     4//FJSTARTHEADER
     5// $Id: JetDefinition.hh 3677 2014-09-09 22:45:25Z soyez $
     6//
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    58//
    69//----------------------------------------------------------------------
     
    1316//
    1417//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1620//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    1823//
    1924//  FastJet is distributed in the hope that it will be useful,
     
    2530//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2631//----------------------------------------------------------------------
    27 //ENDHEADER
    28 
    29 #ifndef __FASTJET_JETDEFINITION_HH__
    30 #define __FASTJET_JETDEFINITION_HH__
     32//FJENDHEADER
    3133
    3234#include<cassert>
     
    4749/// clustering events with kt and cambridge style algorithms.
    4850enum Strategy {
    49   /// fastest form about 500..10^4
     51  /// Like N2MHTLazy9 in a number of respects, but does not calculate
     52  /// ghost-ghost distances and so does not carry out ghost-ghost
     53  /// recombination.
     54  ///
     55  /// If you want active ghosted areas, then this is only suitable for
     56  /// use with the anti-kt algorithm (or genkt with negative p), and
     57  /// does not produce any pure ghost jets. If used with active areas
     58  /// with Kt or Cam algorithms it will actually produce a passive
     59  /// area.
     60  ///
     61  /// Particles are deemed to be ghosts if their pt is below a
     62  /// threshold (currently 1e-50, hard coded as ghost_limit in
     63  /// LazyTiling9SeparateGhosts).
     64  ///
     65  /// Currently for events with a couple of thousand normal particles
     66  /// and O(10k) ghosts, this can be quicker than N2MHTLazy9, which
     67  /// would otherwise be the best strategy.
     68  ///
     69  /// New in FJ3.1
     70  N2MHTLazy9AntiKtSeparateGhosts   = -10,
     71  /// only looks into a neighbouring tile for a particle's nearest
     72  /// neighbour (NN) if that particle's in-tile NN is further than the
     73  /// distance to the edge of the neighbouring tile. Uses tiles of
     74  /// size R and a 3x3 tile grid around the particle.
     75  /// New in FJ3.1
     76  N2MHTLazy9   = -7,
     77  /// Similar to N2MHTLazy9, but uses tiles of size R/2 and a 5x5 tile
     78  /// grid around the particle.
     79  /// New in FJ3.1
     80  N2MHTLazy25   = -6,
     81  /// Like to N2MHTLazy9 but uses slightly different optimizations,
     82  /// e.g. for calculations of distance to nearest tile; as of
     83  /// 2014-07-18 it is slightly slower and not recommended for
     84  /// production use. To considered deprecated.
     85  /// New in FJ3.1
     86  N2MHTLazy9Alt   = -5,
     87  /// faster that N2Tiled above about 500 particles; differs from it
     88  /// by retainig the di(closest j) distances in a MinHeap (sort of
     89  /// priority queue) rather than a simple vector.
    5090  N2MinHeapTiled   = -4,
    5191  /// fastest from about 50..500
     
    5797  /// worse even than the usual N^3 algorithms
    5898  N3Dumb      =  0,
    59   /// automatic selection of the best (based on N)
     99  /// automatic selection of the best (based on N), including
     100  /// the LazyTiled strategies that are new to FJ3.1
    60101  Best        =  1,
    61102  /// best of the NlnN variants -- best overall for N>10^4.
     
    79120  /// (Does not work for R>=2pi)
    80121  NlnNCam      = 12, // 2piMultD
     122  /// the automatic strategy choice that was being made in FJ 3.0
     123  /// (restricted to strategies that were present in FJ 3.0)
     124  BestFJ30     =  21,
    81125  /// the plugin has been used...
    82126  plugin_strategy = 999
     
    87131/// \enum JetAlgorithm
    88132/// the various families of jet-clustering algorithm
     133//
     134// [Remember to update the "is_spherical()" routine if any further
     135// spherical algorithms are added to the list below]
    89136enum JetAlgorithm {
    90137  /// the longitudinally invariant kt algorithm
     
    102149  /// where p = extra_param()
    103150  genkt_algorithm=3,
    104   /// a version of cambridge with a special distance measure for particles
    105   /// whose pt is < extra_param()
     151  /// a version of cambridge with a special distance measure for
     152  /// particles whose pt is < extra_param(); this is not usually
     153  /// intended for end users, but is instead automatically selected
     154  /// when requesting a passive Cambridge area.
    106155  cambridge_for_passive_algorithm=11,
    107156  /// a version of genkt with a special distance measure for particles
    108157  /// whose pt is < extra_param() [relevant for passive areas when p<=0]
     158  /// ***** NB: THERE IS CURRENTLY NO IMPLEMENTATION FOR THIS ALG *******
    109159  genkt_for_passive_algorithm=13,
    110160  //.................................................................
     
    131181
    132182//======================================================================
    133 /// the various recombination schemes
     183/// The various recombination schemes
     184///
     185/// Note that the schemes that recombine with non-linear weighting of
     186/// the directions (e.g. pt2, winner-takes-all) are collinear safe
     187/// only for algorithms with a suitable ordering of the
     188/// recombinations: orderings in which, for particles of comparable
     189/// energies, small-angle clusterings take place before large-angle
     190/// clusterings. This property is satisfied by all gen-kt algorithms.
     191///
    134192enum RecombinationScheme {
    135193  /// summing the 4-momenta
     
    153211  /// no preprocessing
    154212  BIpt2_scheme=6,
     213  /// pt-based Winner-Takes-All (WTA) recombination: the
     214  /// result of the recombination has the rapidity, azimuth and mass
     215  /// of the the PseudoJet with the larger pt, and a pt equal to the
     216  /// sum of the two pt's
     217  WTA_pt_scheme=7,
     218  /// mod-p-based Winner-Takes-All (WTA) recombination: the result of
     219  /// the recombination gets the 3-vector direction and mass of the
     220  /// PseudoJet with the larger |3-momentum| (modp), and a
     221  /// |3-momentum| equal to the scalar sum of the two |3-momenta|.
     222  WTA_modp_scheme=8,
     223  // Energy-ordering can lead to dangerous situations with particles at
     224  // rest. We instead implement the WTA_modp_scheme
     225  //
     226  // // energy-based Winner-Takes-All (WTA) recombination: the result of
     227  // // the recombination gets the 3-vector direction and mass of the
     228  // // PseudoJet with the larger energy, and an energy equal to the
     229  // // to the sum of the two energies
     230  // WTA_E_scheme=8,
    155231  /// for the user's external scheme
    156232  external_scheme = 99
     
    244320                const Recombiner * recombiner_in,
    245321                Strategy strategy_in = Best) {
    246     *this = JetDefinition(jet_algorithm_in, R_in, external_scheme, strategy_in);
     322    *this = JetDefinition(jet_algorithm_in, R_in, xtra_param_in, external_scheme, strategy_in);
    247323    _recombiner = recombiner_in;
    248     set_extra_param(xtra_param_in);
    249324  }
    250325
     
    284359                RecombinationScheme recomb_scheme_in = E_scheme,
    285360                int nparameters_in = 1);
     361
     362  /// cluster the supplied particles and returns a vector of resulting
     363  /// jets, sorted by pt (or energy in the case of spherical,
     364  /// i.e. e+e-, algorithms). This routine currently only makes
     365  /// sense for "inclusive" type algorithms.
     366  template <class L>
     367  std::vector<PseudoJet> operator()(const std::vector<L> & particles) const;
    286368 
    287369  /// R values larger than max_allowable_R are not allowed.
     
    297379
    298380  /// set the recombiner class to the one provided
     381  ///
     382  /// Note that in order to associate to a jet definition a recombiner
     383  /// from another jet definition, it is strongly recommended to use
     384  /// the set_recombiner(const JetDefinition &) method below. The
     385  /// latter correctly handles the situations where the jet definition
     386  /// owns the recombiner (i.e. where delete_recombiner_when_unused
     387  /// has been called). In such cases, using set_recombiner(const
     388  /// Recombiner *) may lead to memory corruption.
    299389  void set_recombiner(const Recombiner * recomb) {
    300     if (_recombiner_shared()) _recombiner_shared.reset(recomb);
     390    if (_shared_recombiner()) _shared_recombiner.reset(recomb);
    301391    _recombiner = recomb;
    302392    _default_recombiner = DefaultRecombiner(external_scheme);
    303393  }
    304394
     395  /// set the recombiner to be the same as the one of 'other_jet_def'
     396  ///
     397  /// Note that this is the recommended method to associate to a jet
     398  /// definition the recombiner from another jet definition. Compared
     399  /// to the set_recombiner(const Recombiner *) above, it correctly
     400  /// handles the case where the jet definition owns the recombiner
     401  /// (i.e. where delete_recombiner_when_unused has been called)
     402  void set_recombiner(const JetDefinition &other_jet_def);
     403
    305404  /// calling this tells the JetDefinition to handle the deletion of
    306   /// the recombiner when it is no longer used
     405  /// the recombiner when it is no longer used. (Should not be called
     406  /// if the recombiner was initialised from a JetDef whose recombiner
     407  /// was already scheduled to delete itself - memory handling will
     408  /// already be automatic across both JetDef's in that case).
    307409  void delete_recombiner_when_unused();
    308410
     
    310412  const Plugin * plugin() const {return _plugin;};
    311413
    312   /// allows to let the JetDefinition handle the deletion of the
     414  /// calling this causes the JetDefinition to handle the deletion of the
    313415  /// plugin when it is no longer used
    314416  void delete_plugin_when_unused();
     
    333435  void set_extra_param(double xtra_param) {_extra_param = xtra_param;}
    334436
    335   /// return a pointer to the currently defined recombiner.
     437  /// returns a pointer to the currently defined recombiner.
    336438  ///
    337439  /// Warning: the pointer may be to an internal recombiner (for
     
    347449
    348450  /// returns true if the current jet definitions shares the same
    349   /// recombiner as teh one passed as an argument
     451  /// recombiner as the one passed as an argument
    350452  bool has_same_recombiner(const JetDefinition &other_jd) const;
     453
     454  /// returns true if the jet definition involves an algorithm
     455  /// intended for use on a spherical geometry (e.g. e+e- algorithms,
     456  /// as opposed to most pp algorithms, which use a cylindrical,
     457  /// rapidity-phi geometry).
     458  bool is_spherical() const;
    351459
    352460  /// return a textual description of the current jet definition
    353461  std::string description() const;
    354462
     463  /// returns a description not including the recombiner information
     464  std::string description_no_recombiner() const;
     465
     466  /// a short textual description of the algorithm jet_alg
     467  static std::string algorithm_description(const JetAlgorithm jet_alg);
     468
     469  /// the number of parameters associated to a given jet algorithm
     470  static unsigned int n_parameters_for_algorithm(const JetAlgorithm jet_alg);
    355471
    356472public:
     
    462578    virtual bool exclusive_sequence_meaningful() const {return false;}
    463579
     580    /// returns true if the plugin implements an algorithm intended
     581    /// for use on a spherical geometry (e.g. e+e- algorithms, as
     582    /// opposed to most pp algorithms, which use a cylindrical,
     583    /// rapidity-phi geometry).
     584    virtual bool is_spherical() const {return false;}
     585
    464586    /// a destructor to be replaced if necessary in derived classes...
    465587    virtual ~Plugin() {};
     
    481603  DefaultRecombiner _default_recombiner;
    482604  const Recombiner * _recombiner;
    483   SharedPtr<const Recombiner> _recombiner_shared;
     605  SharedPtr<const Recombiner> _shared_recombiner;
    484606
    485607};
     
    516638
    517639
    518 
    519 
    520 
    521640FASTJET_END_NAMESPACE
    522641
     642// include ClusterSequence which includes the implementation of the
     643// templated JetDefinition::operator()(...) member
     644#include "fastjet/ClusterSequence.hh"
     645
     646
    523647#endif // __FASTJET_JETDEFINITION_HH__
  • external/fastjet/LimitedWarning.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: LimitedWarning.cc 3619 2014-08-13 14:17:19Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/LimitedWarning.hh"
     
    4042
    4143
    42 /// output a warning to ostr
    43 void LimitedWarning::warn(const std::string & warning) {
    44   warn(warning, _default_ostr);
    45 }
     44// /// output a warning to ostr
     45// void LimitedWarning::warn(const std::string & warning) {
     46//   warn(warning, _default_ostr);
     47// }
    4648
    47 void LimitedWarning::warn(const std::string & warning, std::ostream * ostr) {
     49void LimitedWarning::warn(const char * warning, std::ostream * ostr) {
    4850  if (_this_warning_summary == 0) {
    4951    // prepare the information for the summary
     
    5456    // prepare the warning within a string stream
    5557    ostringstream warnstr;
    56     warnstr << "WARNING: ";
     58    warnstr << "WARNING from FastJet: ";
    5759    warnstr << warning;
    5860    _n_warn_so_far++;
  • external/fastjet/LimitedWarning.hh

    rba7fc1e r37deb3b  
    22#define __FASTJET_LIMITEDWARNING_HH__
    33
    4 //STARTHEADER
    5 // $Id: LimitedWarning.hh 2577 2011-09-13 15:11:38Z salam $
     4//FJSTARTHEADER
     5// $Id: LimitedWarning.hh 3622 2014-08-13 14:45:45Z salam $
    66//
    7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234
     
    5052
    5153  /// constructor that provides a user-set max number of warnings
    52   LimitedWarning(int max_warn) : _max_warn(max_warn), _n_warn_so_far(0), _this_warning_summary(0) {}
     54  LimitedWarning(int max_warn_in) : _max_warn(max_warn_in), _n_warn_so_far(0), _this_warning_summary(0) {}
    5355
    5456  /// outputs a warning to standard error (or the user's default
    5557  /// warning stream if set)
    56   void warn(const std::string & warning);
     58  void warn(const char * warning) {warn(warning, _default_ostr);}
     59
     60  /// outputs a warning to standard error (or the user's default
     61  /// warning stream if set)
     62  void warn(const std::string & warning) {warn(warning.c_str(), _default_ostr);}
    5763
    5864  /// outputs a warning to the specified stream
    59   void warn(const std::string & warning, std::ostream * ostr);
     65  void warn(const char * warning, std::ostream * ostr);
     66
     67  /// outputs a warning to the specified stream
     68  void warn(const std::string & warning, std::ostream * ostr) {warn(warning.c_str(), ostr);}
    6069
    6170  /// sets the default output stream for all warnings (by default
     
    7079    _max_warn_default = max_warn;
    7180  }
     81
     82  /// the maximum number of warning messages that will be printed
     83  /// by this instance of the class
     84  int max_warn() const {return _max_warn;}
     85
     86  /// the number of times so far that a warning has been registered
     87  /// with this instance of the class.
     88  int n_warn_so_far() const {return _n_warn_so_far;}
    7289
    7390  /// returns a summary of all the warnings that came through the
  • external/fastjet/MinHeap.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: MinHeap.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/internal/MinHeap.hh"
     
    4345///
    4446///   . for _heap[i], the "parent" is to be found at (i-1)/2
    45 void MinHeap::_initialise(const std::vector<double> & values){
     47void MinHeap::initialise(const std::vector<double> & values){
    4648 
    4749  // fill the high-range of the heap with the largest possible value
  • external/fastjet/NNH.hh

    rba7fc1e r37deb3b  
    22#define __FASTJET_NNH_HH__
    33
    4 //STARTHEADER
    5 // $Id: NNH.hh 3203 2013-09-15 07:49:50Z salam $
    6 //
    7 // Copyright (c) 2009, Matteo Cacciari, Gavin Salam and Gregory Soyez
     4//FJSTARTHEADER
     5// $Id: NNH.hh 3433 2014-07-23 08:17:03Z salam $
     6//
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234#include<fastjet/ClusterSequence.hh>
     
    138140  class NNBJ; // forward declaration
    139141 
    140   /// establish the nearest neighbour for jet, and cross check constistency
     142  /// establish the nearest neighbour for jet, and cross check consistency
    141143  /// of distances for the other jets that are encountered. Assumes
    142144  /// jet not contained within begin...end
  • external/fastjet/PseudoJet.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: PseudoJet.cc 3652 2014-09-03 13:31:13Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
     
    176178// return the product, coeff * jet
    177179PseudoJet operator* (double coeff, const PseudoJet & jet) {
     180  // see the comment in operator*= about ensuring valid rap phi
     181  // before a multiplication to handle case of multiplication by
     182  // zero, while maintaining rapidity and phi
     183  jet._ensure_valid_rap_phi();
    178184  //return PseudoJet(coeff*jet.four_mom());
    179185  // the following code is hopefully more efficient
     
    198204/// multiply the jet's momentum by the coefficient
    199205void PseudoJet::operator*=(double coeff) {
     206  // operator*= aims to maintain the rapidity and azimuth
     207  // for the PseudoJet; if they have already been evaluated
     208  // this is fine, but if they haven't and coeff is sufficiently
     209  // small as to cause a zero or underflow result, then a subsequent
     210  // invocation of rap or phi will lead to a non-sensical result.
     211  // So, here, we preemptively ensure that rapidity and phi
     212  // are correctly cached
     213  _ensure_valid_rap_phi();
    200214  _px *= coeff;
    201215  _py *= coeff;
     
    261275
    262276//----------------------------------------------------------------------
    263 /// transform this jet (given in lab) into a jet in the rest
    264 /// frame of prest
     277/// transform this jet (given in the rest frame of prest) into a jet
     278/// in the lab frame
    265279//
    266280// NB: code adapted from that in herwig f77 (checked how it worked
     
    288302
    289303//----------------------------------------------------------------------
    290 /// transform this jet (given in the rest frame of prest) into a jet
    291 /// in the lab frame;
     304/// transform this jet (given in lab) into a jet in the rest
     305/// frame of prest 
    292306//
    293307// NB: code adapted from that in herwig f77 (checked how it worked
     
    587601// an Error is thrown if this PseudoJet has no currently valid
    588602// associated ClusterSequence
    589 std::vector<PseudoJet> PseudoJet::exclusive_subjets (const double & dcut) const {
     603std::vector<PseudoJet> PseudoJet::exclusive_subjets (const double dcut) const {
    590604  return validated_structure_ptr()->exclusive_subjets(*this, dcut);
    591605}
     
    598612// an Error is thrown if this PseudoJet has no currently valid
    599613// associated ClusterSequence
    600 int PseudoJet::n_exclusive_subjets(const double & dcut) const {
     614int PseudoJet::n_exclusive_subjets(const double dcut) const {
    601615  return validated_structure_ptr()->n_exclusive_subjets(*this, dcut);
    602616}
     
    847861PseudoJet join(const PseudoJet & j1, const PseudoJet & j2){
    848862  vector<PseudoJet> pieces;
     863  pieces.reserve(2);
    849864  pieces.push_back(j1);
    850865  pieces.push_back(j2);
     
    855870PseudoJet join(const PseudoJet & j1, const PseudoJet & j2, const PseudoJet & j3){
    856871  vector<PseudoJet> pieces;
     872  pieces.reserve(3);
    857873  pieces.push_back(j1);
    858874  pieces.push_back(j2);
     
    864880PseudoJet join(const PseudoJet & j1, const PseudoJet & j2, const PseudoJet & j3, const PseudoJet & j4){
    865881  vector<PseudoJet> pieces;
     882  pieces.reserve(4);
    866883  pieces.push_back(j1);
    867884  pieces.push_back(j2);
  • external/fastjet/PseudoJet.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: PseudoJet.hh 3111 2013-05-04 08:17:27Z salam $
     1//FJSTARTHEADER
     2// $Id: PseudoJet.hh 3566 2014-08-11 15:36:34Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
     
    571573  /// structure type
    572574  ///
    573   /// If there is no sructure associated, an Error is thrown.
     575  /// If there is no structure associated, an Error is thrown.
    574576  /// If the type is not met, a std::bad_cast error is thrown.
    575577  template<typename StructureType>
     
    664666  /// an Error is thrown if this PseudoJet has no currently valid
    665667  /// associated ClusterSequence
    666   std::vector<PseudoJet> exclusive_subjets (const double & dcut) const;
     668  std::vector<PseudoJet> exclusive_subjets (const double dcut) const;
    667669
    668670  /// return the size of exclusive_subjets(...); still n ln n with same
     
    672674  /// an Error is thrown if this PseudoJet has no currently valid
    673675  /// associated ClusterSequence
    674   int n_exclusive_subjets(const double & dcut) const;
     676  int n_exclusive_subjets(const double dcut) const;
    675677
    676678  /// return the list of subjets obtained by unclustering the supplied
     
    694696  std::vector<PseudoJet> exclusive_subjets_up_to (int nsub) const;
    695697
    696   /// return the dij that was present in the merging nsub+1 -> nsub
     698  /// Returns the dij that was present in the merging nsub+1 -> nsub
    697699  /// subjets inside this jet.
     700  ///
     701  /// Returns 0 if there were nsub or fewer constituents in the jet.
    698702  ///
    699703  /// an Error is thrown if this PseudoJet has no currently valid
     
    701705  double exclusive_subdmerge(int nsub) const;
    702706
    703   /// return the maximum dij that occurred in the whole event at the
     707  /// Returns the maximum dij that occurred in the whole event at the
    704708  /// stage that the nsub+1 -> nsub merge of subjets occurred inside
    705709  /// this jet.
     710  ///
     711  /// Returns 0 if there were nsub or fewer constituents in the jet.
    706712  ///
    707713  /// an Error is thrown if this PseudoJet has no currently valid
     
    802808  /// set cached rapidity and phi values
    803809  void _set_rap_phi() const;
     810
     811  // needed for operator* to have access to _ensure_valid_rap_phi()
     812  friend PseudoJet operator*(double, const PseudoJet &);
    804813};
    805814
     
    825834/// momentum components are equal to val (=0.0)
    826835bool operator==(const PseudoJet & jet, const double val);
     836inline bool operator==(const double val, const PseudoJet & jet) {return jet == val;}
    827837
    828838/// Can only be used with val=0 and tests whether at least one of the
    829839/// four momentum components is different from val (=0.0)
    830 inline bool operator!=(const PseudoJet & a, const double & val) {return !(a==val);}
     840inline bool operator!=(const PseudoJet & a, const double val)  {return !(a==val);}
     841inline bool operator!=( const double val, const PseudoJet & a) {return !(a==val);}
    831842
    832843inline double dot_product(const PseudoJet & a, const PseudoJet & b) {
     
    881892    _ref_values = reference_values;
    882893  };
    883   inline int operator() (const int & i1, const int & i2) const {
     894  inline int operator() (const int i1, const int i2) const {
    884895    return  (*_ref_values)[i1] < (*_ref_values)[i2];
    885896  };
  • external/fastjet/PseudoJetStructureBase.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: PseudoJetStructureBase.cc 3433 2014-07-23 08:17:03Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
  • external/fastjet/PseudoJetStructureBase.hh

    rba7fc1e r37deb3b  
    22#define __FASTJET_PSEUDOJET_STRUCTURE_BASE_HH__
    33
    4 //STARTHEADER
    5 // $Id: PseudoJetStructureBase.hh 3071 2013-04-01 12:52:46Z cacciari $
    6 //
    7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4//FJSTARTHEADER
     5// $Id: PseudoJetStructureBase.hh 3433 2014-07-23 08:17:03Z salam $
     6//
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234
     
    156158  ///
    157159  /// By default, throws an Error
     160  ///
     161  /// Note: in a future major release of FastJet (4 or higher),
     162  /// "const double & dcut" may be replaced with "const double dcut",
     163  /// requiring a modification of derived classes that overload
     164  /// this function.
    158165  virtual std::vector<PseudoJet> exclusive_subjets(const PseudoJet &reference, const double & dcut) const;
    159166
     
    163170  ///
    164171  /// By default, throws an Error
     172  ///
     173  /// Note: in a future major release of FastJet (4 or higher),
     174  /// "const double & dcut" may be replaced with "const double dcut",
     175  /// requiring a modification of derived classes that overload
     176  /// this function.
    165177  virtual int n_exclusive_subjets(const PseudoJet &reference, const double & dcut) const;
    166178
  • external/fastjet/RangeDefinition.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: RangeDefinition.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/RangeDefinition.hh"
  • external/fastjet/RangeDefinition.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: RangeDefinition.hh 2577 2011-09-13 15:11:38Z salam $
     1//FJSTARTHEADER
     2// $Id: RangeDefinition.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __FASTJET_RANGEDEFINITION_HH__
  • external/fastjet/Selector.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: Selector.cc 3504 2014-08-01 06:07:54Z soyez $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
     
    9597}
    9698
     99//----------------------------------------------------------------------
     100// sum the momenta of the jets that pass the cuts
     101PseudoJet Selector::sum(const std::vector<PseudoJet> & jets) const {
     102  PseudoJet this_sum(0,0,0,0);
     103  const SelectorWorker * worker_local = validated_worker();
     104 
     105  // separate strategies according to whether the worker applies jet by jet
     106  if (worker_local->applies_jet_by_jet()) {
     107    for (unsigned i = 0; i < jets.size(); i++) {
     108      if (worker_local->pass(jets[i])) this_sum += jets[i];
     109    }
     110  } else {
     111    std::vector<const PseudoJet *> jetptrs(jets.size());
     112    for (unsigned i = 0; i < jets.size(); i++) {
     113      jetptrs[i] = & jets[i];
     114    }
     115    worker_local->terminator(jetptrs);
     116    for (unsigned i = 0; i < jetptrs.size(); i++) {
     117      if (jetptrs[i]) this_sum += jets[i];
     118    }
     119  }
     120
     121  return this_sum;
     122}
     123
     124//----------------------------------------------------------------------
     125// sum the (scalar) pt of the jets that pass the cuts
     126double Selector::scalar_pt_sum(const std::vector<PseudoJet> & jets) const {
     127  double this_sum = 0.0;
     128  const SelectorWorker * worker_local = validated_worker();
     129 
     130  // separate strategies according to whether the worker applies jet by jet
     131  if (worker_local->applies_jet_by_jet()) {
     132    for (unsigned i = 0; i < jets.size(); i++) {
     133      if (worker_local->pass(jets[i])) this_sum += jets[i].pt();
     134    }
     135  } else {
     136    std::vector<const PseudoJet *> jetptrs(jets.size());
     137    for (unsigned i = 0; i < jets.size(); i++) {
     138      jetptrs[i] = & jets[i];
     139    }
     140    worker_local->terminator(jetptrs);
     141    for (unsigned i = 0; i < jetptrs.size(); i++) {
     142      if (jetptrs[i]) this_sum += jets[i].pt();
     143    }
     144  }
     145
     146  return this_sum;
     147}
     148
    97149
    98150//----------------------------------------------------------------------
     
    10551107class SW_Circle : public SW_WithReference {
    10561108public:
    1057   SW_Circle(const double &radius) : _radius2(radius*radius) {}
     1109  SW_Circle(const double radius) : _radius2(radius*radius) {}
    10581110
    10591111  /// return a copy of the current object
     
    11001152
    11011153// select on objets within a distance 'radius' of a variable location
    1102 Selector SelectorCircle(const double & radius) {
     1154Selector SelectorCircle(const double radius) {
    11031155  return Selector(new SW_Circle(radius));
    11041156}
     
    11101162class SW_Doughnut : public SW_WithReference {
    11111163public:
    1112   SW_Doughnut(const double &radius_in, const double &radius_out)
     1164  SW_Doughnut(const double radius_in, const double radius_out)
    11131165    : _radius_in2(radius_in*radius_in), _radius_out2(radius_out*radius_out) {}
    11141166
     
    11591211
    11601212// select on objets with distance from the centre is between 'radius_in' and 'radius_out'
    1161 Selector SelectorDoughnut(const double & radius_in, const double & radius_out) {
     1213Selector SelectorDoughnut(const double radius_in, const double radius_out) {
    11621214  return Selector(new SW_Doughnut(radius_in, radius_out));
    11631215}
     
    11681220class SW_Strip : public SW_WithReference {
    11691221public:
    1170   SW_Strip(const double &delta) : _delta(delta) {}
     1222  SW_Strip(const double delta) : _delta(delta) {}
    11711223
    11721224  /// return a copy of the current object
     
    12131265
    12141266// select on objets within a distance 'radius' of a variable location
    1215 Selector SelectorStrip(const double & half_width) {
     1267Selector SelectorStrip(const double half_width) {
    12161268  return Selector(new SW_Strip(half_width));
    12171269}
     
    12241276class SW_Rectangle : public SW_WithReference {
    12251277public:
    1226   SW_Rectangle(const double &delta_rap, const double &delta_phi)
     1278  SW_Rectangle(const double delta_rap, const double delta_phi)
    12271279    : _delta_rap(delta_rap),  _delta_phi(delta_phi) {}
    12281280
     
    12701322
    12711323// select on objets within a distance 'radius' of a variable location
    1272 Selector SelectorRectangle(const double & half_rap_width, const double & half_phi_width) {
     1324Selector SelectorRectangle(const double half_rap_width, const double half_phi_width) {
    12731325  return Selector(new SW_Rectangle(half_rap_width, half_phi_width));
    12741326}
  • external/fastjet/Selector.hh

    rba7fc1e r37deb3b  
    22#define __FASTJET_SELECTOR_HH__
    33
    4 //STARTHEADER
    5 // $Id: Selector.hh 3203 2013-09-15 07:49:50Z salam $
    6 //
    7 // Copyright (c) 2009-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4//FJSTARTHEADER
     5// $Id: Selector.hh 3711 2014-09-29 13:54:51Z salam $
     6//
     7// Copyright (c) 2009-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234#include "fastjet/PseudoJet.hh"
     
    6769  //----------------------------------------------------------
    6870
    69   /// returns true if a given object passes the selection criterion.
    70   /// This has to be overloaded by derived workers
     71  /// returns true if a given object passes the selection criterion,
     72  /// and is the main function that needs to be overloaded by derived
     73  /// workers.
     74  ///
     75  /// NB: this function is used only if applies_jet_by_jet() returns
     76  /// true. If it does not, then derived classes are expected to
     77  /// (re)implement the terminator function()
    7178  virtual bool pass(const PseudoJet & jet) const = 0;
    7279
    7380  /// For each jet that does not pass the cuts, this routine sets the
    74   /// pointer to 0. 
    75   ///
    76   /// It does not assume that the PseudoJet* passed as argumetn are not NULL
     81  /// pointer to 0.
     82  ///
     83  /// It does not assume that the PseudoJet* passed as argument are not NULL
    7784  virtual void terminator(std::vector<const PseudoJet *> & jets) const {
    7885    for (unsigned i = 0; i < jets.size(); i++) {
     
    133140    throw Error("this selector has no computable area");
    134141  }
     142
    135143};
    136144
     
    151159  Selector(SelectorWorker * worker_in) {_worker.reset(worker_in);}
    152160
    153 
    154161#ifndef __FJCORE__
    155162  /// ctor from a RangeDefinition
     
    186193  /// passes and then evaluating the size of the vector
    187194  unsigned int count(const std::vector<PseudoJet> & jets) const;
     195
     196  /// Return the 4-vector sum of the objects that pass the selection.
     197  ///
     198  /// This will often be more efficient that getting the vector of objects that
     199  /// passes and then evaluating the size of the vector
     200  PseudoJet sum(const std::vector<PseudoJet> & jets) const;
     201
     202  /// Return the scalar pt sum of the objects that pass the selection.
     203  ///
     204  /// This will often be more efficient that getting the vector of objects that
     205  /// passes and then evaluating the size of the vector
     206  double scalar_pt_sum(const std::vector<PseudoJet> & jets) const;
    188207
    189208  /// sift the input jets into two vectors -- those that pass the selector
     
    286305  }
    287306
    288   /// class that gets throw when a Selector is applied despite it not
     307  /// class that gets thrown when a Selector is applied despite it not
    289308  /// having a valid underlying worker.
    290309  class InvalidWorker : public Error {
     
    293312  };
    294313
    295   /// class that gets throw when a Selector is applied despite it not
    296   /// having a valid underlying worker.
     314  /// class that gets thrown when the area is requested from a Selector for which
     315  /// the area is not meaningful
    297316  class InvalidArea : public Error {
    298317  public:
     
    433452/// select objets within a distance 'radius' from the location of the
    434453/// reference jet, set by Selector::set_reference(...)
    435 Selector SelectorCircle(const double & radius);
     454Selector SelectorCircle(const double radius);
    436455
    437456/// select objets with distance from the reference jet is between 'radius_in'
    438457/// and 'radius_out'; the reference jet is set by Selector::set_reference(...)
    439 Selector SelectorDoughnut(const double & radius_in, const double & radius_out);
     458Selector SelectorDoughnut(const double radius_in, const double radius_out);
    440459
    441460/// select objets within a rapidity distance 'half_width' from the
    442461/// location of the reference jet, set by Selector::set_reference(...)
    443 Selector SelectorStrip(const double & half_width);
     462Selector SelectorStrip(const double half_width);
    444463
    445464/// select objets within rapidity distance 'half_rap_width' from the
    446465/// reference jet and azimuthal-angle distance within 'half_phi_width'; the
    447466/// reference jet is set by Selector::set_reference(...)
    448 Selector SelectorRectangle(const double & half_rap_width, const double & half_phi_width);
     467Selector SelectorRectangle(const double half_rap_width, const double half_phi_width);
    449468
    450469
  • external/fastjet/SharedPtr.hh

    rba7fc1e r37deb3b  
    22#define __FASTJET_SHARED_PTR_HH__
    33
    4 //STARTHEADER
    5 // $Id: SharedPtr.hh 3129 2013-06-05 08:48:36Z salam $
    6 //
    7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4//FJSTARTHEADER
     5// $Id: SharedPtr.hh 3433 2014-07-23 08:17:03Z salam $
     6//
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234#include "fastjet/internal/base.hh"
  • external/fastjet/VERSION

    rba7fc1e r37deb3b  
    1 3.0.6
     13.1.0
  • external/fastjet/Voronoi.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: Voronoi.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 1994 by AT&T Bell Laboratories (see below)
    5 //
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    65//
    76//----------------------------------------------------------------------
    8 // This file is included as part of FastJet but was mostly written by
    9 // S. Fortune in C, put into C++ with memory management by S
    10 // O'Sullivan, and with further interface and memory management
    11 // modifications by Gregory Soyez.
     7// This file is part of FastJet.
    128//
    13 // Permission to use, copy, modify, and distribute this software for
    14 // any purpose without fee is hereby granted, provided that this
    15 // entire notice is included in all copies of any software which is or
    16 // includes a copy or modification of this software and in all copies
    17 // of the supporting documentation for such software. THIS SOFTWARE IS
    18 // BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY.
    19 // IN PARTICULAR, NEITHER THE AUTHORS NOR AT&T MAKE ANY REPRESENTATION
    20 // OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS
    21 // SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
     9//  FastJet is free software; you can redistribute it and/or modify
     10//  it under the terms of the GNU General Public License as published by
     11//  the Free Software Foundation; either version 2 of the License, or
     12//  (at your option) any later version.
    2213//
     14//  The algorithms that underlie FastJet have required considerable
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
     17//  FastJet as part of work towards a scientific publication, please
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
     20//
     21//  FastJet is distributed in the hope that it will be useful,
     22//  but WITHOUT ANY WARRANTY; without even the implied warranty of
     23//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     24//  GNU General Public License for more details.
     25//
     26//  You should have received a copy of the GNU General Public License
     27//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2328//----------------------------------------------------------------------
    24 //ENDHEADER
     29//FJENDHEADER
    2530
    2631
  • external/fastjet/WrappedStructure.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: WrappedStructure.hh 2577 2011-09-13 15:11:38Z salam $
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: WrappedStructure.hh 3433 2014-07-23 08:17:03Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
  • external/fastjet/config_auto.h

    rba7fc1e r37deb3b  
    6464#endif
    6565
     66/* defined if demangling is enabled at configure time and is supported through
     67   the GNU C++ ABI */
     68/* #undef HAVE_DEMANGLING_SUPPORT */
     69
    6670/* Define to 1 if you have the <dlfcn.h> header file. */
    6771#ifndef FASTJET_HAVE_DLFCN_H
     
    147151/* Define to the full name and version of this package. */
    148152#ifndef FASTJET_PACKAGE_STRING
    149 #define FASTJET_PACKAGE_STRING  "FastJet 3.0.6"
     153#define FASTJET_PACKAGE_STRING  "FastJet 3.1.0"
    150154#endif
    151155
     
    157161/* Define to the version of this package. */
    158162#ifndef FASTJET_PACKAGE_VERSION
    159 #define FASTJET_PACKAGE_VERSION  "3.0.6"
     163#define FASTJET_PACKAGE_VERSION  "3.1.0"
    160164#endif
    161165
     
    167171/* Version number of package */
    168172#ifndef FASTJET_VERSION
    169 #define FASTJET_VERSION  "3.0.6"
    170 #endif
     173#define FASTJET_VERSION  "3.1.0"
     174#endif
     175
     176/* Major version of this package */
     177#ifndef FASTJET_VERSION_MAJOR
     178#define FASTJET_VERSION_MAJOR  3
     179#endif
     180
     181/* Minor version of this package */
     182#ifndef FASTJET_VERSION_MINOR
     183#define FASTJET_VERSION_MINOR  1
     184#endif
     185
     186/* Version of the package under the form XYYZZ (instead of X.Y.Z) */
     187#ifndef FASTJET_VERSION_NUMBER
     188#define FASTJET_VERSION_NUMBER  30100
     189#endif
     190
     191/* Patch version of this package */
     192#ifndef FASTJET_VERSION_PATCHLEVEL
     193#define FASTJET_VERSION_PATCHLEVEL  0
     194#endif
     195
     196/* Pre-release version of this package */
     197/* #undef VERSION_PRERELEASE */
    171198 
    172199/* once: _INCLUDE_FASTJET_CONFIG_AUTO_H */
  • external/fastjet/config_raw.h

    rba7fc1e r37deb3b  
    3737/* The TrackJet plugin is enabled */
    3838#define ENABLE_PLUGIN_TRACKJET /**/
     39
     40/* defined if demangling is enabled at configure time and is supported through
     41   the GNU C++ ABI */
     42/* #undef HAVE_DEMANGLING_SUPPORT */
    3943
    4044/* Define to 1 if you have the <dlfcn.h> header file. */
     
    8892
    8993/* Define to the full name and version of this package. */
    90 #define PACKAGE_STRING "FastJet 3.0.6"
     94#define PACKAGE_STRING "FastJet 3.1.0"
    9195
    9296/* Define to the one symbol short name of this package. */
     
    9498
    9599/* Define to the version of this package. */
    96 #define PACKAGE_VERSION "3.0.6"
     100#define PACKAGE_VERSION "3.1.0"
    97101
    98102/* Define to 1 if you have the ANSI C header files. */
     
    100104
    101105/* Version number of package */
    102 #define VERSION "3.0.6"
     106#define VERSION "3.1.0"
     107
     108/* Major version of this package */
     109#define VERSION_MAJOR 3
     110
     111/* Minor version of this package */
     112#define VERSION_MINOR 1
     113
     114/* Version of the package under the form XYYZZ (instead of X.Y.Z) */
     115#define VERSION_NUMBER 30100
     116
     117/* Patch version of this package */
     118#define VERSION_PATCHLEVEL 0
     119
     120/* Pre-release version of this package */
     121/* #undef VERSION_PRERELEASE */
  • external/fastjet/config_win.h

    rba7fc1e r37deb3b  
    1 #define FASTJET_PACKAGE_STRING  "FastJet 3.0.6"
    2 #define FASTJET_PACKAGE_VERSION  "3.0.6"
     1#define FASTJET_PACKAGE_STRING  "FastJet 3.1.0"
     2#define FASTJET_PACKAGE_VERSION  "3.1.0"
     3#define FASTJET_VERSION  "3.1.0"
     4#define FASTJET_VERSION_MAJOR       3
     5#define FASTJET_VERSION_MINOR       1
     6#define FASTJET_VERSION_PATCHLEVEL  0
     7#define FASTJET_VERSION_NUMBER      30100
    38
    49/* The ATLASCone plugin is disabled by default*/
  • external/fastjet/contribs/Nsubjettiness/AUTHORS

    rba7fc1e r37deb3b  
    1818   JHEP 1202:093 (2012), arXiv:1108.2701.
    1919
     20New in v2.0 is the winner-take-all axis, described in:
     21
     22   Jet Shapes with the Broadening Axis.
     23   Andrew J. Larkoski, Duff Neill, and Jesse Thaler.
     24   JHEP 1404:017 (2014), arXiv:1401.2158.
     25
     26as well as in unpublished work by Gavin Salam.
     27
    2028----------------------------------------------------------------------
  • external/fastjet/contribs/Nsubjettiness/AxesFinder.cc

    rba7fc1e r37deb3b  
    55//  Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason
    66//
     7//  $Id: AxesFinder.cc 670 2014-06-06 01:24:42Z jthaler $
    78//----------------------------------------------------------------------
    89// This file is part of FastJet contrib.
     
    3738template <int N>
    3839std::vector<LightLikeAxis> AxesFinderFromOnePassMinimization::UpdateAxesFast(const std::vector <LightLikeAxis> & old_axes,
    39                                   const std::vector <fastjet::PseudoJet> & inputJets) {
     40                                  const std::vector <fastjet::PseudoJet> & inputJets) const {
    4041   assert(old_axes.size() == N);
    4142   
     
    4546   for (int n = 0; n < N; ++n) {
    4647      new_axes[n].reset(0.0,0.0,0.0,0.0);
    47 #ifdef FASTJET2
    48       new_jets[n].reset(0.0,0.0,0.0,0.0);
    49 #else
    50       // use cheaper reset if available
    5148      new_jets[n].reset_momentum(0.0,0.0,0.0,0.0);
    52 #endif
    5349   }
    5450
     
    135131// (This is just a wrapper for the templated version above.)
    136132std::vector<LightLikeAxis> AxesFinderFromOnePassMinimization::UpdateAxes(const std::vector <LightLikeAxis> & old_axes,
    137                                       const std::vector <fastjet::PseudoJet> & inputJets) {
     133                                      const std::vector <fastjet::PseudoJet> & inputJets) const {
    138134   int N = old_axes.size();
    139135   switch (N) {
     
    166162// uses minimization of N-jettiness to continually update axes until convergence.
    167163// The function returns the axes found at the (local) minimum
    168 std::vector<fastjet::PseudoJet> AxesFinderFromOnePassMinimization::getBetterAxes(int n_jets, const std::vector <fastjet::PseudoJet> & inputJets, const std::vector<fastjet::PseudoJet>& seedAxes) {
     164std::vector<fastjet::PseudoJet> AxesFinderFromOnePassMinimization::getAxes(int n_jets, const std::vector <fastjet::PseudoJet> & inputJets, const std::vector<fastjet::PseudoJet>& seedAxes) const {
    169165         
    170166   // convert from PseudoJets to LightLikeAxes
     
    211207}
    212208
    213 PseudoJet AxesFinderFromKmeansMinimization::jiggle(const PseudoJet& axis) {
     209PseudoJet AxesFinderFromKmeansMinimization::jiggle(const PseudoJet& axis) const {
    214210   double phi_noise = ((double)rand()/(double)RAND_MAX) * _noise_range * 2.0 - _noise_range;
    215211   double rap_noise = ((double)rand()/(double)RAND_MAX) * _noise_range * 2.0 - _noise_range;
     
    226222   
    227223// Repeatedly calls the one pass finder to try to find global minimum
    228 std::vector<fastjet::PseudoJet> AxesFinderFromKmeansMinimization::getBetterAxes(int n_jets, const std::vector <fastjet::PseudoJet> & inputJets, const std::vector<fastjet::PseudoJet>& seedAxes) {
     224std::vector<fastjet::PseudoJet> AxesFinderFromKmeansMinimization::getAxes(int n_jets, const std::vector <fastjet::PseudoJet> & inputJets, const std::vector<fastjet::PseudoJet>& seedAxes) const {
    229225   
    230226   // first iteration
     
    256252// It continually updates until it reaches convergence or it reaches the maximum number of attempts.
    257253// This is essentially the same as a stable cone finder.
    258 std::vector<fastjet::PseudoJet> AxesFinderFromGeometricMinimization::getBetterAxes(int n_jets, const std::vector <fastjet::PseudoJet> & particles, const std::vector<fastjet::PseudoJet>& currentAxes) {
     254std::vector<fastjet::PseudoJet> AxesFinderFromGeometricMinimization::getAxes(int /*n_jets*/, const std::vector <fastjet::PseudoJet> & particles, const std::vector<fastjet::PseudoJet>& currentAxes) const {
    259255
    260256   std::vector<fastjet::PseudoJet> seedAxes = currentAxes;
    261    double seedTau = _function->tau(particles, seedAxes);
     257   double seedTau = _function.tau(particles, seedAxes);
    262258   
    263259   for (int i = 0; i < _nAttempts; i++) {
     
    270266         // start from unclustered beam measure
    271267         int minJ = -1;
    272          double minDist = _function->beam_distance_squared(particles[i]);
     268         double minDist = _function.beam_distance_squared(particles[i]);
    273269         
    274270         // which axis am I closest to?
    275271         for (unsigned int j = 0; j < seedAxes.size(); j++) {
    276             double tempDist = _function->jet_distance_squared(particles[i],seedAxes[j]);
     272            double tempDist = _function.jet_distance_squared(particles[i],seedAxes[j]);
    277273            if (tempDist < minDist) {
    278274               minDist = tempDist;
     
    287283      // calculate tau on new axes
    288284      seedAxes = newAxes;
    289       double tempTau = _function->tau(particles, newAxes);
     285      double tempTau = _function.tau(particles, newAxes);
    290286     
    291287      // close enough to stop?
  • external/fastjet/contribs/Nsubjettiness/AxesFinder.hh

    rba7fc1e r37deb3b  
    55//  Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason
    66//
     7//  $Id: AxesFinder.hh 678 2014-06-12 20:43:03Z jthaler $
    78//----------------------------------------------------------------------
    89// This file is part of FastJet contrib.
     
    5354class AxesFinder {
    5455   
    55 protected:
    56    AxesFinder* _startingFinder; // storing a possible starting finder if needed
    57    std::vector<fastjet::PseudoJet> _seedAxes;
    58    
    59    AxesFinder(AxesFinder* startingFinder = NULL) : _startingFinder(startingFinder) {}
    60    
    61 public:
    62    virtual ~AxesFinder(){
    63       if (_startingFinder) delete _startingFinder;  //TODO: Convert to smart pointers to avoid this.
    64    }
    65    
    66    // Allow setting of seedAxes from a starting finder
    67    std::vector<fastjet::PseudoJet> getAxes(int n_jets, const std::vector<fastjet::PseudoJet> & inputs, const std::vector<fastjet::PseudoJet>& currentAxes) {
    68       if (_startingFinder) {
    69          _seedAxes = _startingFinder->getAxes(n_jets,inputs,currentAxes);
    70          return getBetterAxes(n_jets,inputs,_seedAxes);
    71       } else {
    72          _seedAxes = getBetterAxes(n_jets,inputs,currentAxes);
    73          return _seedAxes;
    74       }
    75    }
    76    
    77    // say what the current seed axes are
    78    std::vector<fastjet::PseudoJet> seedAxes() const {
    79       return _seedAxes;
    80    }
    81    
    82    // This function should be overloaded, and updates the seedAxes
    83    virtual std::vector<fastjet::PseudoJet> getBetterAxes(int n_jets, const std::vector<fastjet::PseudoJet> & inputs, const std::vector<fastjet::PseudoJet>& seedAxes) = 0;
    84    
    85 };
    86 
     56public:
     57   
     58   // This function should be overloaded, and updates the seedAxes to return new axes
     59   virtual std::vector<fastjet::PseudoJet> getAxes(int n_jets,
     60                                                   const std::vector<fastjet::PseudoJet>& inputs,
     61                                                   const std::vector<fastjet::PseudoJet>& seedAxes) const = 0;
     62   // convenient shorthand for squaring
     63   static inline double sq(double x) {return x*x;}
     64
     65   //virtual destructor
     66   virtual ~AxesFinder(){}
     67   
     68};
     69
     70   
    8771//------------------------------------------------------------------------
    8872/// \class AxesFinderFromExclusiveJetDefinition
     
    9074// with different jet algorithms.
    9175class AxesFinderFromExclusiveJetDefinition : public AxesFinder {
    92 
    93    private:
    94       fastjet::JetDefinition _def;
    95    
    96    public:
    97       AxesFinderFromExclusiveJetDefinition(fastjet::JetDefinition def) : _def(def) {}
    98      
    99       virtual std::vector<fastjet::PseudoJet> getBetterAxes(int n_jets, const std::vector <fastjet::PseudoJet> & inputs, const std::vector<fastjet::PseudoJet>& currentAxes) {
    100          fastjet::ClusterSequence jet_clust_seq(inputs, _def);
    101          return jet_clust_seq.exclusive_jets(n_jets);
    102       }
     76   
     77public:
     78   AxesFinderFromExclusiveJetDefinition(fastjet::JetDefinition def)
     79   : _def(def) {}
     80   
     81   virtual std::vector<fastjet::PseudoJet> getAxes(int n_jets,
     82                                                   const std::vector <fastjet::PseudoJet> & inputs,
     83                                                   const std::vector<fastjet::PseudoJet>& /*seedAxes*/) const {
     84      fastjet::ClusterSequence jet_clust_seq(inputs, _def);
     85      return jet_clust_seq.exclusive_jets(n_jets);
     86   }
     87   
     88private:
     89   fastjet::JetDefinition _def;
     90
    10391};
    10492
     
    10896// winner take all recombination scheme.
    10997class AxesFinderFromWTA_KT : public AxesFinderFromExclusiveJetDefinition {
    110    private:
    111       const WinnerTakeAllRecombiner *recomb;
    112    public:
    113       AxesFinderFromWTA_KT() : AxesFinderFromExclusiveJetDefinition(
    114          fastjet::JetDefinition(fastjet::kt_algorithm,
    115          fastjet::JetDefinition::max_allowable_R, //maximum jet radius constant
    116          recomb = new WinnerTakeAllRecombiner(),
    117          fastjet::Best)) {}
    118       ~AxesFinderFromWTA_KT() {delete recomb;}
    119    };
     98
     99public:
     100   AxesFinderFromWTA_KT()
     101   : AxesFinderFromExclusiveJetDefinition(
     102      fastjet::JetDefinition(fastjet::kt_algorithm,
     103      fastjet::JetDefinition::max_allowable_R, //maximum jet radius constant
     104      &_recomb,
     105      fastjet::Best)) {}
     106   
     107private:
     108   const WinnerTakeAllRecombiner _recomb;
     109
     110};
    120111   
    121112//------------------------------------------------------------------------
     
    124115// winner take all recombination scheme.
    125116class AxesFinderFromWTA_CA : public AxesFinderFromExclusiveJetDefinition {
    126    private:
    127       const WinnerTakeAllRecombiner *recomb;
    128    public:
    129       AxesFinderFromWTA_CA() : AxesFinderFromExclusiveJetDefinition(
    130          fastjet::JetDefinition(fastjet::cambridge_algorithm,
    131          fastjet::JetDefinition::max_allowable_R, //maximum jet radius constant
    132          recomb = new WinnerTakeAllRecombiner(),
    133          fastjet::Best)) {}
    134       ~AxesFinderFromWTA_CA() {delete recomb;}
    135 };
    136 
    137 //  The following classes are for testing, and are commented out for initial release
    138 //
    139 ////------------------------------------------------------------------------
    140 ///// \class AxesFinderFromWTA2_KT
    141 //// This class finds axes by finding the exlusive jets after clustering according to a kT algorithm and a
    142 //// winner take all recombination scheme with alpha = 2.
    143 //class AxesFinderFromWTA2_KT : public AxesFinderFromExclusiveJetDefinition {
    144 //   private:
    145 //      const WinnerTakeAllRecombiner *recomb;
    146 //   public:
    147 //      AxesFinderFromWTA2_KT() : AxesFinderFromExclusiveJetDefinition(
    148 //         fastjet::JetDefinition(fastjet::kt_algorithm,
    149 //         fastjet::JetDefinition::max_allowable_R, //maximum jet radius constant
    150 //         recomb = new WinnerTakeAllRecombiner(2), // uses alpha = 2 here
    151 //         fastjet::Best)) {}
    152 //      ~AxesFinderFromWTA2_KT() {delete recomb;}
    153 //   };
    154 //   
    155 ////------------------------------------------------------------------------
    156 ///// \class AxesFinderFromWTA2_CA
    157 //// This class finds axes by finding the exlusive jets after clustering according to a CA algorithm and a
    158 //// winner take all recombination scheme with alpha = 2.
    159 //class AxesFinderFromWTA2_CA : public AxesFinderFromExclusiveJetDefinition {
    160 //   private:
    161 //      const WinnerTakeAllRecombiner *recomb;
    162 //   public:
    163 //      AxesFinderFromWTA2_CA() : AxesFinderFromExclusiveJetDefinition(
    164 //         fastjet::JetDefinition(fastjet::cambridge_algorithm,
    165 //         fastjet::JetDefinition::max_allowable_R, //maximum jet radius constant
    166 //         recomb = new WinnerTakeAllRecombiner(2), //uses alpha = 2 here
    167 //         fastjet::Best)) {}
    168 //      ~AxesFinderFromWTA2_CA() {delete recomb;}
    169 //};
     117public:
     118   AxesFinderFromWTA_CA()
     119   : AxesFinderFromExclusiveJetDefinition(
     120      fastjet::JetDefinition(fastjet::cambridge_algorithm,
     121      fastjet::JetDefinition::max_allowable_R, //maximum jet radius constant
     122      &_recomb,
     123      fastjet::Best)) {}
     124   
     125private:
     126   const WinnerTakeAllRecombiner _recomb;
     127};
     128
    170129
    171130//------------------------------------------------------------------------
     
    174133// E_scheme recombination.
    175134class AxesFinderFromKT : public AxesFinderFromExclusiveJetDefinition {
    176    public:
    177       AxesFinderFromKT() : AxesFinderFromExclusiveJetDefinition(
    178          fastjet::JetDefinition(fastjet::kt_algorithm,
    179          fastjet::JetDefinition::max_allowable_R, //maximum jet radius constant
    180          fastjet::E_scheme,
    181          fastjet::Best)) {}
     135public:
     136   AxesFinderFromKT()
     137   : AxesFinderFromExclusiveJetDefinition(
     138      fastjet::JetDefinition(fastjet::kt_algorithm,
     139      fastjet::JetDefinition::max_allowable_R, //maximum jet radius constant
     140      fastjet::E_scheme,
     141      fastjet::Best)) {}
    182142};
    183143
     
    187147// E_scheme recombination.
    188148class AxesFinderFromCA : public AxesFinderFromExclusiveJetDefinition {
    189    public:
    190       AxesFinderFromCA() : AxesFinderFromExclusiveJetDefinition(
    191          fastjet::JetDefinition(fastjet::cambridge_algorithm,
    192                                 fastjet::JetDefinition::max_allowable_R,  //maximum jet radius constant
    193          fastjet::E_scheme,
    194          fastjet::Best)) {}
     149public:
     150   AxesFinderFromCA()
     151   : AxesFinderFromExclusiveJetDefinition(
     152      fastjet::JetDefinition(fastjet::cambridge_algorithm,
     153                             fastjet::JetDefinition::max_allowable_R,  //maximum jet radius constant
     154      fastjet::E_scheme,
     155      fastjet::Best)) {}
    195156};
    196157
     
    201162// This can be implemented with different jet algorithms.
    202163class AxesFinderFromHardestJetDefinition : public AxesFinder {
    203 
    204    private:
    205       fastjet::JetDefinition _def;
    206    
    207    public:
    208       AxesFinderFromHardestJetDefinition(fastjet::JetDefinition def) : _def(def) {}
    209      
    210       virtual std::vector<fastjet::PseudoJet> getBetterAxes(int n_jets, const std::vector <fastjet::PseudoJet> & inputs, const std::vector<fastjet::PseudoJet>& currentAxes) {
    211          fastjet::ClusterSequence jet_clust_seq(inputs, _def);
    212          std::vector<fastjet::PseudoJet> myJets = sorted_by_pt(jet_clust_seq.inclusive_jets());
    213          myJets.resize(n_jets);  // only keep n hardest
    214          return myJets;
    215       }     
     164public:
     165   AxesFinderFromHardestJetDefinition(fastjet::JetDefinition def)
     166   : _def(def) {}
     167   
     168   virtual std::vector<fastjet::PseudoJet> getAxes(int n_jets,
     169                                                   const std::vector <fastjet::PseudoJet> & inputs,
     170                                                   const std::vector<fastjet::PseudoJet>& /*seedAxes*/) const {
     171      fastjet::ClusterSequence jet_clust_seq(inputs, _def);
     172      std::vector<fastjet::PseudoJet> myJets = sorted_by_pt(jet_clust_seq.inclusive_jets());
     173      myJets.resize(n_jets);  // only keep n hardest
     174      return myJets;
     175   }
     176   
     177private:
     178   fastjet::JetDefinition _def;
    216179};
    217180
     
    221184// to an anti kT algorithm and E_scheme.
    222185class AxesFinderFromAntiKT : public AxesFinderFromHardestJetDefinition {
    223    public:
    224       AxesFinderFromAntiKT(double R0) : AxesFinderFromHardestJetDefinition(fastjet::JetDefinition(fastjet::antikt_algorithm,R0,fastjet::E_scheme,fastjet::Best)) {}
     186public:
     187   AxesFinderFromAntiKT(double R0)
     188   : AxesFinderFromHardestJetDefinition(
     189      fastjet::JetDefinition(fastjet::antikt_algorithm,
     190                             R0,fastjet::E_scheme,fastjet::Best)) {}
    225191};
    226192
     
    231197class AxesFinderFromUserInput : public AxesFinder {
    232198
    233    public:
    234       AxesFinderFromUserInput() {}
    235      
    236       virtual std::vector<fastjet::PseudoJet> getBetterAxes(int n_jets, const std::vector <fastjet::PseudoJet> & inputs, const std::vector<fastjet::PseudoJet>& currentAxes) {
    237          assert(currentAxes.size() == (unsigned int) n_jets);
    238          return currentAxes;
    239       }
     199public:
     200   AxesFinderFromUserInput() {}
     201   
     202   virtual std::vector<fastjet::PseudoJet> getAxes(int n_jets, const std::vector <fastjet::PseudoJet> & /*inputs*/, const std::vector<fastjet::PseudoJet>& currentAxes) const {
     203      assert(currentAxes.size() == (unsigned int) n_jets);
     204      (void)(n_jets);  // adding this line to fix unused-parameter warning
     205      return currentAxes;
     206   }
    240207};
    241208
     
    249216class AxesFinderFromOnePassMinimization : public AxesFinder {
    250217
    251    private:
    252       double _precision;  // Desired precision in axes alignment
    253       int _halt;  // maximum number of steps per iteration
    254      
    255       double _beta;
    256       double _Rcutoff;
    257      
    258       DefaultUnnormalizedMeasure _measureFunction;
    259    
    260    public:
    261 
    262       // From a startingFinder, try to minimize the unnormalized_measure
    263       AxesFinderFromOnePassMinimization(AxesFinder* startingFinder, double beta, double Rcutoff)
    264          : AxesFinder(startingFinder),
    265            _precision(0.0001), //hard coded for now
    266            _halt(1000), //hard coded for now
    267            _beta(beta),
    268            _Rcutoff(Rcutoff),
    269            _measureFunction(beta, Rcutoff)
    270            {}
    271    
    272       virtual std::vector<fastjet::PseudoJet> getBetterAxes(int n_jets, const std::vector <fastjet::PseudoJet> & inputJets, const std::vector<fastjet::PseudoJet>& currentAxes);
    273 
    274       template <int N> std::vector<LightLikeAxis> UpdateAxesFast(const std::vector <LightLikeAxis> & old_axes,
    275                                   const std::vector <fastjet::PseudoJet> & inputJets);
    276    
    277       std::vector<LightLikeAxis> UpdateAxes(const std::vector <LightLikeAxis> & old_axes,
    278                                       const std::vector <fastjet::PseudoJet> & inputJets);
     218public:
     219
     220   // From a startingFinder, try to minimize the unnormalized_measure
     221   AxesFinderFromOnePassMinimization(double beta, double Rcutoff)
     222      : _precision(0.0001), //hard coded for now
     223        _halt(1000), //hard coded for now
     224        _beta(beta),
     225        _Rcutoff(Rcutoff),
     226        _measureFunction(beta, Rcutoff)
     227        {}
     228
     229   virtual std::vector<fastjet::PseudoJet> getAxes(int n_jets,
     230                                                   const std::vector <fastjet::PseudoJet> & inputJets,
     231                                                   const std::vector<fastjet::PseudoJet>& currentAxes) const;
     232   
     233private:
     234   double _precision;  // Desired precision in axes alignment
     235   int _halt;  // maximum number of steps per iteration
     236   
     237   double _beta;
     238   double _Rcutoff;
     239   
     240   DefaultUnnormalizedMeasureFunction _measureFunction;
     241   
     242   template <int N> std::vector<LightLikeAxis> UpdateAxesFast(const std::vector <LightLikeAxis> & old_axes,
     243                                                              const std::vector <fastjet::PseudoJet> & inputJets) const;
     244   
     245   std::vector<LightLikeAxis> UpdateAxes(const std::vector <LightLikeAxis> & old_axes,
     246                                         const std::vector <fastjet::PseudoJet> & inputJets) const;
    279247
    280248};
     
    288256class AxesFinderFromKmeansMinimization : public AxesFinder{
    289257
    290    private:
    291       int _n_iterations;   // Number of iterations to run  (0 for no minimization, 1 for one-pass, >>1 for global minimum)
    292       double _noise_range; // noise range for random initialization
    293    
    294       DefaultUnnormalizedMeasure _measureFunction; //function to test whether minimum is reached
    295    
    296       AxesFinderFromOnePassMinimization _onePassFinder;  //one pass finder for minimization
    297 
    298       PseudoJet jiggle(const PseudoJet& axis);
    299    
    300    public:
    301       AxesFinderFromKmeansMinimization(AxesFinder *startingFinder, double beta, double Rcutoff, int n_iterations) :
    302          AxesFinder(startingFinder),
    303          _n_iterations(n_iterations),
    304          _noise_range(1.0), // hard coded for the time being
    305          _measureFunction(beta, Rcutoff),
    306          _onePassFinder(NULL, beta, Rcutoff)
    307          {}
    308 
    309       virtual std::vector<fastjet::PseudoJet> getBetterAxes(int n_jets, const std::vector <fastjet::PseudoJet> & inputJets, const std::vector<fastjet::PseudoJet>& currentAxes);
    310 
     258public:
     259   AxesFinderFromKmeansMinimization(double beta, double Rcutoff, int n_iterations)
     260   :  _n_iterations(n_iterations),
     261      _noise_range(1.0), // hard coded for the time being
     262      _measureFunction(beta, Rcutoff),
     263      _onePassFinder(beta, Rcutoff)
     264      {}
     265
     266   virtual std::vector<fastjet::PseudoJet> getAxes(int n_jets, const std::vector <fastjet::PseudoJet> & inputJets, const std::vector<fastjet::PseudoJet>& currentAxes) const;
     267   
     268private:
     269   int _n_iterations;   // Number of iterations to run  (0 for no minimization, 1 for one-pass, >>1 for global minimum)
     270   double _noise_range; // noise range for random initialization
     271   
     272   DefaultUnnormalizedMeasureFunction _measureFunction; //function to test whether minimum is reached
     273   
     274   AxesFinderFromOnePassMinimization _onePassFinder;  //one pass finder that is repeatedly called
     275   
     276   PseudoJet jiggle(const PseudoJet& axis) const;
    311277};
    312278
     
    317283class AxesFinderFromGeometricMinimization : public AxesFinder {
    318284
    319    private:
    320       MeasureFunction* _function;
    321       double _Rcutoff;
    322       double _nAttempts;
    323       double _accuracy;
    324 
    325    
    326    public:
    327       AxesFinderFromGeometricMinimization(AxesFinder* startingFinder, double beta, double Rcutoff) : AxesFinder(startingFinder), _Rcutoff(Rcutoff) {
    328          if (beta != 2.0) {
    329             std::cerr << "Geometric minimization is currently only defined for beta = 2.0." << std::endl;
    330             exit(1);
    331          }
    332          
    333          _nAttempts = 100;
    334          _accuracy = 0.000000001;
    335          _function = new GeometricMeasure(beta,_Rcutoff);
     285public:
     286   AxesFinderFromGeometricMinimization(double beta, double Rcutoff)
     287   :  _nAttempts(100),
     288      _accuracy(0.000000001),
     289      _function(beta,Rcutoff)
     290   {
     291      if (beta != 2.0) {
     292         throw Error("Geometric minimization is currently only defined for beta = 2.0.");
    336293      }
    337 
    338       ~AxesFinderFromGeometricMinimization() {
    339          delete _function;
    340       }
    341    
    342       virtual std::vector<fastjet::PseudoJet> getBetterAxes(int n_jets, const std::vector <fastjet::PseudoJet> & particles, const std::vector<fastjet::PseudoJet>& currentAxes);
     294   }
     295
     296   virtual std::vector<fastjet::PseudoJet> getAxes(int n_jets, const std::vector <fastjet::PseudoJet> & particles, const std::vector<fastjet::PseudoJet>& currentAxes) const;
     297
     298private:
     299   double _nAttempts;
     300   double _accuracy;
     301   GeometricMeasureFunction _function;
     302
     303
    343304};
    344305
     
    348309// in order to better facilitate calculations.
    349310class LightLikeAxis {
    350 private:
    351    double _rap, _phi, _weight, _mom;
    352    
    353    double DistanceSq(double rap2, double phi2) const {
    354       double rap1 = _rap;
    355       double phi1 = _phi;
    356      
    357       double distRap = rap1-rap2;
    358       double distPhi = std::fabs(phi1-phi2);
    359       if (distPhi > M_PI) {distPhi = 2.0*M_PI - distPhi;}
    360       return sq(distRap) + sq(distPhi);
    361    }
    362    
    363    double Distance(double rap2, double phi2) const {
    364       return std::sqrt(DistanceSq(rap2,phi2));
    365    }
    366    
    367    
     311
    368312public:
    369313   LightLikeAxis() : _rap(0.0), _phi(0.0), _weight(0.0), _mom(0.0) {}
     
    399343   }
    400344
     345private:
     346   double _rap, _phi, _weight, _mom;
     347   
     348   double DistanceSq(double rap2, double phi2) const {
     349      double rap1 = _rap;
     350      double phi1 = _phi;
     351     
     352      double distRap = rap1-rap2;
     353      double distPhi = std::fabs(phi1-phi2);
     354      if (distPhi > M_PI) {distPhi = 2.0*M_PI - distPhi;}
     355      return distRap*distRap + distPhi*distPhi;
     356   }
     357   
     358   double Distance(double rap2, double phi2) const {
     359      return std::sqrt(DistanceSq(rap2,phi2));
     360   }
     361   
     362   
    401363};
    402364
  • external/fastjet/contribs/Nsubjettiness/MeasureFunction.cc

    rba7fc1e r37deb3b  
    55//  Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason
    66//
     7//  $Id: MeasureFunction.cc 670 2014-06-06 01:24:42Z jthaler $
    78//----------------------------------------------------------------------
    89// This file is part of FastJet contrib.
     
    3637
    3738// Return all of the necessary TauComponents for specific input particles and axes
    38 TauComponents MeasureFunction::result(const std::vector<fastjet::PseudoJet>& particles, const std::vector<fastjet::PseudoJet>& axes) {
     39TauComponents MeasureFunction::result(const std::vector<fastjet::PseudoJet>& particles, const std::vector<fastjet::PseudoJet>& axes) const {
     40   
     41   // first find partition
     42   // this sets jetPartitionStorage and beamPartitionStorage
     43   PseudoJet beamPartitionStorage;
     44   std::vector<fastjet::PseudoJet> jetPartitionStorage = get_partition(particles,axes,&beamPartitionStorage);
     45   
     46   // then return result calculated from partition
     47   return result_from_partition(jetPartitionStorage,axes,&beamPartitionStorage);
     48}
    3949
    40    std::vector<double> jetPieces(axes.size(), 0.0);
    41    double beamPiece = 0.0;
     50std::vector<fastjet::PseudoJet> MeasureFunction::get_partition(const std::vector<fastjet::PseudoJet>& particles,
     51                                                               const std::vector<fastjet::PseudoJet>& axes,
     52                                                               PseudoJet * beamPartitionStorage) const {
    4253   
    43    // Calculates the unnormalized sub-tau values, i.e. a std::vector of the contributions to tau_N of each Voronoi region (or region within R_0)
     54   std::vector<std::vector<PseudoJet> > jetPartition(axes.size());
     55   std::vector<PseudoJet> beamPartition;
     56   
     57   // Figures out the partiting of the input particles into the various jet pieces
     58   // Based on which axis the parition is closest to
    4459   for (unsigned i = 0; i < particles.size(); i++) {
    4560     
     
    6075     
    6176      if (j_min == -1) {
    62          if (_has_beam) beamPiece += beam_numerator(particles[i]);
     77         if (_has_beam) beamPartition.push_back(particles[i]);
    6378         else assert(_has_beam);  // this should never happen.
    6479      } else {
    65          jetPieces[j_min] += jet_numerator(particles[i],axes[j_min]);
     80         jetPartition[j_min].push_back(particles[i]);
    6681      }
    6782   }
    6883   
    69    // Calculates normalization for tau and subTau if _has_denominator is true, otherwise returns 1.0 (i.e. no normalization)
    70    double tauDen = 0.0;
    71    if (_has_denominator) {
    72       for (unsigned i = 0; i < particles.size(); i++) {
    73          tauDen += denominator(particles[i]);
    74       }
    75    } else {
    76       tauDen = 1.0; // if no denominator, then 1.0 for no normalization factor
     84   // Store beam partition
     85   if (beamPartitionStorage) {
     86      *beamPartitionStorage = join(beamPartition);
     87   }
     88
     89   // Store jet partitions
     90   std::vector<PseudoJet> jetPartitionStorage(axes.size(),PseudoJet(0,0,0,0));
     91   for (unsigned j = 0; j < axes.size(); j++) {
     92      jetPartitionStorage[j] = join(jetPartition[j]);
    7793   }
    7894   
     95   return jetPartitionStorage;
     96}
     97
     98// does partition, but only stores index of PseudoJets
     99std::vector<std::list<int> > MeasureFunction::get_partition_list(const std::vector<fastjet::PseudoJet>& particles,
     100                                                                 const std::vector<fastjet::PseudoJet>& axes) const {
     101
     102   std::vector<std::list<int> > jetPartition(axes.size());
     103   
     104   // Figures out the partiting of the input particles into the various jet pieces
     105   // Based on which axis the parition is closest to
     106   for (unsigned i = 0; i < particles.size(); i++) {
     107     
     108      // find minimum distance; start with beam (-1) for reference
     109      int j_min = -1;
     110      double minRsq;
     111      if (_has_beam) minRsq = beam_distance_squared(particles[i]);
     112      else minRsq = std::numeric_limits<double>::max(); // make it large value
     113     
     114      // check to see which axis the particle is closest to
     115      for (unsigned j = 0; j < axes.size(); j++) {
     116         double tempRsq = jet_distance_squared(particles[i],axes[j]); // delta R distance
     117         if (tempRsq < minRsq) {
     118            minRsq = tempRsq;
     119            j_min = j;
     120         }
     121      }
     122     
     123      if (j_min == -1) {
     124         assert(_has_beam); // consistency check
     125      } else {
     126         jetPartition[j_min].push_back(i);
     127      }
     128   }
     129   
     130   return jetPartition;
     131}
     132   
     133
     134// Uses existing partition and calculates result
     135// TODO:  Can we cache this for speed up when doing area subtraction?
     136TauComponents MeasureFunction::result_from_partition(const std::vector<fastjet::PseudoJet>& jet_partition,
     137                                                     const std::vector<fastjet::PseudoJet>& axes,
     138                                                     PseudoJet * beamPartitionStorage) const {
     139   
     140   std::vector<double> jetPieces(axes.size(), 0.0);
     141   double beamPiece = 0.0;
     142   
     143   double tauDen = 0.0;
     144   if (!_has_denominator) tauDen = 1.0;  // if no denominator, then 1.0 for no normalization factor
     145   
     146   // first find jet pieces
     147   for (unsigned j = 0; j < axes.size(); j++) {
     148      std::vector<PseudoJet> thisPartition = jet_partition[j].constituents();
     149      for (unsigned i = 0; i < thisPartition.size(); i++) {
     150         jetPieces[j] += jet_numerator(thisPartition[i],axes[j]); //numerator jet piece
     151         if (_has_denominator) tauDen += denominator(thisPartition[i]); // denominator
     152      }
     153   }
     154   
     155   // then find beam piece
     156   if (_has_beam) {
     157      assert(beamPartitionStorage); // make sure I have beam information
     158      std::vector<PseudoJet> beamPartition = beamPartitionStorage->constituents();
     159
     160      for (unsigned i = 0; i < beamPartition.size(); i++) {
     161         beamPiece += beam_numerator(beamPartition[i]); //numerator beam piece
     162         if (_has_denominator) tauDen += denominator(beamPartition[i]); // denominator
     163      }
     164   }
    79165   return TauComponents(jetPieces, beamPiece, tauDen, _has_denominator, _has_beam);
    80166}
     167
     168   
     169   
     170   
    81171   
    82172} //namespace contrib
  • external/fastjet/contribs/Nsubjettiness/MeasureFunction.hh

    rba7fc1e r37deb3b  
    55//  Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason
    66//
     7//  $Id: MeasureFunction.hh 678 2014-06-12 20:43:03Z jthaler $
    78//----------------------------------------------------------------------
    89// This file is part of FastJet contrib.
     
    3132#include <limits>
    3233
     34
    3335FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
    3436
    3537namespace contrib{
    3638
    37 inline double sq(double x) {return x*x;}
    38 
    39 ///////
    40 //
    41 // Measure Function
    42 //
    43 ///////
    44 
     39///////
     40//
     41// TauComponents
     42// (eventually we might want to put this in a separate header file)
     43//
     44///////
     45   
    4546/// \class TauComponents
    4647// This class creates a wrapper for the various tau/subtau values calculated in Njettiness. This class allows Njettiness access to these variables
    4748// without ever having to do the calculation itself. It takes in subtau numerators and tau denominator from MeasureFunction
    4849// and outputs tau numerator, and normalized tau and subtau.
    49 // TODO:  Consider merging with NjettinessExtras.  Add axes information?
    5050class TauComponents {
    51 private:
    52    
    53    // these values are input in the constructor
    54    std::vector<double> _jet_pieces_numerator;
    55    double _beam_piece_numerator;
    56    double _denominator;
    57    bool _has_denominator; //added so that TauComponents knows if denominator is used or not
    58    bool _has_beam; //added so that TauComponents knows if beam regions is used or not
    59    
    60    // these values are derived from above values
    61    std::vector<double> _jet_pieces;
    62    double _beam_piece;
    63    double _numerator;
    64    double _tau;
    65    
    6651   
    6752public:
     
    115100   double beam_piece() const { return _beam_piece; }
    116101   double tau() const { return _tau; }
    117    
    118 };
     102
     103private:
     104   
     105   // these values are input in the constructor
     106   std::vector<double> _jet_pieces_numerator;
     107   double _beam_piece_numerator;
     108   double _denominator;
     109   bool _has_denominator; //added so that TauComponents knows if denominator is used or not
     110   bool _has_beam; //added so that TauComponents knows if beam regions is used or not
     111   
     112   // these values are derived from above values
     113   std::vector<double> _jet_pieces;
     114   double _beam_piece;
     115   double _numerator;
     116   double _tau;
     117   
     118};
     119
     120///////
     121//
     122// Measure Function
     123//
     124///////
     125
    119126
    120127//------------------------------------------------------------------------
     
    125132class MeasureFunction {
    126133   
     134public:
     135   //These functions define the measure by which tau_N is calculated,
     136   //and are overloaded by the various measures below
     137   
     138   // Distanes to axes.  These are called many times, so need to be as fast as possible
     139   virtual double jet_distance_squared(const fastjet::PseudoJet& particle, const fastjet::PseudoJet& axis) const = 0;
     140   virtual double beam_distance_squared(const fastjet::PseudoJet& particle) const = 0;
     141   
     142   // The actual measures used in N-(sub)jettiness
     143   virtual double jet_numerator(const fastjet::PseudoJet& particle, const fastjet::PseudoJet& axis) const  = 0;
     144   virtual double beam_numerator(const fastjet::PseudoJet& particle) const = 0;
     145   
     146   // a possible normalization factor
     147   virtual double denominator(const fastjet::PseudoJet& particle) const = 0;
     148   
     149   //------
     150   // The functions below call the above functions and are not virtual
     151   //------
     152   
     153   // Return all of the necessary TauComponents for specific input particles and axes
     154   // Also have optional pointers to get out information about partitioning
     155   TauComponents result(const std::vector<fastjet::PseudoJet>& particles, const std::vector<fastjet::PseudoJet>& axes) const;
     156
     157   // Just getting tau value if that is all that is needed
     158   double tau(const std::vector<fastjet::PseudoJet>& particles, const std::vector<fastjet::PseudoJet>& axes) const {
     159      return result(particles,axes).tau();
     160   }
     161   
     162   // Create the partitioning and stores internally
     163   std::vector<fastjet::PseudoJet> get_partition(const std::vector<fastjet::PseudoJet>& particles, const std::vector<fastjet::PseudoJet>& axes, PseudoJet * beamPartitionStorage = NULL) const;
     164
     165   // Essentially same as get_partition, but in the form needed for the jet algorithm
     166   std::vector<std::list<int> > get_partition_list(const std::vector<fastjet::PseudoJet>& particles, const std::vector<fastjet::PseudoJet>& axes) const;
     167
     168   // calculates the tau result using an existing partition
     169   TauComponents result_from_partition(const std::vector<fastjet::PseudoJet>& jet_partitioning, const std::vector<fastjet::PseudoJet>& axes, PseudoJet * beamPartitionStorage = NULL) const;
     170
     171   // shorthand for squaring
     172   static inline double sq(double x) {return x*x;}
     173
     174   //virtual destructor
     175   virtual ~MeasureFunction(){}
     176   
    127177protected:
    128178   //bool set by derived classes to choose whether or not to use the denominator
     
    133183   MeasureFunction(bool has_denominator = true, bool has_beam = true) : _has_denominator(has_denominator), _has_beam(has_beam) {}
    134184   
    135 public:
    136    virtual ~MeasureFunction(){}
    137    
    138    //These functions define the measure by which tau_N is calculated,
    139    //and are overloaded by the various measures below
    140    
    141    // Distanes to axes.  These are called many times, so need to be as fast as possible
    142    virtual double jet_distance_squared(const fastjet::PseudoJet& particle, const fastjet::PseudoJet& axis) = 0;
    143    virtual double beam_distance_squared(const fastjet::PseudoJet& particle) = 0;
    144    
    145    // The actual measures used in N-(sub)jettiness
    146    virtual double jet_numerator(const fastjet::PseudoJet& particle, const fastjet::PseudoJet& axis) = 0;
    147    virtual double beam_numerator(const fastjet::PseudoJet& particle) = 0;
    148    
    149    // a possible normalization factor
    150    virtual double denominator(const fastjet::PseudoJet& particle) = 0;
    151    
    152    
    153    // These functions call the above functions and are not virtual
    154    
    155    // Do I cluster a particle into a jet?
    156    bool do_cluster(const fastjet::PseudoJet& particle, const fastjet::PseudoJet& axis) {
    157       return (jet_distance_squared(particle,axis) <= beam_distance_squared(particle));
    158    }
    159    
    160    // Return all of the necessary TauComponents for specific input particles and axes
    161    TauComponents result(const std::vector<fastjet::PseudoJet>& particles, const std::vector<fastjet::PseudoJet>& axes);
    162 
    163    double tau(const std::vector<fastjet::PseudoJet>& particles, const std::vector<fastjet::PseudoJet>& axes) {
    164       return result(particles,axes).tau();
    165    }
    166 
    167    
    168 };
    169 
    170 
    171 /// \class DefaultNormalizedMeasure
     185};
     186
     187
     188/// \class DefaultNormalizedMeasureFunction
    172189// This class is the default measure, inheriting from the class above. This class will calculate tau_N
    173190// of a jet according to this measure. This measure is defined as the pT of the particle multiplied by deltaR
    174191// to the power of beta. This class includes the normalization factor determined by R0
    175 class DefaultNormalizedMeasure : public MeasureFunction {
    176 
    177    private:
    178       double _beta;
    179       double _R0;
    180       double _Rcutoff;
    181 
    182    public:
    183 
    184       DefaultNormalizedMeasure(double beta, double R0, double Rcutoff, bool normalized = true)
    185       : MeasureFunction(normalized), _beta(beta), _R0(R0), _Rcutoff(Rcutoff) {}
    186 
    187       virtual double jet_distance_squared(const fastjet::PseudoJet& particle, const fastjet::PseudoJet& axis) {
    188          return particle.squared_distance(axis);
    189       }
    190    
    191       virtual double beam_distance_squared(const fastjet::PseudoJet& particle) {
    192          return sq(_Rcutoff);
    193       }
    194 
    195       virtual double jet_numerator(const fastjet::PseudoJet& particle, const fastjet::PseudoJet& axis) {
    196          return particle.perp() * std::pow(jet_distance_squared(particle,axis),_beta/2.0);
    197       }
    198    
    199       virtual double beam_numerator(const fastjet::PseudoJet& particle) {
    200          return particle.perp() * std::pow(_Rcutoff,_beta);
    201       }
    202 
    203       virtual double denominator(const fastjet::PseudoJet& particle) {
    204          return particle.perp() * std::pow(_R0,_beta);
    205       }
    206 
     192class DefaultNormalizedMeasureFunction : public MeasureFunction {
     193
     194public:
     195
     196   DefaultNormalizedMeasureFunction(double beta, double R0, double Rcutoff, bool normalized = true)
     197   : MeasureFunction(normalized), _beta(beta), _R0(R0), _Rcutoff(Rcutoff) {}
     198
     199   virtual double jet_distance_squared(const fastjet::PseudoJet& particle, const fastjet::PseudoJet& axis) const {
     200      return particle.squared_distance(axis);
     201   }
     202
     203   virtual double beam_distance_squared(const fastjet::PseudoJet& /*particle*/) const {
     204      return sq(_Rcutoff);
     205   }
     206
     207   virtual double jet_numerator(const fastjet::PseudoJet& particle, const fastjet::PseudoJet& axis) const{
     208      return particle.perp() * std::pow(jet_distance_squared(particle,axis),_beta/2.0);
     209   }
     210
     211   virtual double beam_numerator(const fastjet::PseudoJet& particle) const {
     212      return particle.perp() * std::pow(_Rcutoff,_beta);
     213   }
     214
     215   virtual double denominator(const fastjet::PseudoJet& particle) const {
     216      return particle.perp() * std::pow(_R0,_beta);
     217   }
     218   
     219private:
     220   double _beta;
     221   double _R0;
     222   double _Rcutoff;
     223
     224   
    207225};
    208226
    209227//------------------------------------------------------------------------
    210 /// \class DefaultUnnormalizedMeasure
     228/// \class DefaultUnnormalizedMeasureFunction
    211229// This class is the unnormalized default measure, inheriting from the class above. The only difference from above
    212230// is that the denominator is defined to be 1.0 by setting _has_denominator to false.
    213 class DefaultUnnormalizedMeasure : public DefaultNormalizedMeasure {
    214 
    215    public:
    216       // Since all methods are identical, UnnormalizedMeasure inherits directly from NormalizedMeasure. R0 is defaulted to NAN since the value of R0 is unecessary for this class.
    217       // the "false" flag sets _has_denominator in MeasureFunction to false so no denominator is used.
    218       DefaultUnnormalizedMeasure(double beta, double Rcutoff) : DefaultNormalizedMeasure(beta, NAN, Rcutoff, false) {}
    219 
    220       
     231class DefaultUnnormalizedMeasureFunction : public DefaultNormalizedMeasureFunction {
     232
     233public:
     234   // Since all methods are identical, UnnormalizedMeasure inherits directly
     235   // from NormalizedMeasure. R0 is a dummy value since the value of R0 is unecessary for this class,
     236   // and the "false" flag sets _has_denominator in MeasureFunction to false so no denominator is used.
     237   DefaultUnnormalizedMeasureFunction(double beta, double Rcutoff)
     238   : DefaultNormalizedMeasureFunction(beta, std::numeric_limits<double>::quiet_NaN(), Rcutoff, false) {}
    221239};
    222240
    223241//------------------------------------------------------------------------
    224 /// \class GeometricMeasure
     242/// \class GeometricMeasureFunction
    225243// This class is the geometic measure, inheriting from the class above. This class will calculate tau_N
    226244// of a jet according to this measure. This measure is defined by the Lorentz dot product between
    227245// the particle and the axis. This class includes normalization of tau_N.
    228 class GeometricMeasure : public MeasureFunction {
    229 
    230    private:
    231       double _jet_beta;
    232       double _beam_beta;
    233       double _Rcutoff;
    234 
    235       // create light-like axis
    236       fastjet::PseudoJet lightFrom(const fastjet::PseudoJet& input) const {
    237          double length = sqrt(pow(input.px(),2) + pow(input.py(),2) + pow(input.pz(),2));
    238          return fastjet::PseudoJet(input.px()/length,input.py()/length,input.pz()/length,1.0);
    239       }
    240 
    241    public:
    242       // Right now, we are hard coded for beam_beta = 1.0, but that will need to change
    243       GeometricMeasure(double jet_beta, double Rcutoff) : _jet_beta(jet_beta), _beam_beta(1.0), _Rcutoff(Rcutoff) {}
    244    
    245       virtual double jet_distance_squared(const fastjet::PseudoJet& particle, const fastjet::PseudoJet& axis) {
    246          fastjet::PseudoJet lightAxis = lightFrom(axis);
    247          double pseudoRsquared = 2.0*dot_product(lightFrom(axis),particle)/(lightAxis.pt()*particle.pt());
    248          return pseudoRsquared;
    249       }
    250    
    251       virtual double beam_distance_squared(const fastjet::PseudoJet& particle) {
    252          return sq(_Rcutoff);
    253       }
    254 
    255       virtual double jet_numerator(const fastjet::PseudoJet& particle, const fastjet::PseudoJet& axis) {
    256          fastjet::PseudoJet lightAxis = lightFrom(axis);
    257          double weight = (_beam_beta == 1.0) ? 1.0 : std::pow(lightAxis.pt(),_beam_beta - 1.0);
    258          return particle.pt() * weight * std::pow(jet_distance_squared(particle,axis),_jet_beta/2.0);
    259       }
    260    
    261       virtual double beam_numerator(const fastjet::PseudoJet& particle) {
    262          double weight = (_beam_beta == 1.0) ? 1.0 : std::pow(particle.pt()/particle.e(),_beam_beta - 1.0);
    263          return particle.pt() * weight * std::pow(_Rcutoff,_jet_beta);
    264       }
    265 
    266       virtual double denominator(const fastjet::PseudoJet& particle) {
    267          return 1.0;
    268       }
    269 };
    270 
    271 
     246class GeometricMeasureFunction : public MeasureFunction {
     247
     248public:
     249   // Right now, we are hard coded for beam_beta = 1.0, but that will need to change
     250   GeometricMeasureFunction(double jet_beta, double Rcutoff) :
     251     MeasureFunction(false), // doesn't have denominator
     252     _jet_beta(jet_beta), _beam_beta(1.0), _Rcutoff(Rcutoff) {}
     253
     254   virtual double jet_distance_squared(const fastjet::PseudoJet& particle, const fastjet::PseudoJet& axis) const {
     255      fastjet::PseudoJet lightAxis = lightFrom(axis);
     256      double pseudoRsquared = 2.0*dot_product(lightFrom(axis),particle)/(lightAxis.pt()*particle.pt());
     257      return pseudoRsquared;
     258   }
     259
     260   virtual double beam_distance_squared(const fastjet::PseudoJet&  /*particle*/) const {
     261      return sq(_Rcutoff);
     262   }
     263
     264   virtual double jet_numerator(const fastjet::PseudoJet& particle, const fastjet::PseudoJet& axis) const {
     265      fastjet::PseudoJet lightAxis = lightFrom(axis);
     266      double weight = (_beam_beta == 1.0) ? 1.0 : std::pow(lightAxis.pt(),_beam_beta - 1.0);
     267      return particle.pt() * weight * std::pow(jet_distance_squared(particle,axis),_jet_beta/2.0);
     268   }
     269
     270   virtual double beam_numerator(const fastjet::PseudoJet& particle) const {
     271      double weight = (_beam_beta == 1.0) ? 1.0 : std::pow(particle.pt()/particle.e(),_beam_beta - 1.0);
     272      return particle.pt() * weight * std::pow(_Rcutoff,_jet_beta);
     273   }
     274
     275   virtual double denominator(const fastjet::PseudoJet&  /*particle*/) const {
     276      return std::numeric_limits<double>::quiet_NaN();
     277   }
     278   
     279   
     280private:
     281   double _jet_beta;
     282   double _beam_beta;
     283   double _Rcutoff;
     284   
     285   // create light-like axis
     286   fastjet::PseudoJet lightFrom(const fastjet::PseudoJet& input) const {
     287      double length = sqrt(pow(input.px(),2) + pow(input.py(),2) + pow(input.pz(),2));
     288      return fastjet::PseudoJet(input.px()/length,input.py()/length,input.pz()/length,1.0);
     289   }
     290
     291};
     292   
     293   
    272294} //namespace contrib
    273295
  • external/fastjet/contribs/Nsubjettiness/Njettiness.cc

    rba7fc1e r37deb3b  
    55//  Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason
    66//
     7//  $Id: Njettiness.cc 677 2014-06-12 18:56:46Z jthaler $
    78//----------------------------------------------------------------------
    89// This file is part of FastJet contrib.
     
    3536///////
    3637
    37 // Helper function to correlate one pass minimization with appropriate measure
    38 void Njettiness::setOnePassAxesFinder(MeasureMode measure_mode, AxesFinder* startingFinder, double beta, double Rcutoff) {
    39    if (measure_mode == normalized_measure || measure_mode == unnormalized_measure || measure_mode == normalized_cutoff_measure || measure_mode == unnormalized_cutoff_measure) {
    40       _axesFinder = new AxesFinderFromOnePassMinimization(startingFinder, beta, Rcutoff);
    41    }
    42    else if (measure_mode == geometric_measure || measure_mode == geometric_cutoff_measure) {
    43       _axesFinder = new AxesFinderFromGeometricMinimization(startingFinder, beta, Rcutoff);
    44    }
    45    else {
    46       std::cerr << "Minimization only set up for normalized_measure, unnormalized_measure, normalized_cutoff_measure, unnormalized_cutoff_measure, geometric_measure, geometric_cutoff_measure" << std::endl;
    47       exit(1); }
    48 }
    49 
    50 // Parsing needed for constructor to set AxesFinder and MeasureFunction
    51 // All of the parameter handling is here, and checking that number of parameters is correct.
    52 void Njettiness::setMeasureFunctionandAxesFinder(AxesMode axes_mode, MeasureMode measure_mode, double para1, double para2, double para3, double para4) {
     38Njettiness::Njettiness(const AxesDefinition & axes_def, const MeasureDefinition & measure_def)
     39: _axes_def(axes_def.create()), _measure_def(measure_def.create()) {
     40   setMeasureFunctionAndAxesFinder();  // call helper function to do the hard work
     41}
     42
     43Njettiness::Njettiness(AxesMode axes_mode, const MeasureDefinition & measure_def)
     44: _axes_def(createAxesDef(axes_mode)), _measure_def(measure_def.create()) {
     45   setMeasureFunctionAndAxesFinder();  // call helper function to do the hard work
     46}
     47   
     48// Convert from MeasureMode enum to MeasureDefinition
     49// This returns a pointer that will be claimed by a SharedPtr
     50MeasureDefinition* Njettiness::createMeasureDef(MeasureMode measure_mode, int num_para, double para1, double para2, double para3) const {
    5351
    5452   // definition of maximum Rcutoff for non-cutoff measures, changed later by other measures
    5553   double Rcutoff = std::numeric_limits<double>::max();  //large number
    56    // Most (but all measures have some kind of beta value)
    57    double beta = NAN;
     54   // Most (but not all) measures have some kind of beta value
     55   double beta = std::numeric_limits<double>::quiet_NaN();
    5856   // The normalized measures have an R0 value.
    59    double R0 = NAN;
    60 
     57   double R0 = std::numeric_limits<double>::quiet_NaN();
     58   
    6159   // Find the MeasureFunction and set the parameters.
    6260   switch (measure_mode) {
     
    6462         beta = para1;
    6563         R0 = para2;
    66          if(correctParameterCount(2, para1, para2, para3, para4))
    67             _measureFunction = new DefaultNormalizedMeasure(beta, R0, Rcutoff); //normalized_measure requires 2 parameters, beta and R0
    68          else {
    69             std::cerr << "normalized_measure needs 2 parameters (beta and R0)" << std::endl;
    70             exit(1); }
     64         if(num_para == 2) {
     65            return new NormalizedMeasure(beta,R0);
     66         } else {
     67            throw Error("normalized_measure needs 2 parameters (beta and R0)");
     68         }
    7169         break;
    7270      case unnormalized_measure:
    7371         beta = para1;
    74          if(correctParameterCount(1, para1, para2, para3, para4))
    75             _measureFunction = new DefaultUnnormalizedMeasure(beta, Rcutoff); //unnormalized_measure requires 1 parameter, beta
    76          else {
    77             std::cerr << "unnormalized_measure needs 1 parameter (beta)" << std::endl;
    78             exit(1); }
     72         if(num_para == 1) {
     73            return new UnnormalizedMeasure(beta);
     74         } else {
     75            throw Error("unnormalized_measure needs 1 parameter (beta)");
     76         }
    7977         break;
    8078      case geometric_measure:
    8179         beta = para1;
    82          if(correctParameterCount(1, para1, para2, para3, para4))
    83             _measureFunction = new GeometricMeasure(beta,Rcutoff); //geometric_measure requires 1 parameter, beta
    84          else {
    85             std::cerr << "geometric_measure needs 1 parameter (beta)" << std::endl;
    86             exit(1); }
     80         if (num_para == 1) {
     81            return new GeometricMeasure(beta);
     82         } else {
     83            throw Error("geometric_measure needs 1 parameter (beta)");
     84         }
    8785         break;
    8886      case normalized_cutoff_measure:
     
    9088         R0 = para2;
    9189         Rcutoff = para3; //Rcutoff parameter is 3rd parameter in normalized_cutoff_measure
    92          if(correctParameterCount(3, para1, para2, para3, para4))
    93             _measureFunction = new DefaultNormalizedMeasure(beta, R0, Rcutoff); //normalized_cutoff_measure requires 3 parameters, beta, R0, and Rcutoff
    94          else {
    95             std::cerr << "normalized_cutoff_measure has 3 parameters (beta, R0, Rcutoff)" << std::endl;
    96             exit(1); }
     90         if (num_para == 3) {
     91            return new NormalizedCutoffMeasure(beta,R0,Rcutoff);
     92         } else {
     93            throw Error("normalized_cutoff_measure has 3 parameters (beta, R0, Rcutoff)");
     94         }
    9795         break;
    9896      case unnormalized_cutoff_measure:
    9997         beta = para1;
    10098         Rcutoff = para2; //Rcutoff parameter is 2nd parameter in normalized_cutoff_measure
    101          if (correctParameterCount(2, para1, para2, para3, para4))
    102             _measureFunction = new DefaultUnnormalizedMeasure(beta, Rcutoff); //unnormalized_cutoff_measure requires 2 parameters, beta and Rcutoff
    103          else {
    104             std::cerr << "unnormalized_cutoff_measure has 2 parameters (beta, Rcutoff)" << std::endl;
    105             exit(1); }
     99         if (num_para == 2) {
     100            return new UnnormalizedCutoffMeasure(beta,Rcutoff);
     101         } else {
     102            throw Error("unnormalized_cutoff_measure has 2 parameters (beta, Rcutoff)");
     103         }
    106104         break;
    107105      case geometric_cutoff_measure:
    108106         beta = para1;
    109107         Rcutoff = para2; //Rcutoff parameter is 2nd parameter in geometric_cutoff_measure
    110          if(correctParameterCount(2, para1, para2, para3, para4))
    111             _measureFunction = new GeometricMeasure(beta,Rcutoff); //geometric_cutoff_measure requires 2 parameters, beta and Rcutoff
    112          else {
    113             std::cerr << "geometric_cutoff_measure has 2 parameters (beta,Rcutoff)" << std::endl;
    114             exit(1); }
     108         if(num_para == 2) {
     109           return new GeometricCutoffMeasure(beta,Rcutoff);
     110         } else {
     111            throw Error("geometric_cutoff_measure has 2 parameters (beta, Rcutoff)");
     112         }
    115113         break;
    116114      default:
    117115         assert(false);
    118116         break;
    119    }   
    120 
    121    // Choose which AxesFinder from user input.
    122    // Uses setOnePassAxesFinder helpful function to use beta and Rcutoff values about (if needed)
     117   }
     118   return NULL;
     119}
     120
     121// Convert from AxesMode enum to AxesDefinition
     122// This returns a pointer that will be claimed by a SharedPtr
     123AxesDefinition* Njettiness::createAxesDef(Njettiness::AxesMode axes_mode) const {
     124   
    123125   switch (axes_mode) {
    124126      case wta_kt_axes:
    125          _axesFinder = new AxesFinderFromWTA_KT();
    126          break;
     127         return new WTA_KT_Axes();
    127128      case wta_ca_axes:
    128          _axesFinder = new AxesFinderFromWTA_CA();
    129          break;
     129         return new WTA_CA_Axes();
    130130      case kt_axes:
    131          _axesFinder = new AxesFinderFromKT();
    132          break;
     131         return new KT_Axes();
    133132      case ca_axes:
    134          _axesFinder = new AxesFinderFromCA();
    135          break;
     133         return new CA_Axes();
    136134      case antikt_0p2_axes:
    137          _axesFinder = new AxesFinderFromAntiKT(0.2);     
    138          break;
     135         return new AntiKT_Axes(0.2);
    139136      case onepass_wta_kt_axes:
    140          setOnePassAxesFinder(measure_mode, new AxesFinderFromWTA_KT(), beta, Rcutoff);
    141          break;
     137         return new OnePass_WTA_KT_Axes();
    142138      case onepass_wta_ca_axes:
    143          setOnePassAxesFinder(measure_mode, new AxesFinderFromWTA_CA(), beta, Rcutoff);
    144          break;
     139         return new OnePass_WTA_CA_Axes();
    145140      case onepass_kt_axes:
    146          setOnePassAxesFinder(measure_mode, new AxesFinderFromKT(), beta, Rcutoff);
    147          break;
     141         return new OnePass_KT_Axes();
    148142      case onepass_ca_axes:
    149          setOnePassAxesFinder(measure_mode, new AxesFinderFromCA(), beta, Rcutoff);
    150          break;
     143         return new OnePass_CA_Axes();
    151144      case onepass_antikt_0p2_axes:
    152          setOnePassAxesFinder(measure_mode, new AxesFinderFromAntiKT(0.2), beta, Rcutoff);
    153          break;
     145         return new OnePass_AntiKT_Axes(0.2);
    154146      case onepass_manual_axes:
    155          setOnePassAxesFinder(measure_mode, new AxesFinderFromUserInput(), beta, Rcutoff);
    156          break;
    157       case min_axes: //full minimization is not defined for geometric_measure.
    158          if (measure_mode == normalized_measure || measure_mode == unnormalized_measure || measure_mode == normalized_cutoff_measure || measure_mode == unnormalized_cutoff_measure)
    159             //Defaults to 100 iteration to find minimum
    160             _axesFinder = new AxesFinderFromKmeansMinimization(new AxesFinderFromKT(), beta, Rcutoff, 100);
    161          else {
    162             std::cerr << "Multi-pass minimization only set up for normalized_measure, unnormalized_measure, normalized_cutoff_measure, unnormalized_cutoff_measure." << std::endl;
    163             exit(1);
    164          }
    165          break;
     147         return new OnePass_Manual_Axes();
     148      case min_axes:
     149         return new MultiPass_Axes(100);
    166150      case manual_axes:
    167          _axesFinder = new AxesFinderFromUserInput();
    168          break;
    169 // These options have been commented out because they have not been fully tested
    170 //      case wta2_kt_axes: // option for alpha = 2 added
    171 //         _axesFinder = new AxesFinderFromWTA2_KT();
    172 //         break;
    173 //      case wta2_ca_axes: // option for alpha = 2 added
    174 //         _axesFinder = new AxesFinderFromWTA2_CA();
    175 //         break;
    176 //      case onepass_wta2_kt_axes: // option for alpha = 2 added
    177 //         setOnePassAxesFinder(measure_mode, new AxesFinderFromWTA2_KT(), beta, Rcutoff);
    178 //         break;
    179 //      case onepass_wta2_ca_axes: // option for alpha = 2 added
    180 //         setOnePassAxesFinder(measure_mode, new AxesFinderFromWTA2_CA(), beta, Rcutoff);
    181 //         break;
     151         return new Manual_Axes();
    182152      default:
    183153         assert(false);
    184          break;
    185       }   
    186 
     154         return NULL;
     155   }
     156}
     157
     158   
     159// Parsing needed for constructor to set AxesFinder and MeasureFunction
     160// All of the parameter handling is here, and checking that number of parameters is correct.
     161void Njettiness::setMeasureFunctionAndAxesFinder() {
     162   // Get the correct MeasureFunction and AxesFinders
     163   _measureFunction.reset(_measure_def->createMeasureFunction());
     164   _startingAxesFinder.reset(_axes_def->createStartingAxesFinder(*_measure_def));
     165   _finishingAxesFinder.reset(_axes_def->createFinishingAxesFinder(*_measure_def));
    187166}
    188167
    189168// setAxes for Manual mode
    190 void Njettiness::setAxes(std::vector<fastjet::PseudoJet> myAxes) {
    191    if (_current_axes_mode == manual_axes || _current_axes_mode == onepass_manual_axes) {
     169void Njettiness::setAxes(const std::vector<fastjet::PseudoJet> & myAxes) {
     170   if (_axes_def->supportsManualAxes()) {
    192171      _currentAxes = myAxes;
    193    }
    194    else {
    195       std::cerr << "You can only use setAxes if using manual_axes or onepass_manual_axes measure mode" << std::endl;
    196       exit(1);
     172   } else {
     173      throw Error("You can only use setAxes for manual AxesDefinitions");
    197174   }
    198175}
     
    200177// Calculates and returns all TauComponents that user would want.
    201178// This information is stored in _current_tau_components for later access as well.
    202 TauComponents Njettiness::getTauComponents(unsigned n_jets, const std::vector<fastjet::PseudoJet> & inputJets) {
     179TauComponents Njettiness::getTauComponents(unsigned n_jets, const std::vector<fastjet::PseudoJet> & inputJets) const {
    203180   if (inputJets.size() <= n_jets) {  //if not enough particles, return zero
    204181      _currentAxes = inputJets;
     
    206183      _current_tau_components = TauComponents();
    207184      _seedAxes = _currentAxes;
     185      _currentJets = _currentAxes;
     186      _currentBeam = PseudoJet(0.0,0.0,0.0,0.0);
    208187   } else {
    209       _currentAxes = _axesFinder->getAxes(n_jets,inputJets,_currentAxes); // sets current Axes
    210       _seedAxes = _axesFinder->seedAxes(); // sets seed Axes (if one pass minimization was used)
    211       _current_tau_components = _measureFunction->result(inputJets, _currentAxes);  // sets current Tau Values
     188
     189      _seedAxes = _startingAxesFinder->getAxes(n_jets,inputJets,_currentAxes); //sets starting point for minimization
     190      if (_finishingAxesFinder) {
     191         _currentAxes = _finishingAxesFinder->getAxes(n_jets,inputJets,_seedAxes);
     192      } else {
     193         _currentAxes = _seedAxes;
     194      }
     195     
     196      // Find partition and store information
     197      // (jet information in _currentJets, beam in _currentBeam)
     198      _currentJets = _measureFunction->get_partition(inputJets,_currentAxes,&_currentBeam);
     199     
     200      // Find tau value and store information
     201      _current_tau_components = _measureFunction->result_from_partition(_currentJets, _currentAxes,&_currentBeam);  // sets current Tau Values
    212202   }
    213203   return _current_tau_components;
     
    219209// Each vector element is a list of ints corresponding to the indices in
    220210// particles of the particles belonging to that jet.
    221 // TODO:  Consider moving to MeasureFunction
    222 std::vector<std::list<int> > Njettiness::getPartition(const std::vector<fastjet::PseudoJet> & particles) {
    223    std::vector<std::list<int> > partitions(_currentAxes.size());
    224 
    225    for (unsigned i = 0; i < particles.size(); i++) {
    226      
    227       int j_min = -1;
    228       // find minimum distance
    229       double minR = std::numeric_limits<double>::max();  //large number
    230       for (unsigned j = 0; j < _currentAxes.size(); j++) {
    231          double tempR = _measureFunction->jet_distance_squared(particles[i],_currentAxes[j]); // delta R distance
    232          if (tempR < minR) {
    233             minR = tempR;
    234             j_min = j;
    235          }
    236       }
    237       if (_measureFunction->do_cluster(particles[i],_currentAxes[j_min])) partitions[j_min].push_back(i);
    238    }
    239    return partitions;
    240 }
    241 
    242 // Having found axes, assign each particle in particles to an axis, and return a set of jets.
    243 // Each jet is the sum of particles closest to an axis (Njet = Naxes).
    244 // TODO:  Consider moving to MeasureFunction
    245 std::vector<fastjet::PseudoJet> Njettiness::getJets(const std::vector<fastjet::PseudoJet> & particles) {
    246    
    247    std::vector<fastjet::PseudoJet> jets(_currentAxes.size());
    248 
    249    std::vector<std::list<int> > partition = getPartition(particles);
    250    for (unsigned j = 0; j < partition.size(); ++j) {
    251       std::list<int>::const_iterator it, itE;
    252       for (it = partition[j].begin(), itE = partition[j].end(); it != itE; ++it) {
    253          jets[j] += particles[*it];
    254       }
    255    }
    256    return jets;
    257 }
    258 
     211std::vector<std::list<int> > Njettiness::getPartitionList(const std::vector<fastjet::PseudoJet> & particles) const {
     212   // core code is in MeasureFunction
     213   return _measureFunction->get_partition_list(particles,_currentAxes);
     214}
     215
     216   
    259217} // namespace contrib
    260218
  • external/fastjet/contribs/Nsubjettiness/Njettiness.hh

    rba7fc1e r37deb3b  
    55//  Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason
    66//
     7//  $Id: Njettiness.hh 670 2014-06-06 01:24:42Z jthaler $
    78//----------------------------------------------------------------------
    89// This file is part of FastJet contrib.
     
    2526#define __FASTJET_CONTRIB_NJETTINESS_HH__
    2627
     28
    2729#include "MeasureFunction.hh"
    2830#include "AxesFinder.hh"
     31#include "NjettinessDefinition.hh"
    2932
    3033#include "fastjet/PseudoJet.hh"
     34#include "fastjet/SharedPtr.hh"
     35#include <fastjet/LimitedWarning.hh>
     36
    3137#include <cmath>
    3238#include <vector>
    3339#include <list>
    3440
    35 
    3641FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
    3742
    3843namespace contrib {
    39 
     44   
    4045///////
    4146//
     
    5459   
    5560   // The various axes choices available to the user
     61   // It is recommended to use AxesDefinition instead of these.
    5662   enum AxesMode {
    5763      kt_axes,             // exclusive kt axes
     
    7884   // "normalized_cutoff_measure" was the default in v1.0 of Nsubjettiness
    7985   // "unnormalized_measure" is now the recommended default usage
     86   // But it is recommended to use MeasureDefinition instead of these.
    8087   enum MeasureMode {
    8188      normalized_measure,           //default normalized measure
     
    8794   };
    8895
    89 private:
    90    // The chosen axes/measure modes
    91    AxesFinder* _axesFinder;  // The chosen axes
    92    MeasureFunction* _measureFunction; // The chosen measure
     96   // Main constructor that uses AxesMode and MeasureDefinition to specify measure
     97   // Unlike Nsubjettiness or NjettinessPlugin, the value N is not chosen
     98   Njettiness(const AxesDefinition & axes_def, const MeasureDefinition & measure_def);
    9399
    94    // Enum information so functions can specify output based on specific options, primarily for setAxes
    95    AxesMode _current_axes_mode;
    96    MeasureMode _current_measure_mode;
    97    
    98    // Information about the current information
    99    TauComponents _current_tau_components; //automatically set to have components of 0; these values will be set by the getTau function call
    100    std::vector<fastjet::PseudoJet> _currentAxes;
    101    std::vector<fastjet::PseudoJet> _seedAxes; // axes used prior to minimization (if applicable)
    102    
    103    // Needed for compilation of non C++11 users
    104    bool isnan(double para) { return para != para; }
     100   // Intermediate constructor (needed to enable v1.0.3 backwards compatibility?)
     101   Njettiness(AxesMode axes_mode, const MeasureDefinition & measure_def);
    105102
    106    // Helpful function to check to make sure input has correct number of parameters
    107    bool correctParameterCount(int n, double para1, double para2, double para3, double para4){
    108       int numpara;
    109       if (!isnan(para1) && !isnan(para2) && !isnan(para3) && !isnan(para4)) numpara = 4;
    110       else if (!isnan(para1) && !isnan(para2) && !isnan(para3) && isnan(para4)) numpara = 3;
    111       else if (!isnan(para1) && !isnan(para2) && isnan(para3) && isnan(para4)) numpara = 2;
    112       else if (!isnan(para1) && isnan(para2) && isnan(para3) && isnan(para4)) numpara = 1;
    113       else numpara = 0;
    114       return n == numpara;
     103   // Alternative constructor which takes axes/measure information as enums with measure parameters
     104   // This version is not recommended
     105   Njettiness(AxesMode axes_mode,
     106              MeasureMode measure_mode,
     107              int num_para,
     108              double para1 = std::numeric_limits<double>::quiet_NaN(),
     109              double para2 = std::numeric_limits<double>::quiet_NaN(),
     110              double para3 = std::numeric_limits<double>::quiet_NaN())
     111   : _axes_def(createAxesDef(axes_mode)), _measure_def(createMeasureDef(measure_mode, num_para, para1, para2, para3)) {
     112      setMeasureFunctionAndAxesFinder();  // call helper function to do the hard work
    115113   }
    116114
    117    // Helper function to set onepass_axes depending on input measure_mode and startingFinder
    118    void setOnePassAxesFinder(MeasureMode measure_mode, AxesFinder* startingFinder, double para1, double Rcutoff);
    119  
    120    // created separate function to set MeasureFunction and AxesFinder in order to keep constructor cleaner.
    121    void setMeasureFunctionandAxesFinder(AxesMode axes_mode, MeasureMode measure_mode, double para1, double para2, double para3, double para4);
    122 
    123 public:
    124 
    125 
    126    // Main constructor which takes axes/measure information, and possible parameters.
    127    // Unlike Nsubjettiness or NjettinessPlugin, the value N is not chosen
    128    Njettiness(AxesMode axes_mode,
    129               MeasureMode measure_mode,
    130               double para1 = NAN,
    131               double para2 = NAN,
    132               double para3 = NAN,
    133               double para4 = NAN)
    134    : _current_axes_mode(axes_mode),
    135    _current_measure_mode(measure_mode) {
    136       setMeasureFunctionandAxesFinder(axes_mode, measure_mode, para1, para2, para3, para4);  // call helper function to do the hard work
    137    }
    138 
    139    ~Njettiness() {
    140       // clean house
    141       delete _measureFunction;
    142       delete _axesFinder;
    143    }
     115   // destructor
     116   ~Njettiness() {};
    144117   
    145118   // setAxes for Manual mode
    146    void setAxes(std::vector<fastjet::PseudoJet> myAxes);
     119   void setAxes(const std::vector<fastjet::PseudoJet> & myAxes);
    147120   
    148121   // Calculates and returns all TauComponents that user would want.
    149122   // This information is stored in _current_tau_components for later access as well.
    150    TauComponents getTauComponents(unsigned n_jets, const std::vector<fastjet::PseudoJet> & inputJets);
     123   TauComponents getTauComponents(unsigned n_jets, const std::vector<fastjet::PseudoJet> & inputJets) const;
    151124
    152125   // Calculates the value of N-subjettiness,
    153126   // but only returns the tau value from _current_tau_components
    154    double getTau(unsigned n_jets, const std::vector<fastjet::PseudoJet> & inputJets) {
     127   double getTau(unsigned n_jets, const std::vector<fastjet::PseudoJet> & inputJets) const {
    155128      return getTauComponents(n_jets, inputJets).tau();
    156129   }
    157    
    158    // returns enum information
    159    MeasureMode currentMeasureMode() { return _current_measure_mode;}
    160    AxesMode currentAxesMode() { return _current_axes_mode;}
    161130
    162131   // Return all relevant information about tau components
    163    TauComponents currentTauComponents() {return _current_tau_components;}
    164    
     132   TauComponents currentTauComponents() const {return _current_tau_components;}
    165133   // Return axes found by getTauComponents.
    166    std::vector<fastjet::PseudoJet> currentAxes() { return _currentAxes;}
     134   std::vector<fastjet::PseudoJet> currentAxes() const { return _currentAxes;}
    167135   // Return seedAxes used if onepass minimization (otherwise, same as currentAxes)
    168    std::vector<fastjet::PseudoJet> seedAxes() { return _seedAxes;}
     136   std::vector<fastjet::PseudoJet> seedAxes() const { return _seedAxes;}
     137   // Return jet partition found by getTauComponents.
     138   std::vector<fastjet::PseudoJet> currentJets() const {return _currentJets;}
     139   // Return beam partition found by getTauComponents.
     140   fastjet::PseudoJet currentBeam() const {return _currentBeam;}
    169141   
    170142   // partition inputs by Voronoi (each vector stores indices corresponding to inputJets)
    171    std::vector<std::list<int> > getPartition(const std::vector<fastjet::PseudoJet> & inputJets);
     143   std::vector<std::list<int> > getPartitionList(const std::vector<fastjet::PseudoJet> & inputJets) const;
    172144
    173    // partition inputs by Voronoi
    174    std::vector<fastjet::PseudoJet> getJets(const std::vector<fastjet::PseudoJet> & inputJets);
     145private:
     146   
     147   // Information about Axes and Measures to be Used
     148   // Implemented as SharedPtrs to avoid memory management headaches
     149   SharedPtr<const AxesDefinition> _axes_def;
     150   SharedPtr<const MeasureDefinition> _measure_def;
     151   
     152   // The chosen axes/measure mode workers
     153   // Implemented as SharedPtrs to avoid memory management headaches
     154   // TODO: make into a SharedPtr<const AxesFinder>?
     155   SharedPtr<MeasureFunction> _measureFunction;  // The chosen measure
     156   SharedPtr<AxesFinder> _startingAxesFinder;    // The initial axes finder
     157   SharedPtr<AxesFinder> _finishingAxesFinder;   // A possible minimization step
     158   
     159   // Information about the current information
     160   // Defined as mutables, so user should be aware that these change when getTau is called.
     161   mutable TauComponents _current_tau_components; //automatically set to have components of 0; these values will be set by the getTau function call
     162   mutable std::vector<fastjet::PseudoJet> _currentAxes; //axes found after minimization
     163   mutable std::vector<fastjet::PseudoJet> _seedAxes; // axes used prior to minimization (if applicable)
     164   mutable std::vector<fastjet::PseudoJet> _currentJets; //partitioning information
     165   mutable fastjet::PseudoJet _currentBeam; //return beam, if requested
     166   
     167   // created separate function to set MeasureFunction and AxesFinder in order to keep constructor cleaner.
     168   void setMeasureFunctionAndAxesFinder();
     169   
     170   // Convert old style enums into new style MeasureDefinition
     171   AxesDefinition* createAxesDef(AxesMode axes_mode) const;
     172   
     173   // Convert old style enums into new style MeasureDefinition
     174   MeasureDefinition* createMeasureDef(MeasureMode measure_mode, int num_para, double para1, double para2, double para3) const;
    175175
    176176};
    177 
     177   
    178178} // namespace contrib
    179179
  • external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.cc

    rba7fc1e r37deb3b  
    55//  Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason
    66//
     7//  $Id: NjettinessPlugin.cc 663 2014-06-03 21:26:41Z jthaler $
    78//----------------------------------------------------------------------
    89// This file is part of FastJet contrib.
     
    2930
    3031
    31 // Constructor with same arguments as Nsubjettiness.
    32 NjettinessPlugin::NjettinessPlugin(int N, Njettiness::AxesMode axes_mode, Njettiness::MeasureMode measure_mode, double para1, double para2, double para3, double para4)
    33   : _N(N), _njettinessFinder(axes_mode, measure_mode, para1, para2, para3, para4) {}
    34 
    35 // Old constructor for compatibility
    36 NjettinessPlugin::NjettinessPlugin(int N, Njettiness::AxesMode mode, double beta, double R0, double Rcutoff)
    37    : _N(N), _njettinessFinder(mode, Njettiness::normalized_cutoff_measure, beta, R0, Rcutoff) {}
    3832
    3933std::string NjettinessPlugin::description() const {return "N-jettiness jet finder";}
    4034
     35
    4136// Clusters the particles according to the Njettiness jet algorithm
    42 // TODO: this code should be revisited to see if if can be made more clear.
     37// Apologies for the complication with this code, but we need to make
     38// a fake jet clustering tree.  The partitioning is done by getPartitionList
    4339void NjettinessPlugin::run_clustering(ClusterSequence& cs) const
    4440{
    4541   std::vector<fastjet::PseudoJet> particles = cs.jets();
     42
     43   // HACK: remove area information from particles (in case this is called by
     44   // a ClusterSequenceArea.  Will be fixed in a future FastJet release)
     45   for (unsigned i = 0; i < particles.size(); i++) {
     46      particles[i].set_structure_shared_ptr(SharedPtr<PseudoJetStructureBase>());
     47   }
     48   
     49   
    4650   _njettinessFinder.getTau(_N, particles);
    47    std::vector<std::list<int> > partition = _njettinessFinder.getPartition(particles);
     51
     52   std::vector<std::list<int> > partition = _njettinessFinder.getPartitionList(particles);
    4853
    4954   std::vector<fastjet::PseudoJet> jet_indices_for_extras;
    5055
    5156   // output clusterings for each jet
    52    for (size_t i = 0; i < partition.size(); ++i) {
     57   for (size_t i0 = 0; i0 < partition.size(); ++i0) {
     58      size_t i = partition.size() - 1 - i0; // reversed order of reading to match axes order
    5359      std::list<int>& indices = partition[i];
    5460      if (indices.size() == 0) continue;
     
    7076   }
    7177
     78   //HACK:  Re-reverse order of reading to match CS order
     79   reverse(jet_indices_for_extras.begin(),jet_indices_for_extras.end());
     80
    7281   NjettinessExtras * extras = new NjettinessExtras(_njettinessFinder.currentTauComponents(),jet_indices_for_extras,_njettinessFinder.currentAxes());
    7382   cs.plugin_associate_extras(std::auto_ptr<ClusterSequence::Extras>(extras));
  • external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.hh

    rba7fc1e r37deb3b  
    1 // $Id$
    2 //
    31//  Nsubjettiness Package
    42//  Questions/Comments?  jthaler@jthaler.net
     
    75//  Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason
    86//
     7//  $Id: NjettinessPlugin.hh 671 2014-06-10 17:47:52Z jthaler $
    98//----------------------------------------------------------------------
    109// This file is part of FastJet contrib.
     
    4948// to similar information
    5049class NjettinessExtras : public ClusterSequence::Extras {
    51    private:
    52    
    53       TauComponents _tau_components;
    54       std::vector<fastjet::PseudoJet> _jets;
    55       std::vector<fastjet::PseudoJet> _axes;
    56      
    57       int labelOf(const fastjet::PseudoJet& jet) const {
    58          int thisJet = -1;
    59          for (unsigned int i = 0; i < _jets.size(); i++) {
    60             if (_jets[i].cluster_hist_index() == jet.cluster_hist_index()) {
    61                thisJet = i;
    62                break;
    63             }
    64          }
    65          return thisJet;
    66       }
    67      
     50   
    6851   public:
    6952      NjettinessExtras(TauComponents tau_components, std::vector<fastjet::PseudoJet> jets, std::vector<fastjet::PseudoJet> axes) : _tau_components(tau_components), _jets(jets), _axes(axes) {}
     
    7457      std::vector<fastjet::PseudoJet> axes() const {return _axes;}
    7558     
    76       double totalTau(const fastjet::PseudoJet& jet) const {
     59      double totalTau(const fastjet::PseudoJet& /*jet*/) const {
    7760         return _tau_components.tau();
    7861      }
     62     
    7963      double subTau(const fastjet::PseudoJet& jet) const {
    80          if (labelOf(jet) == -1) return NAN;
     64         if (labelOf(jet) == -1) return std::numeric_limits<double>::quiet_NaN(); // nonsense
    8165         return _tau_components.jet_pieces()[labelOf(jet)];
    8266      }
     
    9377         return (labelOf(jet) >= 0);
    9478      }
    95 
     79   
     80private:
     81   
     82   TauComponents _tau_components;
     83   std::vector<fastjet::PseudoJet> _jets;
     84   std::vector<fastjet::PseudoJet> _axes;
     85   
     86   int labelOf(const fastjet::PseudoJet& jet) const {
     87      int thisJet = -1;
     88      for (unsigned int i = 0; i < _jets.size(); i++) {
     89         if (_jets[i].cluster_hist_index() == jet.cluster_hist_index()) {
     90            thisJet = i;
     91            break;
     92         }
     93      }
     94      return thisJet;
     95   }
    9696};
    9797
     
    122122 * onepass_wta_kt_axes  : one-pass minimization seeded by wta_kt
    123123 *
    124  * For the unnormalized_measure, N-jettiness is defined as:
     124 * For the UnnormalizedMeasure(beta), N-jettiness is defined as:
    125125 *
    126126 * tau_N = Sum_{all particles i} p_T^i min((DR_i1)^beta, (DR_i2)^beta, ...)
     
    129129 *   and jet j.
    130130 *
    131  * The normalized_meausure include an extra parameter R0, and the various cutoff
     131 * The NormalizedMeausure include an extra parameter R0, and the various cutoff
    132132 * measures include an Rcutoff, which effectively defines an angular cutoff
    133133 * similar in effect to a cone-jet radius.
     
    138138public:
    139139
    140    NjettinessPlugin(int N,
    141                     Njettiness::AxesMode axes_mode,
    142                     Njettiness::MeasureMode measure_mode,
    143                     double para1 = NAN,
    144                     double para2 = NAN,
    145                     double para3 = NAN,
    146                     double para4 = NAN);
     140   // Constructor with same arguments as Nsubjettiness.
     141   NjettinessPlugin(int N,
     142                    const AxesDefinition & axes_def,
     143                    const MeasureDefinition & measure_def)
     144   : _njettinessFinder(axes_def, measure_def), _N(N) {}
     145   
     146   
     147   // Alternative constructors that define the measure via enums and parameters
     148   // These constructors are likely be removed
     149   NjettinessPlugin(int N,
     150                 Njettiness::AxesMode axes_mode,
     151                 Njettiness::MeasureMode measure_mode)
     152   : _njettinessFinder(axes_mode, measure_mode, 0), _N(N) {}
     153   
     154   
     155   NjettinessPlugin(int N,
     156                 Njettiness::AxesMode axes_mode,
     157                 Njettiness::MeasureMode measure_mode,
     158                 double para1)
     159   : _njettinessFinder(axes_mode, measure_mode, 1, para1), _N(N) {}
     160   
     161   
     162   NjettinessPlugin(int N,
     163                 Njettiness::AxesMode axes_mode,
     164                 Njettiness::MeasureMode measure_mode,
     165                 double para1,
     166                 double para2)
     167   : _njettinessFinder(axes_mode, measure_mode, 2, para1, para2), _N(N) {}
     168   
     169   
     170   NjettinessPlugin(int N,
     171                 Njettiness::AxesMode axes_mode,
     172                 Njettiness::MeasureMode measure_mode,
     173                 double para1,
     174                 double para2,
     175                 double para3)
     176   : _njettinessFinder(axes_mode, measure_mode, 3, para1, para2, para3), _N(N) {}
     177
    147178
    148179   // Old constructor for backwards compatibility with v1.0,
    149    // where normalized_cutoff_measure was the only option
     180   // where NormalizedCutoffMeasure was the only option
    150181   NjettinessPlugin(int N,
    151182                    Njettiness::AxesMode mode,
    152183                    double beta,
    153184                    double R0,
    154                     double Rcutoff=std::numeric_limits<double>::max());
     185                    double Rcutoff=std::numeric_limits<double>::max())
     186   : _njettinessFinder(mode, NormalizedCutoffMeasure(beta, R0, Rcutoff)), _N(N) {}
     187
    155188
    156189
     
    164197private:
    165198
     199   Njettiness _njettinessFinder;
    166200   int _N;
    167    mutable Njettiness _njettinessFinder; // TODO:  should muck with this so run_clustering can be const without this mutable
    168201
    169202};
  • external/fastjet/contribs/Nsubjettiness/Nsubjettiness.cc

    rba7fc1e r37deb3b  
    55//  Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason
    66//
     7//  $Id: Nsubjettiness.cc 597 2014-04-16 23:07:55Z jthaler $
    78//----------------------------------------------------------------------
    89// This file is part of FastJet contrib.
  • external/fastjet/contribs/Nsubjettiness/Nsubjettiness.hh

    rba7fc1e r37deb3b  
    55//  Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason
    66//
     7//  $Id: Nsubjettiness.hh 670 2014-06-06 01:24:42Z jthaler $
    78//----------------------------------------------------------------------
    89// This file is part of FastJet contrib.
     
    3233#include <string>
    3334#include <climits>
    34 
    3535
    3636FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
     
    4949public:
    5050
    51    // Main constructor, which takes N, axes/measure modes,
    52    // and up to four parameters for parameters (i.e. beta, Rcutoff, etc depending on measure)
     51   
     52   // Main constructor, which takes N, the AxesDefiniation, and the MeasureDefinition.
     53   // The Definitions are given in NjettinessDefinition.hh
     54   //
     55   // The recommended AxesDefinitions are (more are available as listed in the README
     56   // and defined in NjettinessDefinition.hh):
     57   //   KT_Axes             : exclusive kt axes
     58   //   WTA_KT_Axes         : exclusive kt with winner-take-all recombination
     59   //   OnePass_KT_Axes     : one-pass minimization from kt starting point
     60   //   OnePass_WTA_KT_Axes : one-pass min. from wta_kt starting point
     61   //
     62   // The recommended measure definitions are (with the corresponding parameters)
     63   //   NormalizedMeasure(beta,R0)
     64   //      :  This was the original N-subjettiness measure (dimensionless)
     65   //   UnnormalizedMeasure(beta)
     66   //      :  This is the new recommended default, same as above but without
     67   //      :  the normalization factor, and hence has units of GeV
     68   //   NormalizedCutoffMeasure(beta,R0,Rcutoff)
     69   //      :  Same as normalized_measure, but cuts off at Rcutoff
     70   //   UnnormalizedCutoffMeasure(beta,Rcutoff)
     71   //      :  Same as unnormalized_measure, but cuts off at Rcutoff
     72   Nsubjettiness(int N,
     73                 const AxesDefinition& axes_def,
     74                 const MeasureDefinition& measure_def)
     75   : _njettinessFinder(axes_def,measure_def), _N(N) {}
     76   
     77   
     78   // Alternative constructors that define the measure via enums and parameters
     79   // These constructors are likely be removed
     80   // Zero parameter arguments
     81   // (Currently, no measure uses this)
     82   Nsubjettiness(int N,
     83                 Njettiness::AxesMode axes_mode,
     84                 Njettiness::MeasureMode measure_mode)
     85   : _njettinessFinder(axes_mode, measure_mode, 0), _N(N) {}
     86
     87   // One parameter argument
     88   // (for unnormalized_measure, para1=beta)
    5389   Nsubjettiness(int N,
    5490                 Njettiness::AxesMode axes_mode,
    5591                 Njettiness::MeasureMode measure_mode,
    56                  double para1 = NAN,
    57                  double para2 = NAN,
    58                  double para3 = NAN,
    59                  double para4 = NAN)
    60    : _njettinessFinder(axes_mode, measure_mode, para1, para2, para3, para4), _N(N) {}
     92                 double para1)
     93   : _njettinessFinder(axes_mode, measure_mode, 1, para1), _N(N) {}
     94
     95   // Two parameter arguments
     96   // (for normalized_measure, para1=beta, para2=R0)
     97   // (for unnormalized_cutoff_measure, para1=beta, para2=Rcutoff)
     98   Nsubjettiness(int N,
     99                 Njettiness::AxesMode axes_mode,
     100                 Njettiness::MeasureMode measure_mode,
     101                 double para1,
     102                 double para2)
     103   : _njettinessFinder(axes_mode, measure_mode, 2, para1, para2), _N(N) {}
     104
     105   // Three parameter arguments
     106   // (for unnormalized_cutoff_measure, para1=beta, para2=R0, para3=Rcutoff)
     107   Nsubjettiness(int N,
     108                 Njettiness::AxesMode axes_mode,
     109                 Njettiness::MeasureMode measure_mode,
     110                 double para1,
     111                 double para2,
     112                 double para3)
     113   : _njettinessFinder(axes_mode, measure_mode, 3, para1, para2, para3), _N(N) {}
    61114
    62115   // Old constructor for backwards compatibility with v1.0,
     
    67120                 double R0,
    68121                 double Rcutoff=std::numeric_limits<double>::max())
    69    : _njettinessFinder(axes_mode, Njettiness::normalized_cutoff_measure, beta, R0, Rcutoff), _N(N) {}
    70 
    71 
     122   : _njettinessFinder(axes_mode, NormalizedCutoffMeasure(beta,R0,Rcutoff)), _N(N) {}
     123   
    72124   /// returns tau_N, measured on the constituents of this jet
    73125   double result(const PseudoJet& jet) const;
     
    86138   }
    87139   
     140   /// returns subjet regions found by result() calculation (these have valid constituents)
     141   /// Note that the axes and the subjets are not the same
     142   std::vector<fastjet::PseudoJet> currentSubjets() const {
     143      return _njettinessFinder.currentJets();
     144   }
     145
     146   /// returns components of tau_N without recalculating anything
     147   TauComponents currentTauComponents() const {
     148      return _njettinessFinder.currentTauComponents();
     149   }
     150   
    88151   // To set axes for manual use
    89    void setAxes(std::vector<fastjet::PseudoJet> myAxes) {
     152   void setAxes(const std::vector<fastjet::PseudoJet> & myAxes) {
    90153      // Cross check that manual axes are being used is in Njettiness
    91154        _njettinessFinder.setAxes(myAxes);
     
    95158private:
    96159   
    97    mutable Njettiness _njettinessFinder; // TODO:  should muck with this so result can be const without this mutable
     160   Njettiness _njettinessFinder; // TODO:  should muck with this so result can be const without this mutable
    98161   int _N;
    99162
     
    112175   NsubjettinessRatio(int N,
    113176                      int M,
     177                      const AxesDefinition & axes_def,
     178                      const MeasureDefinition & measure_def)
     179   : _nsub_numerator(N,axes_def,measure_def),
     180   _nsub_denominator(M,axes_def,measure_def) {}
     181   
     182   // Alternative constructor with enums and parameters
     183   // Again, likely to be removed
     184   NsubjettinessRatio(int N,
     185                      int M,
     186                      Njettiness::AxesMode axes_mode,
     187                      Njettiness::MeasureMode measure_mode)
     188   : _nsub_numerator(N, axes_mode, measure_mode),
     189   _nsub_denominator(M, axes_mode, measure_mode) {}
     190
     191   
     192   NsubjettinessRatio(int N,
     193                      int M,
    114194                      Njettiness::AxesMode axes_mode,
    115195                      Njettiness::MeasureMode measure_mode,
    116                       double para1 = NAN,
    117                       double para2 = NAN,
    118                       double para3 = NAN,
    119                       double para4 = NAN)
    120    : _nsub_numerator(N, axes_mode, measure_mode, para1, para2, para3, para4),
    121    _nsub_denominator(M, axes_mode, measure_mode, para1, para2, para3, para4) {}
    122 
    123    //returns tau_N/tau_M based off the input jet using result function from Nsubjettiness
     196                      double para1)
     197   : _nsub_numerator(N, axes_mode, measure_mode, para1),
     198   _nsub_denominator(M, axes_mode, measure_mode, para1) {}
     199
     200   NsubjettinessRatio(int N,
     201                      int M,
     202                      Njettiness::AxesMode axes_mode,
     203                      Njettiness::MeasureMode measure_mode,
     204                      double para1,
     205                      double para2)
     206   : _nsub_numerator(N, axes_mode, measure_mode, para1, para2),
     207   _nsub_denominator(M, axes_mode, measure_mode, para1, para2) {}
     208   
     209   NsubjettinessRatio(int N,
     210                      int M,
     211                      Njettiness::AxesMode axes_mode,
     212                      Njettiness::MeasureMode measure_mode,
     213                      double para1,
     214                      double para2,
     215                      double para3)
     216   : _nsub_numerator(N, axes_mode, measure_mode, para1, para2, para3),
     217   _nsub_denominator(M, axes_mode, measure_mode, para1, para2, para3) {}
     218
     219   //returns tau_N/tau_M based off the input jet using result function from Nsubjettiness
    124220   double result(const PseudoJet& jet) const;
    125221
  • external/fastjet/contribs/Nsubjettiness/VERSION

    rba7fc1e r37deb3b  
    1 1.1.0-beta4
     12.1.0
  • external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.cc

    rba7fc1e r37deb3b  
    55//  Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason
    66//
     7//  $Id: WinnerTakeAllRecombiner.cc 597 2014-04-16 23:07:55Z jthaler $
    78//----------------------------------------------------------------------
    89// This file is part of FastJet contrib.
     
    3334
    3435// recombine pa and pb by creating pab with energy of the sum of particle energies in the direction of the harder particle
    35 
    3636// updated recombiner to use more general form of a metric equal to E*(pT/E)^(alpha), which reduces to pT*cosh(rap)^(1-alpha)
    3737// alpha is specified by the user. The default is alpha = 1, which is the typical behavior. alpha = 2 provides a metric which more
  • external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.hh

    rba7fc1e r37deb3b  
    55//  Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason
    66//
     7//  $Id: WinnerTakeAllRecombiner.hh 670 2014-06-06 01:24:42Z jthaler $
    78//----------------------------------------------------------------------
    89// This file is part of FastJet contrib.
     
    5051   
    5152   /// recombine pa and pb and put result into pab
    52    virtual void recombine(const fastjet::PseudoJet & pa, const fastjet::PseudoJet & pb, fastjet::PseudoJet & pab) const;
     53   virtual void recombine(const fastjet::PseudoJet & pa,
     54                          const fastjet::PseudoJet & pb,
     55                          fastjet::PseudoJet & pab) const;
    5356
    5457private:
  • external/fastjet/internal/ClosestPair2D.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: ClosestPair2D.hh 2577 2011-09-13 15:11:38Z salam $
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: ClosestPair2D.hh 3433 2014-07-23 08:17:03Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __FASTJET_CLOSESTPAIR2D__HH__
  • external/fastjet/internal/ClosestPair2DBase.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: ClosestPair2DBase.hh 2577 2011-09-13 15:11:38Z salam $
     1//FJSTARTHEADER
     2// $Id: ClosestPair2DBase.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __FASTJET_CLOSESTPAIR2DBASE__HH__
  • external/fastjet/internal/ClusterSequence_N2.icc

    rba7fc1e r37deb3b  
    44#include "fastjet/ClusterSequence.hh"
    55
    6 //STARTHEADER
     6//FJSTARTHEADER
    77// $Id: ClusterSequence_N2.cc 1351 2009-01-09 18:03:03Z salam $
    88//
    9 // Copyright (c) 2005-2009, Matteo Cacciari, Gavin Salam and Gregory Soyez
     9// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    1010//
    1111//----------------------------------------------------------------------
     
    1818//
    1919//  The algorithms that underlie FastJet have required considerable
    20 //  development and are described in hep-ph/0512210. If you use
     20//  development. They are described in the original FastJet paper,
     21//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    2122//  FastJet as part of work towards a scientific publication, please
    22 //  include a citation to the FastJet paper.
     23//  quote the version you use and include a citation to the manual and
     24//  optionally also to hep-ph/0512210.
    2325//
    2426//  FastJet is distributed in the hope that it will be useful,
     
    2830//
    2931//  You should have received a copy of the GNU General Public License
    30 //  along with FastJet; if not, write to the Free Software
    31 //  Foundation, Inc.:
    32 //      59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
     32//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    3333//----------------------------------------------------------------------
    34 //ENDHEADER
     34//FJENDHEADER
    3535
    3636//----------------------------------------------------------------------
  • external/fastjet/internal/Dnn2piCylinder.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: Dnn2piCylinder.hh 2577 2011-09-13 15:11:38Z salam $
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: Dnn2piCylinder.hh 3442 2014-07-24 07:20:49Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
     
    7375  /// Returns the index of  the nearest neighbour of point labelled
    7476  /// by ii (assumes ii is valid)
    75   int NearestNeighbourIndex(const int & ii) const ;
     77  int NearestNeighbourIndex(const int ii) const ;
    7678
    7779  /// Returns the distance to the nearest neighbour of point labelled
    7880  /// by index ii (assumes ii is valid)
    79   double NearestNeighbourDistance(const int & ii) const ;
     81  double NearestNeighbourDistance(const int ii) const ;
    8082
    8183  /// Returns true iff the given index corresponds to a point that
    8284  /// exists in the DNN structure (meaning that it has been added, and
    8385  /// not removed in the meantime)
    84   bool Valid(const int & index) const;
     86  bool Valid(const int index) const;
    8587
    8688  void RemoveAndAddPoints(const std::vector<int> & indices_to_remove,
     
    216218/// initialised the class with instructions to ignore this problem the
    217219/// program will detect and ignore it, or crash.
    218 inline int Dnn2piCylinder::NearestNeighbourIndex(const int & current) const {
     220inline int Dnn2piCylinder::NearestNeighbourIndex(const int current) const {
    219221  int main_index = _mirror_info[current].main_index;
    220222  int mirror_index = _mirror_info[current].mirror_index;
     
    241243}
    242244
    243 inline double Dnn2piCylinder::NearestNeighbourDistance(const int & current) const {
     245inline double Dnn2piCylinder::NearestNeighbourDistance(const int current) const {
    244246  int main_index = _mirror_info[current].main_index;
    245247  int mirror_index = _mirror_info[current].mirror_index;
     
    256258}
    257259
    258 inline bool Dnn2piCylinder::Valid(const int & index) const {
     260inline bool Dnn2piCylinder::Valid(const int index) const {
    259261  return (_DNN->Valid(_mirror_info[index].main_index));
    260262}
  • external/fastjet/internal/Dnn3piCylinder.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: Dnn3piCylinder.hh 2577 2011-09-13 15:11:38Z salam $
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: Dnn3piCylinder.hh 3442 2014-07-24 07:20:49Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
     
    7072  /// Returns the index of  the nearest neighbour of point labelled
    7173  /// by ii (assumes ii is valid)
    72   int NearestNeighbourIndex(const int & ii) const ;
     74  int NearestNeighbourIndex(const int ii) const ;
    7375
    7476  /// Returns the distance to the nearest neighbour of point labelled
    7577  /// by index ii (assumes ii is valid)
    76   double NearestNeighbourDistance(const int & ii) const ;
     78  double NearestNeighbourDistance(const int ii) const ;
    7779
    7880  /// Returns true iff the given index corresponds to a point that
    7981  /// exists in the DNN structure (meaning that it has been added, and
    8082  /// not removed in the meantime)
    81   bool Valid(const int & index) const;
     83  bool Valid(const int index) const;
    8284
    8385  void RemoveAndAddPoints(const std::vector<int> & indices_to_remove,
     
    204206/// initialised the class with instructions to ignore this problem the
    205207/// program will detect and ignore it, or crash.
    206 inline int Dnn3piCylinder::NearestNeighbourIndex(const int & current) const {
     208inline int Dnn3piCylinder::NearestNeighbourIndex(const int current) const {
    207209  int main_index = _mirror_info[current].main_index;
    208210  int mirror_index = _mirror_info[current].mirror_index;
     
    229231}
    230232
    231 inline double Dnn3piCylinder::NearestNeighbourDistance(const int & current) const {
     233inline double Dnn3piCylinder::NearestNeighbourDistance(const int current) const {
    232234  int main_index = _mirror_info[current].main_index;
    233235  int mirror_index = _mirror_info[current].mirror_index;
     
    244246}
    245247
    246 inline bool Dnn3piCylinder::Valid(const int & index) const {
     248inline bool Dnn3piCylinder::Valid(const int index) const {
    247249  return (_DNN->Valid(_mirror_info[index].main_index));
    248250}
  • external/fastjet/internal/Dnn4piCylinder.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: Dnn4piCylinder.hh 2577 2011-09-13 15:11:38Z salam $
     1//FJSTARTHEADER
     2// $Id: Dnn4piCylinder.hh 3442 2014-07-24 07:20:49Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
     
    5759  /// Returns the index of  the nearest neighbour of point labelled
    5860  /// by ii (assumes ii is valid)
    59   int NearestNeighbourIndex(const int & ii) const ;
     61  int NearestNeighbourIndex(const int ii) const ;
    6062
    6163  /// Returns the distance to the nearest neighbour of point labelled
    6264  /// by index ii (assumes ii is valid)
    63   double NearestNeighbourDistance(const int & ii) const ;
     65  double NearestNeighbourDistance(const int ii) const ;
    6466
    6567  /// Returns true iff the given index corresponds to a point that
    6668  /// exists in the DNN structure (meaning that it has been added, and
    6769  /// not removed in the meantime)
    68   bool Valid(const int & index) const;
     70  bool Valid(const int index) const;
    6971
    7072  void RemoveAndAddPoints(const std::vector<int> & indices_to_remove,
     
    98100// functions defined above
    99101
    100 inline int Dnn4piCylinder::NearestNeighbourIndex(const int & current) const {
     102inline int Dnn4piCylinder::NearestNeighbourIndex(const int current) const {
    101103  return (_DNN1->NearestNeighbourDistance(current) <
    102104          _DNN2->NearestNeighbourDistance(current)) ?
     
    105107}
    106108
    107 inline double Dnn4piCylinder::NearestNeighbourDistance(const int & current) const {
     109inline double Dnn4piCylinder::NearestNeighbourDistance(const int current) const {
    108110  return (_DNN1->NearestNeighbourDistance(current) <
    109111          _DNN2->NearestNeighbourDistance(current)) ?
     
    112114}
    113115
    114 inline bool Dnn4piCylinder::Valid(const int & index) const {
     116inline bool Dnn4piCylinder::Valid(const int index) const {
    115117  return (_DNN1->Valid(index) && _DNN2->Valid(index));
    116118}
  • external/fastjet/internal/DnnPlane.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: DnnPlane.hh 2577 2011-09-13 15:11:38Z salam $
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: DnnPlane.hh 3442 2014-07-24 07:20:49Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
     
    4446/// class derived from DynamicNearestNeighbours that provides an
    4547/// implementation for the Euclidean plane
     48///
     49/// This class that uses CGAL Delaunay triangulation for most of the
     50/// work (it allows for easy and efficient removal and addition of
     51/// points and circulation over a point's neighbours). The treatment
     52/// of coincident points is not supported by CGAL and is implemented
     53/// according to the method specified in
     54/// issue-tracker/2012-02-CGAL-coincident/METHOD
    4655/// \endif
    4756class DnnPlane : public DynamicNearestNeighbours {
     
    5766  /// Returns the index of  the nearest neighbour of point labelled
    5867  /// by ii (assumes ii is valid)
    59   int NearestNeighbourIndex(const int & ii) const ;
     68  int NearestNeighbourIndex(const int ii) const ;
    6069
    6170  /// Returns the distance to the nearest neighbour of point labelled
    6271  /// by index ii (assumes ii is valid)
    63   double NearestNeighbourDistance(const int & ii) const ;
     72  double NearestNeighbourDistance(const int ii) const ;
    6473
    6574  /// Returns true iff the given index corresponds to a point that
    6675  /// exists in the DNN structure (meaning that it has been added, and
    6776  /// not removed in the meantime)
    68   bool Valid(const int & index) const;
     77  bool Valid(const int index) const;
    6978
    7079  void RemoveAndAddPoints(const std::vector<int> & indices_to_remove,
     
    8089  double phi(const int i) const;
    8190
    82  private:
     91private:
    8392
    8493  /// Structure containing a vertex_handle and cached information on
     
    8897    double NNdistance;
    8998    int NNindex;
     99    int coincidence;  // ==vertex->info.val() if no coincidence
     100                      // points to the coinciding SV in case of coincidence
    90101    // later on for cylinder put a second vertex?
    91102  };
     
    95106  bool _verbose;
    96107
    97   static const bool _crash_on_coincidence = true;
    98   //static const bool _crash_on_coincidence = false;
     108  //static const bool _crash_on_coincidence = true;
     109  static const bool _crash_on_coincidence = false;
    99110
    100111  Triangulation _TR; /// CGAL object for dealing with triangulations
     
    111122  /// Determines the index and distance of the nearest neighbour to
    112123  /// point j and puts the information into the _supervertex entry for j
    113   void _SetNearest(const int & j);
     124  void _SetNearest(const int j);
    114125
    115126  //----------------------------------------------------------------------
     
    123134  /// Note that j is NOT pushed onto indices_of_updated_neighbours --
    124135  /// if you want it there, put it there yourself.
    125   void _SetAndUpdateNearest(const int & j,
     136  void _SetAndUpdateNearest(const int j,
    126137                            std::vector<int> & indices_of_updated_neighbours);
    127138
    128139  /// given a vertex_handle returned by CGAL on insertion of a new
    129   /// points, crash if it turns out that it corresponds to a vertex
    130   /// that we already knew about (usually because two points coincide)
    131   void _CrashIfVertexPresent(const Vertex_handle & vertex,
    132                              const int & its_index);
    133 
     140  /// points, returns the coinciding vertex's value if it turns out
     141  /// that it corresponds to a vertex that we already knew about
     142  /// (usually because two points coincide)
     143  int _CheckIfVertexPresent(const Vertex_handle & vertex,
     144                            const int its_index);
     145
     146  //----------------------------------------------------------------------
     147  /// if the distance between 'pref' and 'candidate' is smaller (or
     148  /// equal) than the one between 'pref' and 'near', return true and
     149  /// set 'mindist' to that distance. Note that it is assumed that
     150  /// 'mindist' is the euclidian distance between 'pref' and 'near'
     151  ///
     152  /// Note that the 'near' point is passed through its vertex rather
     153  /// than as a point. This allows us to handle cases where we have no min
     154  /// yet (near is the infinite vertex)
     155  inline bool _is_closer_to(const Point &pref,
     156                            const Point &candidate,
     157                            const Vertex_handle &near,
     158                            double & dist,
     159                            double & mindist){
     160    dist = _euclid_distance(pref, candidate);
     161    return _is_closer_to_with_hint(pref, candidate, near, dist, mindist);
     162  }
     163
     164  /// same as '_is_closer_to' except that 'dist' already contains the
     165  /// distance between 'pref' and 'candidate'
     166  inline bool _is_closer_to_with_hint(const Point &pref,
     167                                      const Point &candidate,
     168                                      const Vertex_handle &near,
     169                                      const double & dist,
     170                                      double & mindist){
     171   
     172    // check if 'dist', the pre-computed distance between 'candidate'
     173    // and 'pref' is smaller than the distance between 'pref' and its
     174    // currently registered nearest neighbour 'near' (and update
     175    // things if it is)
     176    //
     177    // Interestingly enough, it has to be pointed out that the use of
     178    // 'abs' instead of 'std::abs' returns wrong results (apparently
     179    // ints without any compiler warning)
     180    //
     181    // The (near != NULL) test is there for one single reason: when
     182    // checking that a newly inserted point is not closer than a
     183    // previous NN, if that distance comparison involves a "nearly
     184    // degenerate" distance we need to access near->point. But
     185    // sometimes, in the course of RemoveAndAddPoints, its previous NN
     186    // has been deleted and its vertex (corresponding to 'near') set
     187    // to NULL. This is not a problem as all points having a deleted
     188    // point as NN will have their NN explicitly recomputed at the end
     189    // of RemoveAndAddPoints so here we should just make sure there is
     190    // no crash... that's done by checking (near != NULL)
     191    if ((std::abs(dist-mindist)<DISTANCE_FOR_CGAL_CHECKS) &&
     192        (near != NULL) &&
     193        (_euclid_distance(candidate, near->point())<DISTANCE_FOR_CGAL_CHECKS)){
     194      // we're in a situation where there might be a rounding issue,
     195      // use CGAL's distance computation to get it right
     196      //
     197      // Note that in the test right above,
     198      // (abs(dist-mindist)<1e-12) guarantees that the current
     199      // nearest point is not the infinite vertex and thus
     200      // nearest->point() is not ill-defined
     201      if (_verbose) std::cout << "using CGAL's distance ordering" << std::endl;
     202      if (CGAL::compare_distance_to_point(pref, candidate, near->point())!=CGAL::LARGER){
     203        mindist = dist;
     204        return true;
     205      }
     206    } else if (dist <= mindist) {
     207      // Note that the use of a <= in the above expression (instead of
     208      // a strict ordering <) is important in one case: when checking
     209      // if a new point is the new NN of one of the points in its
     210      // neighbourhood, in case of distances being ==, we are sure
     211      // that 'candidate' is in a cell adjacent to 'pref' while it may
     212      // no longer be the case for 'near'
     213      mindist = dist;
     214      return true;
     215    }
     216   
     217    return false;
     218  }
     219
     220  /// if a distance between a point and 2 others is smaller than this
     221  /// and the distance between the two points is also smaller than this
     222  /// then use CGAL to compare the distances.
     223  static const double DISTANCE_FOR_CGAL_CHECKS; 
     224 
    134225};
    135226
     
    138229// functions defined above
    139230
    140 inline int DnnPlane::NearestNeighbourIndex(const int & ii) const {
     231inline int DnnPlane::NearestNeighbourIndex(const int ii) const {
    141232  return _supervertex[ii].NNindex;}
    142233
    143 inline double DnnPlane::NearestNeighbourDistance(const int & ii) const {
     234inline double DnnPlane::NearestNeighbourDistance(const int ii) const {
    144235  return _supervertex[ii].NNdistance;}
    145236
    146 inline bool DnnPlane::Valid(const int & index) const {
     237inline bool DnnPlane::Valid(const int index) const {
    147238  if (index >= 0 && index < static_cast<int>(_supervertex.size())) {
    148239    return (_supervertex[index].vertex != NULL);} else {return false;} }
  • external/fastjet/internal/DynamicNearestNeighbours.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: DynamicNearestNeighbours.hh 2687 2011-11-14 11:17:51Z soyez $
     1//FJSTARTHEADER
     2// $Id: DynamicNearestNeighbours.hh 3619 2014-08-13 14:17:19Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
     
    3739#include<cassert>
    3840#include "fastjet/internal/numconsts.hh"
     41#include "fastjet/Error.hh"
    3942
    4043FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
     
    6871/// Nearest Neighbours code
    6972/// \endif
    70 class DnnError {
     73class DnnError : public Error {
    7174public:
    7275  // constructors
    73   DnnError() {;};
    74   DnnError(const std::string & message_in) {
    75     _message = message_in; std::cerr << message_in << std::endl;};
    76 
    77   std::string message() const {return _message;};
    78 
    79 private:
    80   std::string _message;
     76  //DnnError() {}
     77  DnnError(const std::string & message_in) : Error(message_in) {}
    8178};
    8279
     
    112109  /// Returns the index of the nearest neighbour of point labelled
    113110  /// by ii (assumes ii is valid)
    114   virtual int NearestNeighbourIndex(const int & ii) const = 0;
     111  virtual int NearestNeighbourIndex(const int ii) const = 0;
    115112
    116113  /// Returns the distance to the nearest neighbour of point labelled
    117114  /// by index ii (assumes ii is valid)
    118   virtual double NearestNeighbourDistance(const int & ii) const = 0;
     115  virtual double NearestNeighbourDistance(const int ii) const = 0;
    119116
    120117  /// Returns true iff the given index corresponds to a point that
    121118  /// exists in the DNN structure (meaning that it has been added, and
    122119  /// not removed in the meantime)
    123   virtual bool Valid(const int & index) const = 0;
     120  virtual bool Valid(const int index) const = 0;
    124121
    125122  /// remove the points labelled by the std::vector indices_to_remove, and
     
    141138  /// Remove the point labelled by index and return the list of
    142139  /// points whose nearest neighbours have changed in the process
    143   inline void RemovePoint (const int & index,
     140  inline void RemovePoint (const int index,
    144141                           std::vector<int> & indices_of_updated_neighbours) {
    145142    std::vector<int> indices_added;
     
    158155  /// point).
    159156  inline void RemoveCombinedAddCombination(
    160                         const int & index1, const int & index2,
     157                        const int index1, const int index2,
    161158                        const EtaPhi & newpoint,
    162159                        int & index3,
  • external/fastjet/internal/IsBase.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: IsBase.hh 3071 2013-04-01 12:52:46Z cacciari $
     1//FJSTARTHEADER
     2// $Id: IsBase.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __FASTJET_INTERNAL_IS_BASE_HH__
  • external/fastjet/internal/LimitedWarning.hh

    rba7fc1e r37deb3b  
    22#define __FASTJET_INTERNALLIMITEDWARNING_HH__
    33
    4 //STARTHEADER
    5 // $Id: LimitedWarning.hh 2577 2011-09-13 15:11:38Z salam $
     4//FJSTARTHEADER
     5// $Id: LimitedWarning.hh 3433 2014-07-23 08:17:03Z salam $
    66//
    7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234
  • external/fastjet/internal/MinHeap.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: MinHeap.hh 2577 2011-09-13 15:11:38Z salam $
     1//FJSTARTHEADER
     2// $Id: MinHeap.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __FASTJET_MINHEAP__HH__
     
    5052  /// expansion to a maximum size max_size;
    5153  MinHeap (const std::vector<double> & values, unsigned int max_size) :
    52     _heap(max_size) {_initialise(values);};
     54    _heap(max_size) {initialise(values);}
     55
     56  /// do the minimal setup for a MinHeap that can reach max_size;
     57  /// initialisation must be performed later with the actual values.
     58  MinHeap (unsigned int max_size) : _heap(max_size) {}
    5359
    5460  /// constructor in which the the maximum size is the size of the values array
    5561  MinHeap (const std::vector<double> & values) :
    56     _heap(values.size()) {_initialise(values);};
    57  
     62    _heap(values.size()) {initialise(values);}
     63
     64  /// initialise the heap with the supplied values. Should only be called if
     65  /// the constructor did not supply values.
     66  void initialise(const std::vector<double> & values);
     67
    5868  /// return the location of the minimal value on the heap
    5969  inline unsigned int minloc() const {
    60     return (_heap[0].minloc) - &(_heap[0]);};
     70    return (_heap[0].minloc) - &(_heap[0]);}
    6171 
    6272  /// return the minimal value on the heap
    63   inline double       minval() const {return _heap[0].minloc->value;};
     73  inline double       minval() const {return _heap[0].minloc->value;}
    6474
    65   inline double operator[](int i) const {return _heap[i].value;};
     75  inline double operator[](int i) const {return _heap[i].value;}
    6676
    6777  /// remove the value at the specified location (i.e. replace it with
     
    8292  std::vector<ValueLoc> _heap;
    8393
    84   void _initialise(const std::vector<double> & values);
    8594
    8695
  • external/fastjet/internal/SearchTree.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: SearchTree.hh 3107 2013-05-03 15:47:47Z salam $
     1//FJSTARTHEADER
     2// $Id: SearchTree.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
     
    188190public:
    189191
    190   // so that it can access out _node object;
     192  // so that it can access our _node object;
    191193  // note: "class U" needed for clang (v1.1 branches/release_27) compilation
    192   template<class U> friend class SearchTree<U>::const_circulator;
     194  // 2014-07-22: as reported by Torbjorn Sjostrand,
     195  // the next line was giving a warning with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
     196  // (dependent nested name specifier 'SearchTree<U>::' for friend class declaration is not supported)
     197  // Just commenting it out, things still seem to work; same with a template of type T
     198  //template<class U> friend class SearchTree<U>::const_circulator;
     199  friend class SearchTree<T>::const_circulator;
    193200  friend class SearchTree<T>;
    194201
  • external/fastjet/internal/Triangulation.hh

    rba7fc1e r37deb3b  
    33#define __FASTJET_TRIANGULATION__
    44
    5 //STARTHEADER
    6 // $Id: Triangulation.hh 2595 2011-09-23 09:05:04Z salam $
     5//FJSTARTHEADER
     6// $Id: Triangulation.hh 3433 2014-07-23 08:17:03Z salam $
    77//
    8 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     8// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    99//
    1010//----------------------------------------------------------------------
     
    1717//
    1818//  The algorithms that underlie FastJet have required considerable
    19 //  development and are described in hep-ph/0512210. If you use
     19//  development. They are described in the original FastJet paper,
     20//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    2021//  FastJet as part of work towards a scientific publication, please
    21 //  include a citation to the FastJet paper.
     22//  quote the version you use and include a citation to the manual and
     23//  optionally also to hep-ph/0512210.
    2224//
    2325//  FastJet is distributed in the hope that it will be useful,
     
    2931//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    3032//----------------------------------------------------------------------
    31 //ENDHEADER
     33//FJENDHEADER
    3234
    3335
  • external/fastjet/internal/Voronoi.hh

    rba7fc1e r37deb3b  
    22#define __FASTJET__VORONOI_H__
    33
    4 //STARTHEADER
    5 // $Id: Voronoi.hh 2686 2011-11-14 09:28:22Z soyez $
    6 //
    7 // Copyright (c) 1994 by AT&T Bell Laboratories (see below)
    8 //
     4//FJSTARTHEADER
     5// $Id: Voronoi.hh 3433 2014-07-23 08:17:03Z salam $
     6//
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    98//
    109//----------------------------------------------------------------------
    11 // This file is included as part of FastJet but was mostly written by
    12 // S. Fortune in C, put into C++ with memory management by S
    13 // O'Sullivan, and with further interface and memeory management
    14 // modifications by Gregory Soyez.
    15 //
    16 // Permission to use, copy, modify, and distribute this software for
    17 // any purpose without fee is hereby granted, provided that this
    18 // entire notice is included in all copies of any software which is or
    19 // includes a copy or modification of this software and in all copies
    20 // of the supporting documentation for such software. THIS SOFTWARE IS
    21 // BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY.
    22 // IN PARTICULAR, NEITHER THE AUTHORS NOR AT&T MAKE ANY REPRESENTATION
    23 // OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS
    24 // SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
    25 //
     10// This file is part of FastJet.
     11//
     12//  FastJet is free software; you can redistribute it and/or modify
     13//  it under the terms of the GNU General Public License as published by
     14//  the Free Software Foundation; either version 2 of the License, or
     15//  (at your option) any later version.
     16//
     17//  The algorithms that underlie FastJet have required considerable
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
     20//  FastJet as part of work towards a scientific publication, please
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
     23//
     24//  FastJet is distributed in the hope that it will be useful,
     25//  but WITHOUT ANY WARRANTY; without even the implied warranty of
     26//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     27//  GNU General Public License for more details.
     28//
     29//  You should have received a copy of the GNU General Public License
     30//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2631//----------------------------------------------------------------------
    27 //ENDHEADER
     32//FJENDHEADER
    2833
    2934
  • external/fastjet/internal/base.hh

    rba7fc1e r37deb3b  
    11
    2 //STARTHEADER
    3 // $Id: base.hh 2717 2011-11-17 14:15:46Z salam $
     2//FJSTARTHEADER
     3// $Id: base.hh 3433 2014-07-23 08:17:03Z salam $
    44//
    5 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     5// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    66//
    77//----------------------------------------------------------------------
     
    1414//
    1515//  The algorithms that underlie FastJet have required considerable
    16 //  development and are described in hep-ph/0512210. If you use
     16//  development. They are described in the original FastJet paper,
     17//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1718//  FastJet as part of work towards a scientific publication, please
    18 //  include a citation to the FastJet paper.
     19//  quote the version you use and include a citation to the manual and
     20//  optionally also to hep-ph/0512210.
    1921//
    2022//  FastJet is distributed in the hope that it will be useful,
     
    2628//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2729//----------------------------------------------------------------------
    28 //ENDHEADER
     30//FJENDHEADER
    2931
    3032#ifndef __FASTJET_FASTJET_BASE_HH__
  • external/fastjet/internal/numconsts.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: numconsts.hh 2577 2011-09-13 15:11:38Z salam $
     1//FJSTARTHEADER
     2// $Id: numconsts.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
  • external/fastjet/plugins/ATLASCone/ATLASConePlugin.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: ATLASConePlugin.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2007-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931// fastjet stuff
  • external/fastjet/plugins/ATLASCone/fastjet/ATLASConePlugin.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: ATLASConePlugin.hh 2758 2011-11-24 08:31:58Z soyez $
     1//FJSTARTHEADER
     2// $Id: ATLASConePlugin.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2007-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931// Note on the implementation:
  • external/fastjet/plugins/CDFCones/CDFJetCluPlugin.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: CDFJetCluPlugin.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/CDFJetCluPlugin.hh"
  • external/fastjet/plugins/CDFCones/CDFMidPointPlugin.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: CDFMidPointPlugin.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/CDFMidPointPlugin.hh"
  • external/fastjet/plugins/CDFCones/JetCluAlgorithm.cc

    rba7fc1e r37deb3b  
    1111// History of changes compared to the original JetCluAlgorithm.cc file
    1212//
     13// 2014-08-13 Matteo Cacciari and Gavin Salam
     14//        * commented out towers variable in JetCluAlgorithm::buildPreClusters
     15//          interface to avoid compiler warning
     16//
    1317// 2011-11-14  Gregory Soyez  <soyez@fastjet.fr>
    1418//
     
    5559}
    5660
    57 void JetCluAlgorithm::buildPreClusters(std::vector<Cluster>& seedTowers, std::vector<PhysicsTower>& towers,
     61// MC+GPS 2014-08-13, commented out the towers variable to avoid an
     62// unused variable warning
     63void JetCluAlgorithm::buildPreClusters(std::vector<Cluster>& seedTowers, std::vector<PhysicsTower>& /*towers*/,
    5864                                       std::vector<Cluster>& preClusters)
    5965{
  • external/fastjet/plugins/CDFCones/MidPointAlgorithm.cc

    rba7fc1e r37deb3b  
    1111// History of changes compared to the original MidPointAlgorithm.cc file
    1212//
     13// 2014-08-13 Matteo Cacciari and Gavin Salam
     14//        * changed a number of int -> unsigned (and in one case
     15//          added explicit conversion to int) to eliminate
     16//          long-standing compiler warnings
     17//
    1318// 2009-01-17  Gregory Soyez  <soyez@fastjet.fr>
    1419//
     
    6873  std::vector< std::vector<bool> > distanceOK;
    6974  distanceOK.resize(stableCones.size() - 1);
    70   for(int nCluster1 = 1; nCluster1 < stableCones.size(); nCluster1++){
     75  // MC+GPS 2014-08-13, replaced int with unsigned
     76  for(unsigned nCluster1 = 1; nCluster1 < stableCones.size(); nCluster1++){
    7177    distanceOK[nCluster1 - 1].resize(nCluster1);
    7278    double cluster1Rapidity = stableCones[nCluster1].fourVector.y();
    7379    double cluster1Phi      = stableCones[nCluster1].fourVector.phi();
    74     for(int nCluster2 = 0; nCluster2 < nCluster1; nCluster2++){
     80    // MC+GPS 2014-08-13, replaced int with unsigned
     81    for(unsigned nCluster2 = 0; nCluster2 < nCluster1; nCluster2++){
    7582      double cluster2Rapidity = stableCones[nCluster2].fourVector.y();
    7683      double cluster2Phi      = stableCones[nCluster2].fourVector.phi();
     
    94101  // Loop over all combinations. Calculate MidPoint. Make midPointClusters.
    95102  bool reduceConeSize = false;
    96   for(int iPair = 0; iPair < pairs.size(); iPair++){
     103  // MC+GPS 2014-08-13, replaced int with unsigned
     104  for(unsigned iPair = 0; iPair < pairs.size(); iPair++){
    97105    // Calculate rapidity, phi and pT of MidPoint.
    98106    LorentzVector midPoint(0,0,0,0);
    99     for(int iPairMember = 0; iPairMember < pairs[iPair].size(); iPairMember++)
     107    // MC+GPS 2014-08-13, replaced int with unsigned
     108    for(unsigned iPairMember = 0; iPairMember < pairs[iPair].size(); iPairMember++)
    100109      midPoint.add(stableCones[pairs[iPair][iPairMember]].fourVector);
    101110    iterateCone(midPoint.y(),midPoint.phi(),midPoint.pt(),towers,stableCones,reduceConeSize);
     
    174183  if(testPair.size())
    175184    nextClusterStart = testPair.back() + 1;
    176   for(int nextCluster = nextClusterStart; nextCluster <= distanceOK.size(); nextCluster++){
     185  // MC+GPS 2014-08-13, replaced int nextCluster with unsigned
     186  for(unsigned nextCluster = nextClusterStart; nextCluster <= distanceOK.size(); nextCluster++){
    177187    // Is new SeedCone less than 2*_coneRadius apart from all clusters in testPair?
    178188    bool addCluster = true;
    179     for(int iCluster = 0; iCluster < testPair.size() && addCluster; iCluster++)
     189    // MC+GPS 2014-08-13, replaced int iCluster with unsigned
     190    for(unsigned iCluster = 0; iCluster < testPair.size() && addCluster; iCluster++)
    180191      if(!distanceOK[nextCluster - 1][testPair[iCluster]])
    181192        addCluster = false;
     
    187198        pairs.push_back(testPair);
    188199      // If not bigger than allowed, find more clusters within 2*_coneRadius.
    189       if(testPair.size() < maxClustersInPair)
     200      // GPS+MC 2014-08-13, replaced testPair.size() with int(testPair.size())
     201      if(int(testPair.size()) < maxClustersInPair)
    190202        addClustersToPairs(testPair,pairs,distanceOK,maxClustersInPair);
    191203      // All combinations containing testPair found. Remove last element.
  • external/fastjet/plugins/CDFCones/fastjet/CDFJetCluPlugin.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: CDFJetCluPlugin.hh 2758 2011-11-24 08:31:58Z soyez $
     1//FJSTARTHEADER
     2// $Id: CDFJetCluPlugin.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __CDFJETCLUPLUGIN_HH__
  • external/fastjet/plugins/CDFCones/fastjet/CDFMidPointPlugin.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: CDFMidPointPlugin.hh 2758 2011-11-24 08:31:58Z soyez $
     1//FJSTARTHEADER
     2// $Id: CDFMidPointPlugin.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __CDFMIDPOINTPLUGIN_HH__
  • external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
    3 //
    4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    5 // Copyright (c) ????-????, CMS [for the iterative-cone code itself]
     1//FJSTARTHEADER
     2// $Id: CMSIterativeConePlugin.cc 1504 2009-04-10 13:39:48Z salam $
     3//
     4// Copyright (c) 2007-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    65//
    76//----------------------------------------------------------------------
    8 // This file is part of FastJet. It contains code that has been
    9 // obtained from the CMS collaboration, revision 1.14 of the
    10 // CMSIterativeConeAlgorithm.cc file in CMSSW, see
    11 //   http://cmssw.cvs.cern.ch/cgi-bin/cmssw.cgi/CMSSW/RecoJets/JetAlgorithms/src/CMSIterativeConeAlgorithm.cc?hideattic=0&revision=1.14&view=markup
    12 //
    13 // Permission has been granted by the CMS collaboration to release it
    14 // in FastJet under the terms of the GNU Public License(v2) (see the
    15 // COPYING file in the main FastJet directory for details).
    16 // Changes from the original file are listed below.
    17 //
    18 // FastJet is free software; you can redistribute it and/or modify
    19 // it under the terms of the GNU General Public License as published by
    20 // the Free Software Foundation; either version 2 of the License, or
    21 // (at your option) any later version.
    22 //
    23 // The algorithms that underlie FastJet have required considerable
    24 // development and are described in hep-ph/0512210. If you use
    25 // FastJet as part of work towards a scientific publication, please
    26 // include a citation to the FastJet paper.
    27 //
    28 // FastJet is distributed in the hope that it will be useful,
    29 // but WITHOUT ANY WARRANTY; without even the implied warranty of
    30 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    31 // GNU General Public License for more details.
    32 //
    33 // You should have received a copy of the GNU General Public License
    34 // along with FastJet. If not, see <http://www.gnu.org/licenses/>.
     7// This file is part of FastJet.
     8//
     9//  FastJet is free software; you can redistribute it and/or modify
     10//  it under the terms of the GNU General Public License as published by
     11//  the Free Software Foundation; either version 2 of the License, or
     12//  (at your option) any later version.
     13//
     14//  The algorithms that underlie FastJet have required considerable
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
     17//  FastJet as part of work towards a scientific publication, please
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
     20//
     21//  FastJet is distributed in the hope that it will be useful,
     22//  but WITHOUT ANY WARRANTY; without even the implied warranty of
     23//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     24//  GNU General Public License for more details.
     25//
     26//  You should have received a copy of the GNU General Public License
     27//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    3528//----------------------------------------------------------------------
    36 //ENDHEADER
     29//FJENDHEADER
    3730
    3831// List of changes compared to the original CMS code (revision 1.14 of
  • external/fastjet/plugins/CMSIterativeCone/fastjet/CMSIterativeConePlugin.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
     1//FJSTARTHEADER
    22// $Id: CMSIterativeConePlugin.hh 1508 2009-04-10 22:46:49Z soyez $
    33//
    4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2007-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __CMSITERATIVECONEPLUGIN_HH__
  • external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
    3 //
    4 // Copyright (c) 2009-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: D0RunIBaseConePlugin.cc 1779 2010-10-25 10:32:59Z soyez $
     3//
     4// Copyright (c) 2009-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931// D0 stuff
  • external/fastjet/plugins/D0RunICone/fastjet/D0RunIBaseConePlugin.hh

    rba7fc1e r37deb3b  
    22#define __D0RUNIBASECONEPLUGIN_HH__
    33
    4 //STARTHEADER
     4//FJSTARTHEADER
    55// $Id: D0RunIBaseConePlugin.hh 1778 2010-10-25 10:02:58Z soyez $
    66//
    7 // Copyright (c) 2009-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2009-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234#include "fastjet/JetDefinition.hh"
  • external/fastjet/plugins/D0RunICone/fastjet/D0RunIConePlugin.hh

    rba7fc1e r37deb3b  
    22#define __D0RUNICONEPLUGIN_HH__
    33
    4 //STARTHEADER
     4//FJSTARTHEADER
    55// $Id: D0RunIConePlugin.hh 1778 2010-10-25 10:02:58Z soyez $
    66//
    7 // Copyright (c) 2009-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2009-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
     34#include "fastjet/internal/base.hh" // namespace macros (include explicitly to help Doxygen)
    3235#include "D0RunIBaseConePlugin.hh"
    3336
  • external/fastjet/plugins/D0RunICone/fastjet/D0RunIpre96ConePlugin.hh

    rba7fc1e r37deb3b  
    22#define __D0RUNIPRE96CONEPLUGIN_HH__
    33
    4 //STARTHEADER
     4//FJSTARTHEADER
    55// $Id: D0RunIpre96ConePlugin.hh 1778 2010-10-25 10:02:58Z soyez $
    66//
    7 // Copyright (c) 2009-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2009-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
     34#include "fastjet/internal/base.hh" // namespace macros (include explicitly to help Doxygen)
    3235#include "D0RunIBaseConePlugin.hh"
    3336
  • external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: D0RunIIConePlugin.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/D0RunIIConePlugin.hh"
  • external/fastjet/plugins/D0RunIICone/ILConeAlgorithm.hpp

    rba7fc1e r37deb3b  
    4949//
    5050// 2012-06-12  Gregory Soyez  <soyez@fastjet.fr>
    51 //
    5251//        * Replaced addItem(...) by this->addItem(...) to allow
    5352//          compilation with gcc 4.7 which no longer performs
  • external/fastjet/plugins/D0RunIICone/fastjet/D0RunIIConePlugin.hh

    rba7fc1e r37deb3b  
    22#define __D0RUNIICONEPLUGIN_HH__
    33
    4 //STARTHEADER
    5 // $Id: D0RunIIConePlugin.hh 2761 2011-11-24 13:54:05Z soyez $
     4//FJSTARTHEADER
     5// $Id: D0RunIIConePlugin.hh 3433 2014-07-23 08:17:03Z salam $
    66//
    7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234#include "fastjet/JetDefinition.hh"
  • external/fastjet/plugins/EECambridge/EECambridgePlugin.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: EECambridgePlugin.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2007-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931// fastjet stuff
  • external/fastjet/plugins/EECambridge/fastjet/EECambridgePlugin.hh

    rba7fc1e r37deb3b  
    22#define __EECAMBRIDGEPLUGIN_HH__
    33
    4 //STARTHEADER
    5 // $Id: EECambridgePlugin.hh 2692 2011-11-14 16:27:44Z soyez $
     4//FJSTARTHEADER
     5// $Id: EECambridgePlugin.hh 3433 2014-07-23 08:17:03Z salam $
    66//
    7 // Copyright (c) 2009, Matteo Cacciari, Gavin Salam and Gregory Soyez
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234
     
    8284  virtual bool exclusive_sequence_meaningful() const {return true;}
    8385
     86  /// returns true because this plugin is intended for spherical
     87  /// geometries (i.e. it's an e+e- algorithm).
     88  virtual bool is_spherical() const {return true;}
     89
    8490private:
    8591  double _ycut;
  • external/fastjet/plugins/GridJet/GridJetPlugin.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
    3 //
    4 // Copyright (c) 2011, Matteo Cacciari, Gavin Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: GridJetPlugin.cc 2268 2011-06-20 15:12:26Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931// fastjet stuff
     
    4345                              double requested_grid_spacing,
    4446                              const JetDefinition & post_jet_def) :
     47#ifdef FASTJET_GRIDJET_USEFJGRID
     48  RectangularGrid(ymax, requested_grid_spacing), _post_jet_def(post_jet_def) {
     49}
     50#else
    4551  _ymin(-ymax), _ymax(ymax),
    4652  _requested_grid_spacing(requested_grid_spacing) ,
     
    4955  setup_grid();
    5056}
    51 
     57#endif
     58
     59#ifdef FASTJET_GRIDJET_USEFJGRID
     60GridJetPlugin::GridJetPlugin (const RectangularGrid & grid,
     61                              const JetDefinition & post_jet_def) :
     62  RectangularGrid(grid), _post_jet_def(post_jet_def) {
     63  if (!RectangularGrid::is_initialised())
     64    throw Error("attempt to construct GridJetPlugin with uninitialised RectangularGrid");
     65}
     66#endif // FASTJET_GRIDJET_USEFJGRID
     67
     68#ifndef FASTJET_GRIDJET_USEFJGRID
    5269void GridJetPlugin::setup_grid() {
    5370  // since we've exchanged the arguments of the constructor,
     
    6986}
    7087
    71 
    72 //----------------------------------------------------------------------
    73 string GridJetPlugin::description () const {
    74   ostringstream desc;
    75   desc << "GridJetPlugin plugin with ymax = " << _ymax << ", dy = " << _dy << ", dphi = " << _dphi << " (requested grid spacing was " << _requested_grid_spacing << ")";
    76   if (_post_jet_def.jet_algorithm() != undefined_jet_algorithm) {
    77     desc << ", followed by " << _post_jet_def.description();
    78   }
    79   return desc.str();
    80 }
    81 
    82 
    83 //----------------------------------------------------------------------
    84 double GridJetPlugin::R() const {return sqrt(_dy*_dphi/pi);}
    85 
    86 
    87 //----------------------------------------------------------------------
    88 int GridJetPlugin::igrid(const PseudoJet & p) const {
     88//----------------------------------------------------------------------
     89int GridJetPlugin::tile_index(const PseudoJet & p) const {
    8990  // directly taking int does not work for values between -1 and 0
    9091  // so use floor instead
     
    108109  return igrid_res;
    109110}
     111#endif // not FASTJET_GRIDJET_USEFJGRID
     112
     113
     114//----------------------------------------------------------------------
     115string GridJetPlugin::description () const {
     116  ostringstream desc;
     117  desc << "GridJetPlugin plugin with ";
     118#ifndef FASTJET_GRIDJET_USEFJGRID
     119  desc << "ymax = " << _ymax << ", dy = " << _dy << ", dphi = " << _dphi << " (requested grid spacing was " << _requested_grid_spacing << ")";
     120#else
     121  desc << RectangularGrid::description();
     122#endif
     123  if (_post_jet_def.jet_algorithm() != undefined_jet_algorithm) {
     124    desc << ", followed by " << _post_jet_def.description();
     125  }
     126  return desc.str();
     127}
     128
     129
     130//----------------------------------------------------------------------
     131double GridJetPlugin::R() const {return sqrt(drap()*dphi()/pi);}
    110132
    111133
     
    117139  //  * a number >= 0 will mean that particle indicated by the index
    118140  //    is currently the jet on the grid
    119   vector<int> grid(_ntotal, -1);
     141  vector<int> grid(n_tiles(), -1);
    120142 
    121143  int nparticles = cs.jets().size();
     
    126148  // combine particles with whatever is in the grid
    127149  for (int i = 0; i < nparticles; i++) {
    128     int igrd = igrid(cs.jets()[i]);
     150    int igrd = tile_index(cs.jets()[i]);
    129151    //cout << i << " " << cs.jets()[i].rap() << " " << cs.jets()[i].phi()
    130152    //   << " " << igrd << " " << grid.size() << " " << _ntotal << endl;
    131153    if (igrd < 0) continue;
    132     assert(igrd <= _ntotal);
     154    assert(igrd <= n_tiles());
    133155    if (grid[igrd] == -1) {
    134156      grid[igrd] = i; // jet index of initial particle i is i
     
    145167    // make the final jets via iB recombinations
    146168    for (unsigned igrd = 0; igrd < grid.size(); igrd++) {
    147       if (grid[igrd] != -1) cs.plugin_record_iB_recombination(grid[igrd],
    148                                                               dij_or_diB);
     169      if (grid[igrd] != -1 && tile_is_good(igrd))
     170                   cs.plugin_record_iB_recombination(grid[igrd], dij_or_diB);
    149171    }
    150172  } else {
  • external/fastjet/plugins/GridJet/fastjet/GridJetPlugin.hh

    rba7fc1e r37deb3b  
    1 #ifndef __GRIDJETPLUGIN_HH__
    2 #define __GRIDJETPLUGIN_HH__
     1#ifndef __FASTJET_GRIDJETPLUGIN_HH__
     2#define __FASTJET_GRIDJETPLUGIN_HH__
    33
    4 //STARTHEADER
     4//FJSTARTHEADER
    55// $Id: GridJetPlugin.hh 2267 2011-06-20 15:10:23Z salam $
    66//
    7 // Copyright (c) 2011, Matteo Cacciari, Gavin Salam and Gregory Soyez
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234
    3335#include "fastjet/JetDefinition.hh"
     36
     37// makes it easy to switch back and forth between use of
     38// RectangularGrid or not; this got enabled in FJ3.1
     39#define FASTJET_GRIDJET_USEFJGRID
     40
     41#ifdef FASTJET_GRIDJET_USEFJGRID
     42#include "fastjet/RectangularGrid.hh"
     43#endif
    3444
    3545FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
     
    4959/// but is rather provided for comparison purposes with the
    5060/// GridMedianBackgroundEstimator (which is even faster).
    51 class GridJetPlugin : public JetDefinition::Plugin {
     61class GridJetPlugin : public JetDefinition::Plugin
     62#ifdef FASTJET_GRIDJET_USEFJGRID
     63                                      , RectangularGrid
     64#endif
     65{
    5266public:
    53   /// Main constructor for the GridJetPlugin Plugin class.
     67  /// Basic constructor for the GridJetPlugin Plugin class.
    5468  ///
    5569  /// \param ymax           The maximal rapidity extent of the grid
     
    6276                 const JetDefinition & post_jet_def = JetDefinition());
    6377
    64   /// copy constructor
    65   GridJetPlugin (const GridJetPlugin & plugin) {
    66     *this = plugin;
    67   }
     78#ifdef FASTJET_GRIDJET_USEFJGRID
     79  /// Constructor for the GridJetPlugin Plugin class that allows
     80  /// full control over the underlying grid. New in FastJet 3.1.
     81  ///
     82  /// \param grid           The maximal rapidity extent of the grid
     83  /// \param post_jet_def   if present, and not == JetDefinition()
     84  ///                       (which has undefined_jet_algorithm), then
     85  ///                       run the post_jet_def on the result of the grid
     86  ///                       clustering.
     87  GridJetPlugin (const RectangularGrid & grid,
     88                 const JetDefinition & post_jet_def = JetDefinition());
     89#endif // FASTJET_GRIDJET_USEFJGRID
     90
     91 
     92
     93  // /// copy constructor
     94  // GridJetPlugin (const GridJetPlugin & plugin) {
     95  //   *this = plugin;
     96  // }
    6897
    6998  // the things that are required by base class
     
    75104  virtual double R() const;
    76105
     106  // As of FastJet 3.1 the following functions become available through
     107  // the underlying RectangularGrid class.
     108#ifndef FASTJET_GRIDJET_USEFJGRID
    77109  /// returns the actual rapidity spacing of the grid
    78110  double drap()   const {return _dy;}
     
    83115  /// returns the maximum rapidity of the grid
    84116  double rapmax() const {return _ymax;}
     117#endif
    85118
    86119private:
    87120
     121#ifndef FASTJET_GRIDJET_USEFJGRID
    88122  void setup_grid();
    89123
    90   int igrid(const PseudoJet & p) const;
     124  int n_tiles() const {return _ntotal;}
     125  int n_good_tiles() const {return _ntotal;}
     126
     127  int tile_index(const PseudoJet & p) const;
     128  bool tile_is_good(int /* itile */) const {return true;}
    91129
    92130  double _ymin, _ymax, _dy, _dphi, _requested_grid_spacing;
    93131  int _ny, _nphi, _ntotal;
     132#endif
    94133
    95134  JetDefinition _post_jet_def;
     
    99138FASTJET_END_NAMESPACE        // defined in fastjet/internal/base.hh
    100139
    101 #endif // __GRIDJETPLUGIN_HH__
     140#endif // __FASTJET_GRIDJETPLUGIN_HH__
    102141
  • external/fastjet/plugins/Jade/JadePlugin.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: JadePlugin.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2007-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931// fastjet stuff
  • external/fastjet/plugins/Jade/fastjet/JadePlugin.hh

    rba7fc1e r37deb3b  
    22#define __JADEPLUGIN_HH__
    33
    4 //STARTHEADER
    5 // $Id: JadePlugin.hh 2577 2011-09-13 15:11:38Z salam $
     4//FJSTARTHEADER
     5// $Id: JadePlugin.hh 3433 2014-07-23 08:17:03Z salam $
    66//
    7 // Copyright (c) 2009, Matteo Cacciari, Gavin Salam and Gregory Soyez
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234#include "fastjet/JetDefinition.hh"
  • external/fastjet/plugins/NestedDefs/NestedDefsPlugin.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: NestedDefsPlugin.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2007-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931// TODO
  • external/fastjet/plugins/NestedDefs/fastjet/NestedDefsPlugin.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: NestedDefsPlugin.hh 2577 2011-09-13 15:11:38Z salam $
     1//FJSTARTHEADER
     2// $Id: NestedDefsPlugin.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2007-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __NESTEDALGSPLUGIN_HH__
  • external/fastjet/plugins/SISCone/SISConePlugin.cc

    rba7fc1e r37deb3b  
    2121                      four_vector.E);
    2222}
     23
     24//======================================================================
     25// wrap-up around siscone's user-defined scales
     26namespace siscone_plugin_internal{
     27  /// @ingroup internal
     28  /// \class SISConeUserScale
     29  /// class that makes the transition between the internal SISCone
     30  /// user-defined scale choice (using SISCone's Cjet) and
     31  /// user-defined scale choices in the plugn above (using FastJet's
     32  /// PseudoJets)
     33  class SISConeUserScale  : public siscone::Csplit_merge::Cuser_scale_base{
     34  public:
     35    /// ctor takes the "fastjet-style" user-defined scale as well as a
     36    /// reference to the current cluster sequence (to access the
     37    /// particles if needed)
     38    SISConeUserScale(const SISConePlugin::UserScaleBase *user_scale,
     39                     const ClusterSequence &cs)
     40      : _user_scale(user_scale), _cs(cs){}
     41
     42    /// returns the scale associated to a given jet
     43    virtual double operator()(const siscone::Cjet &jet) const{
     44      return _user_scale->result(_build_PJ_from_Cjet(jet));
     45    }
     46
     47    /// returns true id the scasle associated to jet a is larger than
     48    /// the scale associated to jet b
     49    virtual bool is_larger(const siscone::Cjet &a, const siscone::Cjet &b) const{
     50      return _user_scale->is_larger(_build_PJ_from_Cjet(a), _build_PJ_from_Cjet(b));
     51    }
     52
     53  private:
     54    /// constructs a PseudoJet from a siscone::Cjet
     55    ///
     56    /// Note that it is tempting to overload the PseudoJet ctor. This
     57    /// would not work because down the line we need to access the
     58    /// original PseudoJet through the ClusterSequence and therefore
     59    /// the PseudoJet structure needs to be aware of the
     60    /// ClusterSequence.
     61    PseudoJet _build_PJ_from_Cjet(const siscone::Cjet &jet) const{
     62      PseudoJet j(jet.v.px, jet.v.py, jet.v.pz, jet.v.E);
     63      j.set_structure_shared_ptr(SharedPtr<PseudoJetStructureBase>(
     64                                   new SISConePlugin::UserScaleBaseStructureType<siscone::Cjet>(jet,_cs)));     
     65      return j;
     66    }
     67
     68    const SISConePlugin::UserScaleBase *_user_scale;
     69    const ClusterSequence & _cs;
     70  };
     71}
     72
     73// end of the internal material
     74//======================================================================
    2375
    2476
     
    4597  desc << "SISCone jet algorithm with " ;
    4698  desc << "cone_radius = "       << cone_radius        () << ", ";
    47   desc << "overlap_threshold = " << overlap_threshold  () << ", ";
     99  if (_progressive_removal)
     100    desc << "progressive-removal mode, ";
     101  else 
     102    desc << "overlap_threshold = " << overlap_threshold  () << ", ";
    48103  desc << "n_pass_max = "        << n_pass_max         () << ", ";
    49104  desc << "protojet_ptmin = "    << protojet_ptmin()      << ", ";
    50   desc <<  sm_scale_string                                << ", ";
    51   desc << "caching turned "      << (caching() ? on : off);
    52   desc << ", SM stop scale = "     << _split_merge_stopping_scale;
     105  if (_progressive_removal && _user_scale) {
     106    desc << "using a user-defined scale for ordering of stable cones";
     107    string user_scale_desc = _user_scale->description();
     108    if (user_scale_desc != "") desc << " (" << user_scale_desc << ")";
     109  } else {
     110    desc <<  sm_scale_string;
     111  }
     112  if (!_progressive_removal){
     113    desc << ", caching turned "      << (caching() ? on : off);
     114    desc << ", SM stop scale = "     << _split_merge_stopping_scale;
     115  }
    53116
    54117  // add a note to the description if we use the pt-weighted splitting
     
    85148  bool new_siscone = true; // by default we'll be running it
    86149
    87   if (caching()) {
     150  if (caching() && !_progressive_removal) {
    88151
    89152    // Establish if we have a cached run with the same R, npass and
     
    138201    // run the jet finding
    139202    //cout << "plg sms: " << split_merge_scale() << endl;
    140     siscone->compute_jets(siscone_momenta, cone_radius(), overlap_threshold(),
    141                           n_pass_max(), protojet_or_ghost_ptmin(),
    142                           Esplit_merge_scale(split_merge_scale()));
     203    if (_progressive_removal){
     204      // handle the optional user-defined scale choice
     205      SharedPtr<siscone_plugin_internal::SISConeUserScale> internal_scale;
     206      if (_user_scale){
     207        internal_scale.reset(new siscone_plugin_internal::SISConeUserScale(_user_scale, clust_seq));
     208        siscone->set_user_scale(internal_scale.get());
     209      }
     210      siscone->compute_jets_progressive_removal(siscone_momenta, cone_radius(),
     211                                                n_pass_max(), protojet_or_ghost_ptmin(),
     212                                                Esplit_merge_scale(split_merge_scale()));
     213    } else {
     214      siscone->compute_jets(siscone_momenta, cone_radius(), overlap_threshold(),
     215                            n_pass_max(), protojet_or_ghost_ptmin(),
     216                            Esplit_merge_scale(split_merge_scale()));
     217    }
    143218  } else {
    144219    // rerun the jet finding
     
    155230  SISConeExtras * extras = new SISConeExtras(n);
    156231
     232  // the ordering in which the inclusive jets are transfered here is
     233  // deliberate and ensures that when a user asks for
     234  // inclusive_jets(), they are provided in the order in which SISCone
     235  // created them.
    157236  for (int ijet = njet-1; ijet >= 0; ijet--) {
    158237    const Cjet & jet = siscone->jets[ijet]; // shorthand
     
    207286
    208287  // give the extras object to the cluster sequence.
    209   clust_seq.plugin_associate_extras(std::auto_ptr<ClusterSequence::Extras>(extras));
     288  //
     289  // As of v3.1 of FastJet, extras are automatically owned (as
     290  // SharedPtr) by the ClusterSequence and auto_ptr is deprecated. So
     291  // we can use a simple pointer here
     292  //clust_seq.plugin_associate_extras(std::auto_ptr<ClusterSequence::Extras>(extras));
     293  clust_seq.plugin_associate_extras(extras);
    210294}
    211295
     
    215299}
    216300
     301// //======================================================================
     302// // material to handle user-defined scales
     303//
     304// //--------------------------------------------------
     305// // SISCone structure type
     306//
     307// // the textual descripotion
     308// std::string SISConePlugin::UserScaleBase::StructureType::description() const{
     309//   return "PseudoJet wrapping a siscone::Cjet stable cone";
     310// }
     311//
     312// // retrieve the constituents
     313// //
     314// // if you simply need to iterate over the constituents, it will be
     315// // faster to access them via constituent(i)
     316// vector<PseudoJet> SISConePlugin::UserScaleBase::StructureType::constituents(const PseudoJet &) const{
     317//   vector<PseudoJet> constits;
     318//   constits.reserve(_jet.n);
     319//   for (unsigned int i=0; i<(unsigned int)_jet.n;i++)
     320//     constits.push_back(constituent(i));
     321//   return constits;
     322// }
     323//
     324// // returns the number of constituents
     325// unsigned int SISConePlugin::UserScaleBase::StructureType::size() const{
     326//   return _jet.n;
     327// }
     328//
     329// // returns the index (in the original particle list) of the ith
     330// // constituent
     331// int SISConePlugin::UserScaleBase::StructureType::constituent_index(unsigned int i) const{
     332//   return _jet.contents[i];
     333// }
     334//
     335// // returns the ith constituent (as a PseusoJet)
     336// const PseudoJet & SISConePlugin::UserScaleBase::StructureType::constituent(unsigned int i) const{
     337//   return _cs.jets()[_jet.contents[i]];
     338// }
     339//
     340// // returns the scalar pt of this stable cone
     341// double SISConePlugin::UserScaleBase::StructureType::pt_tilde() const{
     342//   return _jet.pt_tilde;
     343// }
     344//
     345// // returns the sm_var2 (signed ordering variable squared) for this stable cone
     346// double SISConePlugin::UserScaleBase::StructureType::ordering_var2() const{
     347//   return _jet.sm_var2;
     348// }
     349
     350
    217351FASTJET_END_NAMESPACE      // defined in fastjet/internal/base.hh
  • external/fastjet/plugins/SISCone/area.cc

    rba7fc1e r37deb3b  
    2222// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2323//                                                                           //
    24 // $Revision::                                                              $//
    25 // $Date::                                                                  $//
     24// $Revision:: 149                                                          $//
     25// $Date:: 2007-03-15 00:13:58 +0100 (Thu, 15 Mar 2007)                     $//
    2626///////////////////////////////////////////////////////////////////////////////
    2727
  • external/fastjet/plugins/SISCone/area.h

    rba7fc1e r37deb3b  
    2222// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2323//                                                                           //
    24 // $Revision::                                                              $//
    25 // $Date::                                                                  $//
     24// $Revision:: 149                                                          $//
     25// $Date:: 2007-03-15 00:13:58 +0100 (Thu, 15 Mar 2007)                     $//
    2626///////////////////////////////////////////////////////////////////////////////
    2727
  • external/fastjet/plugins/SISCone/circulator.h

    rba7fc1e r37deb3b  
    2222// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2323//                                                                           //
    24 // $Revision::                                                              $//
    25 // $Date::                                                                  $//
     24// $Revision:: 103                                                          $//
     25// $Date:: 2007-02-18 17:07:34 +0100 (Sun, 18 Feb 2007)                     $//
    2626///////////////////////////////////////////////////////////////////////////////
    2727
  • external/fastjet/plugins/SISCone/config.h

    rba7fc1e r37deb3b  
    4949
    5050/* Define to the full name and version of this package. */
    51 #define PACKAGE_STRING "SISCone 2.0.6"
     51#define PACKAGE_STRING "SISCone 3.0.0"
    5252
    5353/* Define to the one symbol short name of this package. */
     
    5858
    5959/* Define to the version of this package. */
    60 #define PACKAGE_VERSION "2.0.6"
     60#define PACKAGE_VERSION "3.0.0"
    6161
    6262/* Define to 1 if you have the ANSI C header files. */
     
    6464
    6565/* Version number of package */
    66 #define VERSION "2.0.6"
     66#define VERSION "3.0.0"
  • external/fastjet/plugins/SISCone/defines.h

    rba7fc1e r37deb3b  
    2222// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2323//                                                                           //
    24 // $Revision::                                                              $//
    25 // $Date::                                                                  $//
     24// $Revision:: 225                                                          $//
     25// $Date:: 2008-05-20 16:59:47 +0200 (Tue, 20 May 2008)                     $//
    2626///////////////////////////////////////////////////////////////////////////////
    2727
  • external/fastjet/plugins/SISCone/fastjet/SISConeBasePlugin.hh

    rba7fc1e r37deb3b  
    4343  SISConeBasePlugin (){
    4444    _use_jet_def_recombiner = false;
     45    set_progressive_removal(false);
    4546  }
    4647
     
    4950    *this = plugin;
    5051  }
     52
     53  /// set whether to use SISCone with progressive removal instead of
     54  /// the default split_merge step.
     55  ///
     56  /// If progressive removal is enabled, the following SISCone
     57  /// variables are not used:
     58  ///
     59  /// - overlap_threshold
     60  /// - caching
     61  /// - split_merge_stopping_scale
     62  ///
     63  /// The split_merge_scale choice is reinterpreted as the ordering
     64  /// variable for progressive removal. It is also possible for the
     65  /// user to supply his/her own function for the scale that orders
     66  /// progressive removal, with set_user_scale(...)
     67  void set_progressive_removal(bool progressive_removal_in=true){
     68    _progressive_removal = progressive_removal_in;
     69  }
     70
     71  /// returns true if progressive_removal is enabled
     72  bool progressive_removal() const{ return _progressive_removal;}
    5173
    5274  /// the cone radius
     
    105127  }
    106128
     129  // user-defined scale for progressive removal
     130  //------------------------------------------------------------
     131
     132  /// \class UserScaleBase
     133  /// base class for user-defined ordering of stable cones (used for
     134  /// prorgessive removal)
     135  ///
     136  /// derived classes have to implement the () operator that returns
     137  /// the scale associated with a given jet.
     138  ///
     139  /// It is also highly recommended to implement the is_larger()
     140  /// method whenever possible, in order to avoid rounding issues
     141  /// known to lead to possible infrared unsafeties.
     142  ///
     143  /// The jets that are passed to this class will carry the structure
     144  /// of type SISConePlugin::StructureType which allows to retreive
     145  /// easily the following information:
     146  ///
     147  ///   vector<PseudoJet> constituents = jet.constituents();
     148  ///   unsigned int n_constituents = jet.structure_of<SISConePlugin::UserScaleBase>().size();
     149  ///   int index = jet.structure_of<SISConePlugin::UserScaleBase>().constituent_index(index i);
     150  ///   const PseudoJet & p = jet.structure_of<SISConePlugin::UserScaleBase>().constituent(index i);
     151  ///   double scalar_pt = jet.structure_of<SISConePlugin::UserScaleBase>().pt_tilde();
     152  ///
     153  /// see SISConePlugin::StructureType below for further details
     154  class UserScaleBase : public FunctionOfPseudoJet<double>{
     155  public:
     156    /// empty virtual dtor
     157    virtual ~UserScaleBase(){}
     158
     159    /// returns the scale associated with a given jet
     160    ///
     161    /// "progressive removal" iteratively removes the stable cone with
     162    /// the largest scale
     163    virtual double result(const PseudoJet & jet) const = 0;
     164
     165    /// returns true when the scale associated with jet a is larger than
     166    /// the scale associated with jet b
     167    ///
     168    /// By default this does a simple direct comparison but it can be
     169    /// overloaded for higher precision [recommended if possible]
     170    virtual bool is_larger(const PseudoJet & a, const PseudoJet & b) const;
     171
     172    class StructureType; // defined below
     173  };
     174
     175  // template class derived from UserScaleBase::StryctureType that
     176  // works for both SISCone jet classes
     177  // implemented below
     178  template<class Tjet>
     179  class UserScaleBaseStructureType;
     180
     181  /// set a user-defined scale for stable-cone ordering in
     182  /// progressive removal
     183  void set_user_scale(const UserScaleBase *user_scale_in){ _user_scale = user_scale_in;}
     184
     185  /// returns the user-defined scale in use (0 if none)
     186  const UserScaleBase * user_scale() const{ return _user_scale;}
     187
     188
    107189  // the things that one MUST overload required by base class
    108190  //---------------------------------------------------------
     
    120202  double _split_merge_stopping_scale;
    121203  bool   _use_jet_def_recombiner;
     204  bool   _progressive_removal;
    122205
    123206  mutable double _ghost_sep_scale;
     
    126209  /// call the re-clustering itself
    127210  virtual void reset_stored_plugin() const =0;
     211
     212  const UserScaleBase * _user_scale;
    128213
    129214};
     
    185270inline SISConeBaseExtras::~SISConeBaseExtras(){}
    186271
     272//----------------------------------------------------------------------
     273// implementation of the structure type associated with the UserScaleBase class
     274
     275/// \class SISConeBasePlugin::UserScaleBase::StructureType
     276/// the structure that allows to store the information contained
     277/// into a siscone::Cjet (built internally in SISCone from a stable
     278/// cone) into a PseudoJet
     279class SISConeBasePlugin::UserScaleBase::StructureType : public PseudoJetStructureBase {
     280public:
     281  /// base ctor (constructed from a ClusterSequence tin order to have
     282  /// access to the initial particles
     283  StructureType(const ClusterSequence &cs)
     284    : _cs(cs){}
     285
     286  /// empty virtual dtor
     287  virtual ~StructureType(){}
     288 
     289  //--------------------------------------------------
     290  // members inherited from the base class
     291  /// the textual descripotion
     292  virtual std::string description() const{
     293    return "PseudoJet wrapping a siscone jet from a stable cone";
     294  }
     295
     296  /// this structure has constituents
     297  virtual bool has_constituents() const {return true;}
     298
     299  /// retrieve the constituents
     300  ///
     301  /// if you simply need to iterate over the constituents, it will be
     302  /// faster to access them via constituent(i)
     303  virtual std::vector<PseudoJet> constituents(const PseudoJet & /*reference*/) const{
     304    std::vector<PseudoJet> constits;
     305    constits.reserve(size());
     306    for (unsigned int i=0; i<size();i++)
     307      constits.push_back(constituent(i));
     308    return constits;
     309  }
     310 
     311  //--------------------------------------------------
     312  // additional information relevant for this structure
     313
     314  /// returns the number of constituents
     315  virtual unsigned int size() const = 0;
     316
     317  /// returns the index (in the original particle list) of the ith
     318  /// constituent
     319  virtual int constituent_index(unsigned int i) const = 0;
     320
     321  /// returns the ith constituent (as a PseusoJet)
     322  const PseudoJet & constituent(unsigned int i) const{
     323    return _cs.jets()[constituent_index(i)];
     324  }
     325
     326  // /// returns the scalar pt of this stable cone
     327  // virtual double pt_tilde() const = 0;
     328
     329  /// returns the sm_var2 (signed ordering variable squared) for this stable cone
     330  virtual double ordering_var2() const = 0;
     331
     332protected:
     333  const ClusterSequence &_cs; ///< a reference to the CS (for access to the particles)
     334};
     335
     336
     337///@ingroup internal
     338/// template class derived from UserScaleBase::StryctureType that
     339/// works for both SISCone jet classes
     340/// implemented below
     341template<class Tjet>
     342class SISConeBasePlugin::UserScaleBaseStructureType : public UserScaleBase::StructureType{
     343public:
     344  UserScaleBaseStructureType(const Tjet &jet, const ClusterSequence &cs)
     345    : UserScaleBase::StructureType(cs), _jet(jet){}
     346
     347  /// empty virtual dtor
     348  virtual ~UserScaleBaseStructureType(){}
     349
     350  //--------------------------------------------------
     351  // additional information relevant for this structure
     352
     353  /// returns the number of constituents
     354  virtual unsigned int size() const{
     355    return _jet.n;
     356  }
     357
     358  /// returns the index (in the original particle list) of the ith
     359  /// constituent
     360  virtual int constituent_index(unsigned int i) const{
     361    return _jet.contents[i];
     362  }
     363
     364  // /// returns the scalar pt of this stable cone
     365  // virtual double pt_tilde() const{
     366  //   return _jet.pt_tilde;
     367  // }
     368
     369  /// returns the sm_var2 (signed ordering variable squared) for this stable cone
     370  virtual double ordering_var2() const{
     371    return _jet.sm_var2;
     372  }
     373
     374protected:
     375  const Tjet &_jet; ///< a reference to the internal jet in SISCone
     376};
     377
    187378
    188379FASTJET_END_NAMESPACE        // defined in fastjet/internal/base.hh
  • external/fastjet/plugins/SISCone/fastjet/SISConePlugin.hh

    rba7fc1e r37deb3b  
    77namespace siscone{
    88  class Csiscone;
     9  class Cjet;
    910}
    1011
     
    7475  /// enum for the different split-merge scale choices;
    7576  /// Note that order _must_ be the same as in siscone
    76   enum SplitMergeScale {SM_pt,     ///< transverse momentum (E-scheme), IR unsafe
    77                         SM_Et,     ///< transverse energy (E-scheme), not long. boost invariant
    78                                    ///< original run-II choice [may not be implemented]
    79                         SM_mt,     ///< transverse mass (E-scheme), IR safe except
    80                                    ///< in decays of two identical narrow heavy particles
    81                         SM_pttilde ///< pt-scheme pt = \sum_{i in jet} |p_{ti}|, should
    82                                    ///< be IR safe in all cases
     77  enum SplitMergeScale {
     78    SM_pt,     ///< transverse momentum (E-scheme), IR unsafe
     79    SM_Et,     ///< transverse energy (E-scheme), not long. boost invariant
     80               ///< original run-II choice [may not be implemented]
     81    SM_mt,     ///< transverse mass (E-scheme), IR safe except
     82               ///< in decays of two identical narrow heavy particles
     83    SM_pttilde ///< pt-scheme pt = \sum_{i in jet} |p_{ti}|, should
     84               ///< be IR safe in all cases
    8385  };
    8486
     
    108110    _split_merge_stopping_scale = split_merge_stopping_scale_in;
    109111    _ghost_sep_scale       = 0.0;
    110     _use_pt_weighted_splitting = false;}
     112    _use_pt_weighted_splitting = false;
     113    _user_scale = 0;}
    111114
    112115
     
    125128    _split_merge_stopping_scale = 0.0;
    126129    _split_merge_scale     = split_merge_on_transverse_mass_in ? SM_mt : SM_pttilde;
    127     _ghost_sep_scale       = 0.0;}
     130    _ghost_sep_scale       = 0.0;
     131    _user_scale = 0;}
    128132 
    129133  /// backwards compatible constructor for the SISCone Plugin class
     
    141145    _split_merge_stopping_scale = 0.0;
    142146    _ghost_sep_scale       = 0.0;
    143     _use_pt_weighted_splitting = false;}
     147    _use_pt_weighted_splitting = false;
     148    _user_scale = 0;}
    144149
    145150  /// minimum pt for a protojet to be considered in the split-merge step
     
    191196};
    192197
     198
     199/////\class SISConePlugin::UserScaleBase::StructureType
     200///// the structure that allows to store the information contained
     201///// into a siscone::Cjet (built internally in SISCone from a stable
     202///// cone) into a PseudoJet
     203//class SISConePlugin::UserScaleBase::StructureType : public PseudoJetStructureBase {
     204//public:
     205//  StructureType(const siscone::Cjet & jet, const ClusterSequence &cs)
     206//    : _jet(jet), _cs(cs){}
     207//
     208//  //--------------------------------------------------
     209//  // members inherited from the base class
     210//  /// the textual descripotion
     211//  virtual std::string description() const;
     212//
     213//  /// this structure has constituents
     214//  virtual bool has_constituents() const {return true;}
     215//
     216//  /// retrieve the constituents
     217//  ///
     218//  /// if you simply need to iterate over the constituents, it will be
     219//  /// faster to access them via constituent(i)
     220//  virtual std::vector<PseudoJet> constituents(const PseudoJet & /*reference*/) const;
     221//
     222//  //--------------------------------------------------
     223//  // additional information relevant for this structure
     224//
     225//  /// returns the number of constituents
     226//  unsigned int size() const;
     227//
     228//  /// returns the index (in the original particle list) of the ith
     229//  /// constituent
     230//  int constituent_index(unsigned int i) const;
     231//
     232//  /// returns the ith constituent (as a PseusoJet)
     233//  const PseudoJet & constituent(unsigned int i) const;
     234//
     235//  /// returns the scalar pt of this stable cone
     236//  double pt_tilde() const;
     237//
     238//  /// returns the sm_var2 (signed ordering variable squared) for this stable cone
     239//  double ordering_var2() const;
     240//
     241//protected:
     242//  const siscone::Cjet &_jet;  ///< a dreference to the internal jet in SISCone
     243//  const ClusterSequence &_cs; ///< a reference to the CS (for access to the particles)
     244//};
    193245
    194246//======================================================================
  • external/fastjet/plugins/SISCone/fastjet/SISConeSphericalPlugin.hh

    rba7fc1e r37deb3b  
    152152  virtual void run_clustering(ClusterSequence &) const ;
    153153
     154  /// returns true because this plugin is intended for spherical
     155  /// geometries (i.e. it's an e+e- algorithm).
     156  virtual bool is_spherical() const {return true;}
     157
    154158protected:
    155159  virtual void reset_stored_plugin() const;
  • external/fastjet/plugins/SISCone/geom_2d.cc

    rba7fc1e r37deb3b  
    2121// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2222//                                                                           //
    23 // $Revision::                                                              $//
    24 // $Date::                                                                  $//
     23// $Revision:: 171                                                          $//
     24// $Date:: 2007-06-19 16:26:05 +0200 (Tue, 19 Jun 2007)                     $//
    2525///////////////////////////////////////////////////////////////////////////////
    2626
  • external/fastjet/plugins/SISCone/geom_2d.h

    rba7fc1e r37deb3b  
    2222// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2323//                                                                           //
    24 // $Revision::                                                              $//
    25 // $Date::                                                                  $//
     24// $Revision:: 268                                                          $//
     25// $Date:: 2009-03-12 21:24:16 +0100 (Thu, 12 Mar 2009)                     $//
    2626///////////////////////////////////////////////////////////////////////////////
    2727
  • external/fastjet/plugins/SISCone/hash.cc

    rba7fc1e r37deb3b  
    2121// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2222//                                                                           //
    23 // $Revision::                                                              $//
    24 // $Date::                                                                  $//
     23// $Revision:: 225                                                          $//
     24// $Date:: 2008-05-20 16:59:47 +0200 (Tue, 20 May 2008)                     $//
    2525///////////////////////////////////////////////////////////////////////////////
    2626
  • external/fastjet/plugins/SISCone/hash.h

    rba7fc1e r37deb3b  
    2222// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2323//                                                                           //
    24 // $Revision::                                                              $//
    25 // $Date::                                                                  $//
     24// $Revision:: 224                                                          $//
     25// $Date:: 2008-05-16 19:58:30 +0200 (Fri, 16 May 2008)                     $//
    2626///////////////////////////////////////////////////////////////////////////////
    2727
  • external/fastjet/plugins/SISCone/momentum.cc

    rba7fc1e r37deb3b  
    2121// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2222//                                                                           //
    23 // $Revision::                                                              $//
    24 // $Date::                                                                  $//
     23// $Revision:: 123                                                          $//
     24// $Date:: 2007-03-01 02:52:16 +0100 (Thu, 01 Mar 2007)                     $//
    2525///////////////////////////////////////////////////////////////////////////////
    2626
  • external/fastjet/plugins/SISCone/momentum.h

    rba7fc1e r37deb3b  
    2222// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2323//                                                                           //
    24 // $Revision::                                                              $//
    25 // $Date::                                                                  $//
     24// $Revision:: 163                                                          $//
     25// $Date:: 2007-04-26 22:31:02 +0200 (Thu, 26 Apr 2007)                     $//
    2626///////////////////////////////////////////////////////////////////////////////
    2727
  • external/fastjet/plugins/SISCone/protocones.cc

    rba7fc1e r37deb3b  
    2121// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2222//                                                                           //
    23 // $Revision::                                                              $//
    24 // $Date::                                                                  $//
     23// $Revision:: 322                                                          $//
     24// $Date:: 2011-11-15 10:12:36 +0100 (Tue, 15 Nov 2011)                     $//
    2525///////////////////////////////////////////////////////////////////////////////
    2626
  • external/fastjet/plugins/SISCone/protocones.h

    rba7fc1e r37deb3b  
    2222// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2323//                                                                           //
    24 // $Revision::                                                              $//
    25 // $Date::                                                                  $//
     24// $Revision:: 224                                                          $//
     25// $Date:: 2008-05-16 19:58:30 +0200 (Fri, 16 May 2008)                     $//
    2626///////////////////////////////////////////////////////////////////////////////
    2727
  • external/fastjet/plugins/SISCone/quadtree.cc

    rba7fc1e r37deb3b  
    2121// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2222//                                                                           //
    23 // $Revision::                                                              $//
    24 // $Date::                                                                  $//
     23// $Revision:: 320                                                          $//
     24// $Date:: 2011-11-15 09:54:50 +0100 (Tue, 15 Nov 2011)                     $//
    2525///////////////////////////////////////////////////////////////////////////////
    2626
  • external/fastjet/plugins/SISCone/quadtree.h

    rba7fc1e r37deb3b  
    2222// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2323//                                                                           //
    24 // $Revision::                                                              $//
    25 // $Date::                                                                  $//
     24// $Revision:: 123                                                          $//
     25// $Date:: 2007-03-01 02:52:16 +0100 (Thu, 01 Mar 2007)                     $//
    2626///////////////////////////////////////////////////////////////////////////////
    2727
  • external/fastjet/plugins/SISCone/reference.cc

    rba7fc1e r37deb3b  
    2121// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2222//                                                                           //
    23 // $Revision::                                                              $//
    24 // $Date::                                                                  $//
     23// $Revision:: 311                                                          $//
     24// $Date:: 2011-10-05 23:27:09 +0200 (Wed, 05 Oct 2011)                     $//
    2525///////////////////////////////////////////////////////////////////////////////
    2626
  • external/fastjet/plugins/SISCone/reference.h

    rba7fc1e r37deb3b  
    2222// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2323//                                                                           //
    24 // $Revision::                                                              $//
    25 // $Date::                                                                  $//
     24// $Revision:: 123                                                          $//
     25// $Date:: 2007-03-01 02:52:16 +0100 (Thu, 01 Mar 2007)                     $//
    2626///////////////////////////////////////////////////////////////////////////////
    2727
  • external/fastjet/plugins/SISCone/siscone.cc

    rba7fc1e r37deb3b  
    2121// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2222//                                                                           //
    23 // $Revision::                                                              $//
    24 // $Date::                                                                  $//
     23// $Revision:: 371                                                          $//
     24// $Date:: 2014-09-09 10:05:32 +0200 (Tue, 09 Sep 2014)                     $//
    2525///////////////////////////////////////////////////////////////////////////////
    2626
     
    2929//#else
    3030//#define PACKAGE_NAME "SISCone"
    31 //#define VERSION "2.0.6"
     31//#define VERSION "3.0.0"
    3232//#warning "No config.h file available, using preset values"
    3333//#endif
     
    8787                           int _n_pass_max, double _ptmin,
    8888                           Esplit_merge_scale _split_merge_scale){
    89   // initialise random number generator
    90   if (!init_done){
    91     // initialise random number generator
    92     ranlux_init();
    93 
    94     // do not do this again
    95     init_done=true;
    96 
    97     // print the banner
    98     if (_banner_ostr != 0){
    99       (*_banner_ostr) << "#ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo" << endl;
    100       (*_banner_ostr) << "#                    SISCone   version " << setw(28) << left << siscone_version() << "o" << endl;
    101       (*_banner_ostr) << "#              http://projects.hepforge.org/siscone                o" << endl;
    102       (*_banner_ostr) << "#                                                                  o" << endl;
    103       (*_banner_ostr) << "# This is SISCone: the Seedless Infrared Safe Cone Jet Algorithm   o" << endl;
    104       (*_banner_ostr) << "# SISCone was written by Gavin Salam and Gregory Soyez             o" << endl;
    105       (*_banner_ostr) << "# It is released under the terms of the GNU General Public License o" << endl;
    106       (*_banner_ostr) << "#                                                                  o" << endl;
    107       (*_banner_ostr) << "# A description of the algorithm is available in the publication   o" << endl;
    108       (*_banner_ostr) << "# JHEP 05 (2007) 086 [arXiv:0704.0292 (hep-ph)].                   o" << endl;
    109       (*_banner_ostr) << "# Please cite it if you use SISCone.                               o" << endl;
    110       (*_banner_ostr) << "#ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo" << endl;
    111       (*_banner_ostr) << endl;
    112 
    113       _banner_ostr->flush();
    114     }
    115   }
     89  _initialise_if_needed();
    11690
    11791  // run some general safety tests (NB: f will be checked in split-merge)
     
    174148}
    175149
     150
     151/*
     152 * compute the jets from a given particle set doing multiple passes
     153 * such pass N looks for jets among all particles not put into jets
     154 * during previous passes.
     155 *  - _particles   list of particles
     156 *  - _radius      cone radius
     157 *  - _n_pass_max  maximum number of runs
     158 *  - _ptmin       minimum pT of the protojets
     159 *  - _ordering_scale    the ordering scale to decide which stable
     160 *                       cone is removed
     161 * return the number of jets found.
     162 **********************************************************************/
     163int Csiscone::compute_jets_progressive_removal(vector<Cmomentum> &_particles, double _radius,
     164                                               int _n_pass_max, double _ptmin,
     165                                               Esplit_merge_scale _ordering_scale){
     166  _initialise_if_needed();
     167
     168  // run some general safety tests (NB: f will be checked in split-merge)
     169  if (_radius <= 0.0 || _radius >= 0.5*M_PI) {
     170    ostringstream message;
     171    message << "Illegal value for cone radius, R = " << _radius
     172            << " (legal values are 0<R<pi/2)";
     173    throw Csiscone_error(message.str());
     174  }
     175
     176  ptcomparison.split_merge_scale = _ordering_scale;
     177  partial_clear(); // make sure some things are initialised properly
     178
     179  // init the split_merge algorithm with the initial list of particles
     180  // this initialises particle list p_left of remaining particles to deal with
     181  //
     182  // this stores the "processed" particles in p_uncol_hard
     183  init_particles(_particles);
     184  jets.clear();
     185
     186  bool unclustered_left;
     187  rerun_allowed = false;
     188  protocones_list.clear();
     189
     190  do{
     191    //cout << n_left << " particle left" << endl;
     192
     193    // initialise stable_cone finder
     194    // here we use the list of remaining particles
     195    // AFTER COLLINEAR CLUSTERING !!!!!!
     196    Cstable_cones::init(p_uncol_hard);
     197
     198    // get stable cones (stored in 'protocones')
     199    unclustered_left = get_stable_cones(_radius);
     200
     201    // add the hardest stable cone to the list of jets
     202    if (add_hardest_protocone_to_jets(&protocones, R2, _ptmin)) break;
     203 
     204    _n_pass_max--;
     205  } while ((unclustered_left) && (n_left>0) && (_n_pass_max!=0));
     206
     207  // split & merge
     208  return jets.size();
     209}
     210
     211
    176212/*
    177213 * recompute the jets with a different overlap parameter.
     
    205241
    206242
     243// ensure things are initialised
     244void Csiscone::_initialise_if_needed(){
     245  // initialise random number generator
     246  if (init_done) return;
     247
     248  // initialise random number generator
     249  ranlux_init();
     250
     251  // do not do this again
     252  init_done=true;
     253
     254  // print the banner
     255  if (_banner_ostr != 0){
     256    (*_banner_ostr) << "#ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo" << endl;
     257    (*_banner_ostr) << "#                    SISCone   version " << setw(28) << left << siscone_version() << "o" << endl;
     258    (*_banner_ostr) << "#              http://projects.hepforge.org/siscone                o" << endl;
     259    (*_banner_ostr) << "#                                                                  o" << endl;
     260    (*_banner_ostr) << "# This is SISCone: the Seedless Infrared Safe Cone Jet Algorithm   o" << endl;
     261    (*_banner_ostr) << "# SISCone was written by Gavin Salam and Gregory Soyez             o" << endl;
     262    (*_banner_ostr) << "# It is released under the terms of the GNU General Public License o" << endl;
     263    (*_banner_ostr) << "#                                                                  o" << endl;
     264    (*_banner_ostr) << "# A description of the algorithm is available in the publication   o" << endl;
     265    (*_banner_ostr) << "# JHEP 05 (2007) 086 [arXiv:0704.0292 (hep-ph)].                   o" << endl;
     266    (*_banner_ostr) << "# Please cite it if you use SISCone.                               o" << endl;
     267    (*_banner_ostr) << "#ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo" << endl;
     268    (*_banner_ostr) << endl;
     269
     270    _banner_ostr->flush();
     271  }
     272}
    207273
    208274// finally, a bunch of functions to access to
  • external/fastjet/plugins/SISCone/siscone.h

    rba7fc1e r37deb3b  
    2222// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2323//                                                                           //
    24 // $Revision::                                                              $//
    25 // $Date::                                                                  $//
     24// $Revision:: 369                                                          $//
     25// $Date:: 2014-09-04 16:57:55 +0200 (Thu, 04 Sep 2014)                     $//
    2626///////////////////////////////////////////////////////////////////////////////
    2727
     
    7979
    8080  /**
     81   * compute the jets from a given particle set.
     82   * We are doing multiple passes such pass n_pass looks for jets among
     83   * all particles not put into jets during previous passes.
     84   * By default the number of passes is infinite (0).
     85   * \param _particles   list of particles
     86   * \param _radius      cone radius
     87   * \param _n_pass_max  maximum number of passes (0=full search)
     88   * \param _ptmin       minimum pT of the protojets
     89   * \param _ordering_scale    the ordering scale to decide which stable
     90   *                           cone is removed
     91   *
     92   * Note that the Csplit_merge::SM_var2_hardest_cut_off cut is not
     93   * used in the progressive removal variant.
     94   *
     95   * \return the number of jets found.
     96   */
     97  int compute_jets_progressive_removal(std::vector<Cmomentum> &_particles, double _radius,
     98                                       int _n_pass_max=0, double _ptmin=0.0,
     99                                       Esplit_merge_scale _ordering_scale=SM_pttilde);
     100
     101  /**
    81102   * recompute the jets with a different overlap parameter.
    82103   * we use the same particles and R as in the preceeding call.
     
    93114                     Esplit_merge_scale _split_merge_scale=SM_pttilde);
    94115
    95   /// list of protocones found pass-by-pass
     116  /// list of protocones found pass-by-pass (not filled by compute_jets_progressive_removal)
    96117  std::vector<std::vector<Cmomentum> > protocones_list;
    97118
     
    125146  bool rerun_allowed;         ///< is recompute_jets allowed ?
    126147  static std::ostream * _banner_ostr; ///< stream to use for banners
     148
     149  /// ensure things are initialised
     150  void _initialise_if_needed();
     151
    127152};
    128153
  • external/fastjet/plugins/SISCone/siscone_error.cc

    rba7fc1e r37deb3b  
    2121// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2222//                                                                           //
    23 // $Revision::                                                              $//
    24 // $Date::                                                                  $//
     23// $Revision:: 123                                                          $//
     24// $Date:: 2007-03-01 02:52:16 +0100 (Thu, 01 Mar 2007)                     $//
    2525///////////////////////////////////////////////////////////////////////////////
    2626
  • external/fastjet/plugins/SISCone/siscone_error.h

    rba7fc1e r37deb3b  
    2222// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2323//                                                                           //
    24 // $Revision::                                                              $//
    25 // $Date::                                                                  $//
     24// $Revision:: 327                                                          $//
     25// $Date:: 2011-11-25 15:19:39 +0100 (Fri, 25 Nov 2011)                     $//
    2626///////////////////////////////////////////////////////////////////////////////
    2727
  • external/fastjet/plugins/SISCone/split_merge.cc

    rba7fc1e r37deb3b  
    2121// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2222//                                                                           //
    23 // $Revision::                                                              $//
    24 // $Date::                                                                  $//
     23// $Revision:: 370                                                          $//
     24// $Date:: 2014-09-04 17:03:15 +0200 (Thu, 04 Sep 2014)                     $//
    2525///////////////////////////////////////////////////////////////////////////////
    2626
     
    2828#include "siscone_error.h"
    2929#include "momentum.h"
    30 #include <math.h>
    3130#include <limits>   // for max
    3231#include <iostream>
     
    3433#include <sstream>
    3534#include <cassert>
     35#include <cmath>
    3636
    3737namespace siscone{
     
    229229#endif
    230230#endif
     231  _user_scale = NULL;
    231232  indices = NULL;
    232233
     
    237238
    238239  // no hardest cut (col-unsafe)
    239   SM_var2_hardest_cut_off = -1.0;
     240  SM_var2_hardest_cut_off = -numeric_limits<double>::max();
    240241
    241242  // no pt cutoff for the particles to put in p_uncol_hard
     
    555556}
    556557
     558
     559/*
     560 * remove the hardest protocone and declare it a a jet
     561 *  - protocones  list of protocones (initial jet candidates)
     562 *  - R2          cone radius (squared)
     563 *  - ptmin       minimal pT allowed for jets
     564 * return 0 on success, 1 on error
     565 *
     566 * The list of remaining particles (and the uncollinear-hard ones)
     567 * is updated.
     568 */
     569int Csplit_merge::add_hardest_protocone_to_jets(std::vector<Cmomentum> *protocones, double R2, double ptmin){
     570
     571  int i;
     572  Cmomentum *c;
     573  Cmomentum *v;
     574  double eta, phi;
     575  double dx, dy;
     576  double R;
     577  Cjet jet, jet_candidate;
     578  bool found_jet = false;
     579
     580  if (protocones->size()==0)
     581    return 1;
     582
     583  pt_min2 = ptmin*ptmin;
     584  R = sqrt(R2);
     585
     586  // browse protocones
     587  // for each of them, build the list of particles in them
     588  for (vector<Cmomentum>::iterator p_it = protocones->begin();p_it != protocones->end();p_it++){
     589    // initialise variables
     590    c = &(*p_it);
     591
     592    // note: cones have been tested => their (eta,phi) coordinates are computed
     593    eta = c->eta;
     594    phi = c->phi;
     595
     596    // NOTE: this is common to this method and add_protocones, so it
     597    // could be moved into a 'build_jet_from_protocone' method
     598    //
     599    // browse particles to create cone contents
     600    jet_candidate.v = Cmomentum();
     601    jet_candidate.pt_tilde=0;
     602    jet_candidate.contents.clear();
     603    for (i=0;i<n_left;i++){
     604      v = &(p_remain[i]);
     605      // for security, avoid including particles with infinite rapidity)
     606      // NO NEEDED ANYMORE SINCE REMOVED FROM p_remain FROM THE BEGINNING
     607      //if (fabs(v->pz)!=v->E){
     608      dx = eta - v->eta;
     609      dy = fabs(phi - v->phi);
     610      if (dy>M_PI)
     611        dy -= twopi;
     612      if (dx*dx+dy*dy<R2){
     613        jet_candidate.contents.push_back(v->parent_index);
     614        jet_candidate.v+= *v;
     615        jet_candidate.pt_tilde+= pt[v->parent_index];
     616        v->index=0;
     617      }
     618    }
     619    jet_candidate.n=jet_candidate.contents.size();
     620
     621    // set the momentum in protocones
     622    // (it was only known through eta and phi up to now)
     623    *c = jet_candidate.v;
     624    c->eta = eta; // restore exact original coords
     625    c->phi = phi; // to avoid rounding error inconsistencies
     626
     627    // set the jet range
     628    jet_candidate.range=Ceta_phi_range(eta,phi,R);
     629
     630    // check that the protojet has large enough pt
     631    if (jet_candidate.v.perp2()<pt_min2)
     632      continue;
     633
     634    // assign the split-merge (or progressive-removal) squared scale variable
     635    if (_user_scale) {
     636      // sm_var2 is the signed square of the user scale returned
     637      // for the jet candidate
     638      jet_candidate.sm_var2 = (*_user_scale)(jet_candidate);
     639      jet_candidate.sm_var2 *= abs(jet_candidate.sm_var2);
     640    } else {
     641      jet_candidate.sm_var2 = get_sm_var2(jet_candidate.v, jet_candidate.pt_tilde);
     642    }
     643
     644    // now check if it is possibly the hardest
     645    if ((! found_jet) ||
     646        (_user_scale ? _user_scale->is_larger(jet_candidate, jet)
     647                     : ptcomparison(jet_candidate, jet))){
     648      jet = jet_candidate;
     649      found_jet = true;
     650    }
     651  }
     652
     653  // make sure at least one of the jets has passed the selection
     654  if (!found_jet) return 1; 
     655 
     656  // add the jet to the list of jets
     657  jets.push_back(jet);
     658  jets[jets.size()-1].v.build_etaphi();
     659
     660#ifdef DEBUG_SPLIT_MERGE
     661  cout << "PR-Jet " << jets.size() << " [size " << next_jet.contents.size() << "]:";
     662#endif
     663   
     664  // update the list of what particles are left
     665  int p_remain_index = 0;
     666  int contents_index = 0;
     667  //sort(next_jet.contents.begin(),next_jet.contents.end());
     668  for (int index=0;index<n_left;index++){
     669    if ((contents_index<(int) jet.contents.size()) &&
     670        (p_remain[index].parent_index == jet.contents[contents_index])){
     671      // this particle belongs to the newly found jet
     672      // set pass in initial list
     673      particles[p_remain[index].parent_index].index = n_pass;
     674#ifdef DEBUG_SPLIT_MERGE
     675      cout << " " << jet.contents[contents_index];
     676#endif
     677      contents_index++;
     678    } else {
     679      // this particle still has to be clustered
     680      p_remain[p_remain_index] = p_remain[index];
     681      p_remain[p_remain_index].parent_index = p_remain[index].parent_index;
     682      p_remain[p_remain_index].index=1;
     683      p_remain_index++;
     684    }
     685  }
     686  p_remain.resize(n_left-jet.contents.size());
     687  n_left = p_remain.size();
     688  jets[jets.size()-1].pass = particles[jet.contents[0]].index;
     689
     690  // increase the pass index
     691  n_pass++;
     692
     693#ifdef DEBUG_SPLIT_MERGE
     694  cout << endl;
     695#endif
     696
     697  // male sure the list of uncol_hard particles (used for the next
     698  // stable cone finding) is updated [could probably be more
     699  // efficient]
     700  merge_collinear_and_remove_soft();
     701 
     702  return 0;
     703}
    557704
    558705/*
  • external/fastjet/plugins/SISCone/split_merge.h

    rba7fc1e r37deb3b  
    2222// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2323//                                                                           //
    24 // $Revision::                                                              $//
    25 // $Date::                                                                  $//
     24// $Revision:: 367                                                          $//
     25// $Date:: 2014-09-04 15:57:37 +0200 (Thu, 04 Sep 2014)                     $//
    2626///////////////////////////////////////////////////////////////////////////////
    2727
     
    141141  /// the split-merge process i.e. the variable we use for
    142142  ///  1. ordering jet candidates;
    143   ///  2. computing te overlap fraction of two candidates.
     143  ///  2. computing the overlap fraction of two candidates.
    144144  /// The default value uses pttile (p-scheme pt). Other alternatives are
    145145  /// pt, mt=sqrt(pt^2+m^2)=sqrt(E^2-pz^2) or Et.
     
    151151  ///   the default value i.e.  to use pt only for the purpose of
    152152  ///   investigating the IR issue
    153   /// - using Et is safe but do not respect boost invariance
     153  /// - using Et is safe but does not respect boost invariance
    154154  /// - using mt solves the IR unsafety issues with the pt variable
    155155  ///   for QCD jets but the IR unsafety remains for nack-to-back
     
    234234  int full_clear();
    235235
     236  ///////////////////////////////////////
     237  // user-defined stable-cone ordering //
     238  ///////////////////////////////////////
     239
     240  /// \class Cuser_scale_base
     241  /// base class for user-defined ordering of stable cones
     242  ///
     243  /// derived classes have to implement the () operator that returns
     244  /// the scale associated with a given jet.
     245  class Cuser_scale_base{
     246  public:
     247    /// empty virtual dtor
     248    virtual ~Cuser_scale_base(){}
     249
     250    /// the scale associated with a given jet
     251    ///
     252    /// "progressive removal" iteratively removes the stable cone with
     253    /// the largest scale
     254    virtual double operator()(const Cjet & jet) const = 0;
     255
     256    /// returns true when the scale associated with jet a is larger than
     257    /// the scale associated with jet b
     258    ///
     259    /// By default this does a simple direct comparison but it can be
     260    /// overloaded for higher precision [recommended if possible]
     261    ///
     262    /// This function assumes that a.sm_var2 and b.sm_var2 have been
     263    /// correctly initialised with the signed squared output of
     264    /// operator(), as is by default the case when is_larger is called
     265    /// from within siscone.
     266    virtual bool is_larger(const Cjet & a, const Cjet & b) const{
     267      return (a.sm_var2 > b.sm_var2);
     268    }
     269  };
     270
     271  /// associate a user-defined scale to order the stable cones
     272  ///
     273  /// Note that this is only used in "progressive-removal mode",
     274  /// e.g. in add_hardest_protocone_to_jets().
     275  void set_user_scale(const Cuser_scale_base * user_scale_in){
     276    _user_scale = user_scale_in;
     277  }
     278
     279  /// return the user-defined scale (NULL if none)
     280  const Cuser_scale_base * user_scale() const { return _user_scale; }
     281
    236282
    237283  /////////////////////////////////
     
    256302   */
    257303  int add_protocones(std::vector<Cmomentum> *protocones, double R2, double ptmin=0.0);
     304
     305  /**
     306   * remove the hardest protocone and declare it a jet
     307   * \param protocones  list of protocones (initial jet candidates)
     308   * \param R2          cone radius (squared)
     309   * \param ptmin       minimal pT allowed for jets
     310   * \return 0 on success, 1 on error
     311   *
     312   * The list of remaining particles (and the uncollinear-hard ones)
     313   * is updated.
     314   */
     315  int add_hardest_protocone_to_jets(std::vector<Cmomentum> *protocones, double R2, double ptmin=0.0);
    258316
    259317  /**
     
    314372  Csplit_merge_ptcomparison ptcomparison;
    315373
    316   /// stop split--merge when the SM_var of the hardest protojet
    317   /// is below this cut-off.
     374  /// stop split--merge or progressive-removal when the squared SM_var
     375  /// of the hardest protojet is below this cut-off. Note that this is
     376  /// a signed square (ie SM_var*|SM_var|) to be able to handle
     377  /// negative values.
     378  ///
     379  /// Note that the cut-off is set on the variable squared.
     380  double SM_var2_hardest_cut_off;
     381
     382  /// pt cutoff for the particles to put in p_uncol_hard
     383  /// this is meant to allow removing soft particles in the
     384  /// stable-cone search.
     385  ///
    318386  /// This is not collinear-safe so you should not use this
    319387  /// variable unless you really know what you are doing
    320388  /// Note that the cut-off is set on the variable squared.
    321   double SM_var2_hardest_cut_off;
    322 
    323   /// pt cutoff for the particles to put in p_uncol_hard
    324   /// this is meant to allow removing soft particles in the
    325   /// stable-cone search.
    326389  double stable_cone_soft_pt2_cutoff;
    327390
     
    390453  bool use_pt_weighted_splitting;
    391454
     455  /// use a user-defined scale to order the stable cones and jet
     456  /// candidates
     457  const Cuser_scale_base *_user_scale;
     458
    392459#ifdef ALLOW_MERGE_IDENTICAL_PROTOCONES
    393460  /// checkxor for the candidates (to avoid having twice the same contents)
  • external/fastjet/plugins/SISCone/vicinity.cc

    rba7fc1e r37deb3b  
    2121// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2222//                                                                           //
    23 // $Revision::                                                              $//
    24 // $Date::                                                                  $//
     23// $Revision:: 123                                                          $//
     24// $Date:: 2007-03-01 02:52:16 +0100 (Thu, 01 Mar 2007)                     $//
    2525///////////////////////////////////////////////////////////////////////////////
    2626
  • external/fastjet/plugins/SISCone/vicinity.h

    rba7fc1e r37deb3b  
    2222// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA //
    2323//                                                                           //
    24 // $Revision::                                                              $//
    25 // $Date::                                                                  $//
     24// $Revision:: 123                                                          $//
     25// $Date:: 2007-03-01 02:52:16 +0100 (Thu, 01 Mar 2007)                     $//
    2626///////////////////////////////////////////////////////////////////////////////
    2727
  • external/fastjet/plugins/TrackJet/TrackJetPlugin.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
    3 //
    4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: TrackJetPlugin.cc 3433 2014-07-23 08:17:03Z salam $
     3//
     4// Copyright (c) 2007-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
    7 // This file is part of FastJet. It contains code that has been
    8 // obtained from the Rivet project by Leif Lonnblad, Andy Buckley and
    9 // Jon Butterworth. See http://www.hepforge.org/downloads/rivet.
    10 // Rivet is free software released under the terms of the GNU Public
    11 // License(v2).
    12 // Changes from the original file are listed below.
     7// This file is part of FastJet.
    138//
    149//  FastJet is free software; you can redistribute it and/or modify
     
    1813//
    1914//  The algorithms that underlie FastJet have required considerable
    20 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    2117//  FastJet as part of work towards a scientific publication, please
    22 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    2320//
    2421//  FastJet is distributed in the hope that it will be useful,
     
    3027//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    3128//----------------------------------------------------------------------
    32 //ENDHEADER
     29//FJENDHEADER
    3330
    3431// History of changes from the original TrackJet.cc file in Rivet <=1.1.2
  • external/fastjet/plugins/TrackJet/fastjet/TrackJetPlugin.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: TrackJetPlugin.hh 2758 2011-11-24 08:31:58Z soyez $
     1//FJSTARTHEADER
     2// $Id: TrackJetPlugin.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2007-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __TRACKJETPLUGIN_HH__
  • external/fastjet/tools/BackgroundEstimatorBase.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: BackgroundEstimatorBase.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
  • external/fastjet/tools/BackgroundEstimatorBase.hh

    rba7fc1e r37deb3b  
    22#define __FASTJET_BACKGROUND_ESTIMATOR_BASE_HH__
    33
    4 //STARTHEADER
    5 // $Id: BackgroundEstimatorBase.hh 2689 2011-11-14 14:51:06Z soyez $
    6 //
    7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4//FJSTARTHEADER
     5// $Id: BackgroundEstimatorBase.hh 3516 2014-08-01 14:07:58Z salam $
     6//
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234#include <fastjet/ClusterSequenceAreaBase.hh>
     
    4345///
    4446/// Abstract base class that provides the basic interface for classes
    45 /// that estimate levels of background radiation in hadrion and
     47/// that estimate levels of background radiation in hadron and
    4648/// heavy-ion collider events.
    47 ///
    4849///
    4950class BackgroundEstimatorBase {
     
    99100  /// determination of sigma
    100101  virtual bool has_sigma() {return false;}
    101   //\}
    102  
     102
     103  //----------------------------------------------------------------
     104  // now do the same thing for rho_m and sigma_m
     105
     106  /// returns rho_m, the purely longitudinal, particle-mass-induced
     107  /// component of the background density per unit area
     108  virtual double rho_m() const{
     109    throw Error("rho_m() not supported for this Background Estimator");
     110  }
     111
     112  /// returns sigma_m, a measure of the fluctuations in the purely
     113  /// longitudinal, particle-mass-induced component of the background
     114  /// density per unit area; must be multipled by sqrt(area) to get
     115  /// fluctuations for a region of a given area.
     116  virtual double sigma_m() const {
     117    throw Error("sigma_m() not supported for this Background Estimator");
     118  }
     119
     120  /// Returns rho_m locally at the jet position. As for rho(jet), it is non-const.
     121  virtual double rho_m(const PseudoJet & /*jet*/){
     122    throw Error("rho_m(jet) not supported for this Background Estimator");
     123  }
     124
     125  /// Returns sigma_m locally at the jet position. As for rho(jet), it is non-const.
     126  virtual double sigma_m(const PseudoJet & /*jet*/) {
     127    throw Error("sigma_m(jet) not supported for this Background Estimator");
     128  }
     129
     130  /// Returns true if this background estimator has support for
     131  /// determination of rho_m.
     132  ///
     133  /// Note that support for sigma_m is automatic is one has sigma and
     134  /// rho_m support.
     135  virtual bool has_rho_m() const {return false;}
     136  //\}
     137
    103138
    104139  /// @name configuring the behaviour
     
    114149  /// The BackgroundRescalingYPolynomial class can be used to get a
    115150  /// rescaling that depends just on rapidity.
     151  ///
     152  /// There is currently no support for different rescaling classes
     153  /// for rho and rho_m determinations.
    116154  virtual void set_rescaling_class(const FunctionOfPseudoJet<double> * rescaling_class_in) { _rescaling_class = rescaling_class_in; }
    117155
  • external/fastjet/tools/Boost.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: Boost.hh 2689 2011-11-14 14:51:06Z soyez $
     1//FJSTARTHEADER
     2// $Id: Boost.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __FASTJET_TOOL_BOOST_HH__
  • external/fastjet/tools/CASubJetTagger.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: CASubJetTagger.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include <fastjet/tools/CASubJetTagger.hh>
  • external/fastjet/tools/CASubJetTagger.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: CASubJetTagger.hh 2616 2011-09-30 18:03:40Z salam $
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: CASubJetTagger.hh 3433 2014-07-23 08:17:03Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __CASUBJET_TAGGER_HH__
  • external/fastjet/tools/Filter.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: Filter.cc 3633 2014-08-15 13:23:52Z soyez $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/tools/Filter.hh"
     32#include "fastjet/tools/Recluster.hh"
    3033#include <fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh>
    3134#include <cassert>
     
    4548// class description
    4649string Filter::description() const {
     50  if (!_initialised){
     51    return "uninitialised Filter";
     52  }
     53
    4754  ostringstream ostr;
    4855  ostr << "Filter with subjet_def = ";
     
    7380// by the filtering
    7481PseudoJet Filter::result(const PseudoJet &jet) const {
     82  if (!_initialised){
     83    //Q: do we throw or do we return an empty PJ?
     84    throw Error("uninitialised Filter");
     85  }
     86
    7587  // start by getting the list of subjets (including a list of sanity
    7688  // checks)
     
    7890  //     _set_filtered_elements_cafilt)
    7991  vector<PseudoJet> subjets;
    80   JetDefinition subjet_def;
    81   bool discard_area;
    82   // NB: on return, subjet_def is set to the jet definition actually
    83   //     used (so that we can make use of its recombination scheme
    84   //     when joining the jets to be kept).
    85   _set_filtered_elements(jet, subjets, subjet_def, discard_area);
     92  //JetDefinition subjet_def;
     93  bool ca_optimised = _set_filtered_elements(jet, subjets);
     94
     95  // apply subtraction if needed:
     96  if (_subtractor){
     97    subjets = (*_subtractor)(subjets);
     98  } else if (_rho!=0){
     99    if (subjets.size()>0){
     100      const ClusterSequenceAreaBase *csab = subjets[0].validated_csab();
     101      for (unsigned int i=0;i<subjets.size();i++){
     102        subjets[i]=csab->subtracted_jet(subjets[i], _rho);
     103      }
     104    }
     105  }
    86106
    87107  // now build the vector of kept and rejected subjets
     
    94114
    95115  // gather the info under the form of a PseudoJet
    96   return _finalise(jet, kept, rejected, subjet_def, discard_area);
     116  return _finalise(jet, kept, rejected, ca_optimised);
    97117}
    98118
    99119
    100120// sets filtered_elements to be all the subjets on which filtering will work
    101 void Filter::_set_filtered_elements(const PseudoJet & jet,
    102                                     vector<PseudoJet> & filtered_elements,
    103                                     JetDefinition & subjet_def,
    104                                     bool & discard_area) const {
    105   // sanity checks
    106   //-------------------------------------------------------------------
    107   // make sure that the jet has constituents
    108   if (! jet.has_constituents())
    109     throw Error("Filter can only be applied on jets having constituents");
     121//
     122// return true when the subjets have been optained using teh optimised
     123// method for C/A
     124bool Filter::_set_filtered_elements(const PseudoJet & jet,
     125                                    vector<PseudoJet> & filtered_elements) const {
     126  // create the recluster instance
     127  Recluster recluster;
     128  if ((_Rfilt>=0) || (_Rfiltfunc))
     129    recluster = Recluster(cambridge_algorithm, (_Rfiltfunc) ? (*_Rfiltfunc)(jet) : _Rfilt, Recluster::keep_all);
     130  else
     131    recluster = Recluster(_subjet_def, false, Recluster::keep_all);
    110132
    111   // for a whole variety of checks, we shall need the "recursive"
    112   // pieces of the jet (the jet itself or recursing down to its most
    113   // fundamental pieces).
    114   // So we do compute these once and for all
    115   vector<PseudoJet> all_pieces; //.clear();
    116   if ((!_get_all_pieces(jet, all_pieces)) || (all_pieces.size()==0))
    117     throw Error("Attempt to filter a jet that has no associated ClusterSequence or is not a superposition of jets associated with a ClusterSequence");
    118  
    119   // if the filter uses subtraction, make sure we have a CS that supports area and has
    120   // explicit ghosts
    121   if (_uses_subtraction()) {
    122     if (!jet.has_area())   
    123       throw Error("Attempt to filter and subtract (non-zero rho or subtractor) without area info for the original jet");
    124 
    125     if (!_check_explicit_ghosts(all_pieces))
    126       throw Error("Attempt to filter and subtract (non-zero rho or subtractor) without explicit ghosts");
    127   }
    128 
    129   // if we're dealing with a dynamic determination of the filtering
    130   // radius, do it now
    131   if ((_Rfilt>=0) || (_Rfiltfunc)){
    132     double Rfilt = (_Rfiltfunc) ? (*_Rfiltfunc)(jet) : _Rfilt;
    133     const JetDefinition::Recombiner * common_recombiner = _get_common_recombiner(all_pieces);
    134     if (common_recombiner) {
    135       if (typeid(*common_recombiner) == typeid(JetDefinition::DefaultRecombiner)) {
    136         RecombinationScheme scheme =
    137           static_cast<const JetDefinition::DefaultRecombiner *>(common_recombiner)->scheme();
    138         subjet_def = JetDefinition(cambridge_algorithm, Rfilt, scheme);
    139       } else {
    140         subjet_def = JetDefinition(cambridge_algorithm, Rfilt, common_recombiner);
    141       }
    142     } else {
    143       subjet_def = JetDefinition(cambridge_algorithm, Rfilt);
    144     }
    145   } else {
    146     subjet_def = _subjet_def;
    147   }
    148 
    149   // get the jet definition to be use and whether we can apply our
    150   // simplified C/A+C/A filter
    151   //
    152   // we apply C/A clustering iff
    153   //  - the request subjet_def is C/A
    154   //  - the jet is either directly coming from C/A or if it is a
    155   //    superposition of C/A jets
    156   //  - the pieces agree with the recombination scheme of subjet_def
    157   //------------------------------------------------------------------
    158   bool simple_cafilt = _check_ca(all_pieces);
    159 
    160   // extract the subjets
    161   //-------------------------------------------------------------------
    162   discard_area = false;
    163   if (simple_cafilt){
    164     // first make sure that 'filtered_elements' is empty
    165     filtered_elements.clear();
    166     _set_filtered_elements_cafilt(jet, filtered_elements, subjet_def.R());
    167     // in the following case, areas can be erroneous and will be discarded
    168     discard_area = (!_uses_subtraction()) && (jet.has_area()) && (!_check_explicit_ghosts(all_pieces));
    169   } else {
    170     // here we'll simply recluster the jets.
    171     //
    172     // To include an area support we need
    173     //  - the jet to have an area
    174     //  - subtraction requested or explicit ghosts
    175     bool do_areas = (jet.has_area()) && ((_uses_subtraction()) || (_check_explicit_ghosts(all_pieces)));
    176     _set_filtered_elements_generic(jet, filtered_elements, subjet_def, do_areas);
    177   }
    178 
    179   // order the filtered elements in pt
    180   filtered_elements = sorted_by_pt(filtered_elements);
     133  // get the subjets
     134  //JetDefinition subjet_def;
     135  return recluster.get_new_jets_and_def(jet, filtered_elements);
    181136}
    182 
    183 // set the filtered elements in the simple case of C/A+C/A
    184 //
    185 // WATCH OUT: this could be recursively called, so filtered elements
    186 //            of 'jet' are APPENDED to 'filtered_elements'
    187 void Filter::_set_filtered_elements_cafilt(const PseudoJet & jet,
    188                                            vector<PseudoJet> & filtered_elements,
    189                                            double Rfilt) const{
    190   // we know that the jet is either a C/A jet or a superposition of
    191   // such pieces
    192   if (jet.has_associated_cluster_sequence()){
    193     // just extract the exclusive subjets of 'jet'
    194     const ClusterSequence *cs = jet.associated_cluster_sequence();
    195     vector<PseudoJet> local_fe;
    196 
    197     double dcut = Rfilt / cs->jet_def().R();
    198     if (dcut>=1.0){
    199       local_fe.push_back(jet);
    200     } else {
    201       dcut *= dcut;
    202       local_fe = jet.exclusive_subjets(dcut);
    203     }
    204 
    205     // subtract the jets if needed
    206     // Note that this one would work on pieces!!
    207     //-----------------------------------------------------------------
    208     if (_uses_subtraction()){
    209       const ClusterSequenceAreaBase * csab = jet.validated_csab();
    210       for (unsigned int i=0;i<local_fe.size();i++) {
    211         if (_subtractor) {
    212           local_fe[i] = (*_subtractor)(local_fe[i]);
    213         } else {
    214           local_fe[i] = csab->subtracted_jet(local_fe[i], _rho);
    215         }
    216       }
    217     }
    218 
    219     copy(local_fe.begin(), local_fe.end(), back_inserter(filtered_elements));
    220     return;
    221   }
    222 
    223   // just recurse into the pieces
    224   const vector<PseudoJet> & pieces = jet.pieces();
    225   for (vector<PseudoJet>::const_iterator it = pieces.begin();
    226        it!=pieces.end(); it++)
    227     _set_filtered_elements_cafilt(*it, filtered_elements, Rfilt);
    228 }
    229 
    230 
    231 // set the filtered elements in the generic re-clustering case (wo
    232 // subtraction)
    233 void Filter::_set_filtered_elements_generic(const PseudoJet & jet,
    234                                             vector<PseudoJet> & filtered_elements,
    235                                             const JetDefinition & subjet_def,
    236                                             bool do_areas) const{
    237   // create a new, internal, ClusterSequence from the jet constituents
    238   // get the subjets directly from there
    239   //
    240   // If the jet has area support then we separate the ghosts from the
    241   // "regular" particles so the subjets will also have area
    242   // support. Note that we do this regardless of whether rho is zero
    243   // or not.
    244   //
    245   // Note that to be able to separate the ghosts, one needs explicit
    246   // ghosts!!
    247   // ---------------------------------------------------------------
    248   if (do_areas){
    249     vector<PseudoJet> all_constituents = jet.constituents();
    250     vector<PseudoJet> regular_constituents, ghosts; 
    251 
    252     for (vector<PseudoJet>::iterator it = all_constituents.begin();
    253          it != all_constituents.end(); it++){
    254       if (it->is_pure_ghost())
    255         ghosts.push_back(*it);
    256       else
    257         regular_constituents.push_back(*it);
    258     }
    259 
    260     // figure out the ghost area from the 1st ghost (if none, any value
    261     // would probably do as the area will be 0 and subtraction will have
    262     // no effect!)
    263     double ghost_area = (ghosts.size()) ? ghosts[0].area() : 0.01;
    264     ClusterSequenceActiveAreaExplicitGhosts * csa
    265       = new ClusterSequenceActiveAreaExplicitGhosts(regular_constituents,
    266                                                     subjet_def,
    267                                                     ghosts, ghost_area);
    268 
    269     // get the subjets: we use the subtracted or unsubtracted ones
    270     // depending on rho or _subtractor being non-zero
    271     if (_uses_subtraction()) {
    272       if (_subtractor) {
    273         filtered_elements = (*_subtractor)(csa->inclusive_jets());
    274       } else {
    275         filtered_elements = csa->subtracted_jets(_rho);
    276       }
    277     } else {
    278       filtered_elements = csa->inclusive_jets();
    279     }
    280 
    281     // allow the cs to be deleted when it's no longer used
    282     csa->delete_self_when_unused();
    283   } else {
    284     ClusterSequence * cs = new ClusterSequence(jet.constituents(), subjet_def);
    285     filtered_elements = cs->inclusive_jets();
    286     // allow the cs to be deleted when it's no longer used
    287     cs->delete_self_when_unused();
    288   }
    289 }
    290 
    291137
    292138// gather the information about what is kept and rejected under the
     
    295141                            vector<PseudoJet> & kept,
    296142                            vector<PseudoJet> & rejected,
    297                             const JetDefinition & subjet_def,
    298                             const bool discard_area) const {
    299   // figure out which recombiner to use
    300   const JetDefinition::Recombiner &rec = *(subjet_def.recombiner());
     143                            bool ca_optimisation_used) const {
     144  PseudoJet filtered_jet;
    301145
    302   // create an appropriate structure and transfer the info to it
    303   PseudoJet filtered_jet = join<StructureType>(kept, rec);
     146  if (kept.size()+rejected.size()>0){
     147    // figure out which recombiner to use
     148    const JetDefinition::Recombiner &rec = (kept.size()>0)
     149      ? *(kept[0].associated_cs()->jet_def().recombiner())
     150      : *(rejected[0].associated_cs()->jet_def().recombiner());
     151
     152    // create an appropriate structure and transfer the info to it
     153    filtered_jet = join<StructureType>(kept, rec);
     154  } else {
     155    filtered_jet = join<StructureType>(kept);
     156  }
    304157  StructureType *fs = (StructureType*) filtered_jet.structure_non_const_ptr();
    305 //  fs->_original_jet = jet;
    306158  fs->_rejected = rejected;
     159 
     160  // if we've used C/A optimisation, we need to get rid of the area
     161  // information if it comes from a non-explicit-ghost clustering.
     162  // (because in that case it can be erroneous due the lack of
     163  // information about empty areas)
     164  if ((ca_optimisation_used) && (kept.size()+rejected.size()>0)){
     165    bool has_non_explicit_ghost_area = (kept.size()>0)
     166      ? (kept[0].has_area()     && kept[0].validated_csab()->has_explicit_ghosts())
     167      : (rejected[0].has_area() && rejected[0].validated_csab()->has_explicit_ghosts());
     168    if (has_non_explicit_ghost_area)
     169      fs->discard_area();
     170  }
    307171
    308   if (discard_area){
    309     // safety check: make sure there is an area to discard!!!
    310     assert(fs->_area_4vector_ptr);
    311     delete fs->_area_4vector_ptr;
    312     fs->_area_4vector_ptr=0;
    313   }
    314  
    315172  return filtered_jet;
    316173}
    317174
    318 // various checks
    319 //----------------------------------------------------------------------
    320 
    321 // get the pieces down to the fundamental pieces
    322 //
    323 // Note that this just checks that there is an associated CS to the
    324 // fundamental pieces, not that it is still valid
    325 bool Filter::_get_all_pieces(const PseudoJet &jet, vector<PseudoJet> &all_pieces) const{
    326   if (jet.has_associated_cluster_sequence()){
    327     all_pieces.push_back(jet);
    328     return true;
    329   }
    330 
    331   if (jet.has_pieces()){
    332     const vector<PseudoJet> pieces = jet.pieces();
    333     for (vector<PseudoJet>::const_iterator it=pieces.begin(); it!=pieces.end(); it++)
    334       if (!_get_all_pieces(*it, all_pieces)) return false;
    335     return true;
    336   }
    337 
    338   return false;
    339 }
    340 
    341 // get the common recombiner to all pieces (NULL if none)
    342 //
    343 // Note that if the jet has an associated cluster sequence that is no
    344 // longer valid, an error will be thrown (needed since it could be the
    345 // 1st check called after the enumeration of the pieces)
    346 const JetDefinition::Recombiner* Filter::_get_common_recombiner(const vector<PseudoJet> &all_pieces) const{
    347   const JetDefinition & jd_ref = all_pieces[0].validated_cs()->jet_def();
    348   for (unsigned int i=1; i<all_pieces.size(); i++)
    349     if (!all_pieces[i].validated_cs()->jet_def().has_same_recombiner(jd_ref)) return NULL;
    350 
    351   return jd_ref.recombiner();
    352 }
    353 
    354 // check if the jet (or all its pieces) have explicit ghosts
    355 // (assuming the jet has area support
    356 //
    357 // Note that if the jet has an associated cluster sequence that is no
    358 // longer valid, an error will be thrown (needed since it could be the
    359 // 1st check called after the enumeration of the pieces)
    360 bool Filter::_check_explicit_ghosts(const vector<PseudoJet> &all_pieces) const{
    361   for (vector<PseudoJet>::const_iterator it=all_pieces.begin(); it!=all_pieces.end(); it++)
    362     if (! it->validated_csab()->has_explicit_ghosts()) return false;
    363   return true;
    364 }
    365 
    366 // check if one can apply the simplification for C/A subjets
    367 //
    368 // This includes:
    369 //  - the subjet definition asks for C/A subjets
    370 //  - all the pieces share the same CS
    371 //  - that CS is C/A with the same recombiner as the subjet def
    372 //  - the filtering radius is not larger than any of the pairwise
    373 //    distance between the pieces
    374 //
    375 // Note that if the jet has an associated cluster sequence that is no
    376 // longer valid, an error will be thrown (needed since it could be the
    377 // 1st check called after the enumeration of the pieces)
    378 bool Filter::_check_ca(const vector<PseudoJet> &all_pieces) const{
    379   if (_subjet_def.jet_algorithm() != cambridge_algorithm) return false;
    380 
    381   // check that the 1st of all the pieces (we're sure there is at
    382   // least one) is coming from a C/A clustering. Then check that all
    383   // the following pieces share the same ClusterSequence
    384   const ClusterSequence * cs_ref = all_pieces[0].validated_cs();
    385   if (cs_ref->jet_def().jet_algorithm() != cambridge_algorithm) return false;
    386   for (unsigned int i=1; i<all_pieces.size(); i++)
    387     if (all_pieces[i].validated_cs() != cs_ref) return false;
    388 
    389   // check that the 1st peice has the same recombiner as the one used
    390   // for the subjet clustering
    391   // Note that since they share the same CS, checking the 2st one is enough
    392   if (!cs_ref->jet_def().has_same_recombiner(_subjet_def)) return false;
    393 
    394   // we also have to make sure that the filtering radius is not larger
    395   // than any of the inter-pieces distance
    396   double Rfilt2 = _subjet_def.R();
    397   Rfilt2 *= Rfilt2;
    398   for (unsigned int i=0; i<all_pieces.size()-1; i++){
    399     for (unsigned int j=i+1; j<all_pieces.size(); j++){
    400       if (all_pieces[i].squared_distance(all_pieces[j]) <  Rfilt2) return false;
    401     }
    402   }
    403 
    404   return true;
    405 }
    406 
    407 //----------------------------------------------------------------------
    408 // FilterInterface implementation
    409 //----------------------------------------------------------------------
    410 
    411175
    412176FASTJET_END_NAMESPACE      // defined in fastjet/internal/base.hh
  • external/fastjet/tools/Filter.hh

    rba7fc1e r37deb3b  
    22#define __FASTJET_TOOLS_FILTER_HH__
    33
    4 //STARTHEADER
    5 // $Id: Filter.hh 2694 2011-11-14 22:27:51Z salam $
    6 //
    7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4//FJSTARTHEADER
     5// $Id: Filter.hh 3494 2014-07-30 20:38:48Z soyez $
     6//
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234#include <fastjet/ClusterSequence.hh>
     
    98100  /// Note: this is just for derived classes
    99101  ///       a Filter initialised through this constructor will not work!
    100   Filter() : _Rfiltfunc(0){};
     102  Filter() : _Rfiltfunc(0), _initialised(false){};
    101103
    102104  /// define a filter that decomposes a jet into subjets using a
     
    113115  /// ghosts
    114116  Filter(JetDefinition subjet_def, Selector selector, double rho = 0.0) :
    115     _subjet_def(subjet_def), _Rfiltfunc(0), _Rfilt(-1), _selector(selector), _rho(rho), _subtractor(0) {}
     117    _subjet_def(subjet_def), _Rfiltfunc(0), _Rfilt(-1), _selector(selector), _rho(rho), _subtractor(0), _initialised(true) {}
    116118
    117119  /// Same as the full constructor (see above) but just specifying the radius
     
    121123  ///  \param Rfilt   the filtering radius
    122124  Filter(double Rfilt, Selector selector, double rho = 0.0) :
    123     _Rfiltfunc(0), _Rfilt(Rfilt), _selector(selector), _rho(rho), _subtractor(0) {
     125    _Rfiltfunc(0), _Rfilt(Rfilt), _selector(selector), _rho(rho), _subtractor(0), _initialised(true) {
    124126    if (_Rfilt<0)
    125127      throw Error("Attempt to create a Filter with a negative filtering radius");
     
    133135  ///  \param Rfilt_func   the filtering radius function of a PseudoJet
    134136  Filter(FunctionOfPseudoJet<double> *Rfilt_func, Selector selector, double rho = 0.0) :
    135     _Rfiltfunc(Rfilt_func), _Rfilt(-1), _selector(selector), _rho(rho), _subtractor(0) {}
     137    _Rfiltfunc(Rfilt_func), _Rfilt(-1), _selector(selector), _rho(rho), _subtractor(0), _initialised(true) {}
    136138
    137139  /// default dtor
     
    140142  /// Set a subtractor that is applied to all individual subjets before
    141143  /// deciding which ones to keep. It takes precedence over a non-zero rho.
    142   void set_subtractor(const Transformer * subtractor) {_subtractor = subtractor;}
     144  void set_subtractor(const FunctionOfPseudoJet<PseudoJet> * subtractor) {_subtractor = subtractor;}
    143145
    144146  /// runs the filtering and sets kept and rejected to be the jets of interest
     
    159161  /// It also sets the subjet_def to be used in joining things (the bit of
    160162  /// subjet def that is of interest for later is the recombiner).
    161   void _set_filtered_elements(const PseudoJet & jet,
    162                               std::vector<PseudoJet> & filtered_elements,
    163                               JetDefinition & subjet_def,
    164                               bool & discard_area) const;
     163  ///
     164  /// this returns true if teh optimisation trick for C/A reclustering has been used
     165  bool _set_filtered_elements(const PseudoJet & jet,
     166                              std::vector<PseudoJet> & filtered_elements) const;
    165167 
    166   /// set the filtered elements in the simple case of C/A+C/A
    167   void _set_filtered_elements_cafilt(const PseudoJet & jet,
    168                                      std::vector<PseudoJet> & filtered_elements,
    169                                      double Rfilt) const;
    170 
    171   /// set the filtered elements in the generic re-clustering case
    172   void _set_filtered_elements_generic(const PseudoJet & jet,
    173                                       std::vector<PseudoJet> & filtered_elements,
    174                                       const JetDefinition & subjet_def,
    175                                       bool do_areas) const;
    176 
    177168  /// gather the information about what is kept and rejected under the
    178169  /// form of a PseudoJet with a special ClusterSequenceInfo
     170  ///
     171  /// The last argument (ca_optimisation_used) should be true if the
     172  /// optimisation trick for C/A reclustering has been used (in which
     173  /// case some extra tests have to be run for non-explicit-ghost
     174  /// areas)
    179175  PseudoJet _finalise(const PseudoJet & jet,
    180176                      std::vector<PseudoJet> & kept,
    181177                      std::vector<PseudoJet> & rejected,
    182                       const JetDefinition & subjet_def,
    183                       const bool discard_area) const;
    184 
    185   // a series of checks
    186   //--------------------------------------------------------------------
    187   /// get the pieces down to the fundamental pieces
    188   bool _get_all_pieces(const PseudoJet &jet, std::vector<PseudoJet> &all_pieces) const;
    189 
    190   /// get the common recombiner to all pieces (NULL if none)
    191   const JetDefinition::Recombiner* _get_common_recombiner(const std::vector<PseudoJet> &all_pieces) const;
    192 
    193   /// check if one can apply the simplified trick for C/A subjets
    194   bool _check_ca(const std::vector<PseudoJet> &all_pieces) const;
    195 
    196   /// check if the jet (or all its pieces) have explicit ghosts
    197   /// (assuming the jet has area support
    198   ///
    199   /// Note that if the jet has an associated cluster sequence that is no
    200   /// longer valid, an error will be thrown
    201   bool _check_explicit_ghosts(const std::vector<PseudoJet> &all_pieces) const;
     178                      bool ca_optimisation_used) const;
    202179
    203180  bool _uses_subtraction() const {return (_subtractor || _rho != 0);}
     
    209186  Selector _selector;  ///< the subjet selection criterium
    210187  double _rho;                 ///< the background density (used for subtraction when possible)
    211   const Transformer * _subtractor; ///< for subtracting bkgd density from subjets
     188  const FunctionOfPseudoJet<PseudoJet> * _subtractor; ///< for subtracting bkgd density from subjets
     189
     190  bool _initialised;    ///< true when the Filter has been properly intialised
    212191};
    213192
  • external/fastjet/tools/GridMedianBackgroundEstimator.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: GridMedianBackgroundEstimator.cc 3555 2014-08-11 09:56:35Z salam $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931
     
    3234
    3335FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
     36
    3437
    3538//----------------------------------------------------------------------
     
    3942// of the specified particles.
    4043void GridMedianBackgroundEstimator::set_particles(const vector<PseudoJet> & particles) {
    41   fill(_scalar_pt.begin(), _scalar_pt.end(), 0.0);
    42   for (unsigned i = 0; i < particles.size(); i++) {
    43     int j = igrid(particles[i]);
    44     if (j >= 0){
    45       if (_rescaling_class == 0)
    46         _scalar_pt[j] += particles[i].perp();
    47       else
    48         _scalar_pt[j] += particles[i].perp()/(*_rescaling_class)(particles[i]);
     44  vector<double> scalar_pt(n_tiles(), 0.0);
     45
     46#ifdef FASTJET_GMBGE_USEFJGRID
     47  assert(all_tiles_equal_area());
     48  //assert(n_good_tiles() == n_tiles()); // not needed now that we have an implementation
     49#endif
     50
     51  // check if we need to compute only rho or both rho and rho_m
     52  if (_enable_rho_m){
     53    // both rho and rho_m
     54    //
     55    // this requires a few other variables
     56    vector<double> scalar_dt(n_tiles(), 0.0);
     57    double pt, dt;
     58    for (unsigned i = 0; i < particles.size(); i++) {
     59      int j = tile_index(particles[i]);
     60      if (j >= 0){
     61        pt = particles[i].pt();
     62        dt = particles[i].mt() - pt;
     63        if (_rescaling_class == 0){
     64          scalar_pt[j] += pt;
     65          scalar_dt[j] += dt;
     66        } else {
     67          double r = (*_rescaling_class)(particles[i]);
     68          scalar_pt[j] += pt/r;
     69          scalar_dt[j] += dt/r;
     70        }
     71      }
     72    }
     73    // sort things for _percentile
     74    sort(scalar_dt.begin(), scalar_dt.end());
     75
     76    // compute rho_m and sigma_m (see comment below for the
     77    // normaliosation of sigma)
     78    double p50 = _percentile(scalar_dt, 0.5);
     79    _rho_m   = p50 / mean_tile_area();
     80    _sigma_m = (p50-_percentile(scalar_dt, (1.0-0.6827)/2.0))/sqrt(mean_tile_area());
     81  } else {
     82    // only rho
     83    //fill(_scalar_pt.begin(), _scalar_pt.end(), 0.0);
     84    for (unsigned i = 0; i < particles.size(); i++) {
     85      int j = tile_index(particles[i]);
     86      if (j >= 0){
     87        if (_rescaling_class == 0){
     88          scalar_pt[j] += particles[i].pt();
     89        } else {
     90          scalar_pt[j] += particles[i].pt()/(*_rescaling_class)(particles[i]);
     91        }
     92      }
    4993    }
    5094  }
    51   sort(_scalar_pt.begin(), _scalar_pt.end());
     95
     96  // if there are some "bad" tiles, then we need to exclude them from
     97  // the calculation of the median. We'll do this by condensing the
     98  // scalar_pt vector down to just the values for the tiles that are
     99  // good.
     100  //
     101  // tested answers look right in "issue" 2014-08-08-testing-rect-grid
     102  if (n_good_tiles() != n_tiles()) {
     103    int newn = 0;
     104    for (unsigned i = 0; i < scalar_pt.size(); i++) {
     105      if (tile_is_good(i)) {
     106        // clang gets confused with the SharedPtr swap if we don't
     107        // have std:: here
     108        std::swap(scalar_pt[i],scalar_pt[newn]);
     109        newn++;
     110      }
     111    }
     112    scalar_pt.resize(newn);
     113  }
     114
     115  // in all cases, carry on with the computation of rho
     116  //
     117  // first sort
     118  sort(scalar_pt.begin(), scalar_pt.end());
     119
     120  // then compute rho
     121  //
     122  // watch out: by definition, our sigma is the standard deviation of
     123  // the pt density multiplied by the square root of the cell area
     124  double p50 = _percentile(scalar_pt, 0.5);
     125  _rho   = p50 / mean_tile_area();
     126  _sigma = (p50-_percentile(scalar_pt, (1.0-0.6827)/2.0))/sqrt(mean_tile_area());
    52127
    53128  _has_particles = true;
     
    61136double GridMedianBackgroundEstimator::rho() const {
    62137  verify_particles_set();
    63   return _percentile(_scalar_pt, 0.5) / _cell_area;
     138  return _rho;
    64139}
    65140
     
    71146double GridMedianBackgroundEstimator::sigma() const{
    72147  verify_particles_set();
    73   // watch out: by definition, our sigma is the standard deviation of
    74   // the pt density multiplied by the square root of the cell area
    75   return (_percentile(_scalar_pt, 0.5) -
    76           _percentile(_scalar_pt, (1.0-0.6827)/2.0)
    77           )/sqrt(_cell_area);
     148  return _sigma;
    78149}
    79150
     
    85156// determination.
    86157double GridMedianBackgroundEstimator::rho(const PseudoJet & jet)  {
    87   verify_particles_set();
     158  //verify_particles_set();
    88159  double rescaling = (_rescaling_class == 0) ? 1.0 : (*_rescaling_class)(jet);
    89160  return rescaling*rho();
     
    95166// the position of a given jet. As for rho(jet), it is non-const.
    96167double GridMedianBackgroundEstimator::sigma(const PseudoJet & jet){
    97   verify_particles_set();
     168  //verify_particles_set();
    98169  double rescaling = (_rescaling_class == 0) ? 1.0 : (*_rescaling_class)(jet);
    99170  return rescaling*sigma();
     171}
     172
     173//----------------------------------------------------------------------
     174// returns rho_m (particle-masses contribution to the 4-vector density)
     175double GridMedianBackgroundEstimator::rho_m() const {
     176  if (! _enable_rho_m){
     177    throw Error("GridMediamBackgroundEstimator: rho_m requested but rho_m calculation has been disabled.");
     178  }
     179  verify_particles_set();
     180  return _rho_m;
     181}
     182
     183
     184//----------------------------------------------------------------------
     185// returns sigma_m (particle-masses contribution to the 4-vector
     186// density); must be multipled by sqrt(area) to get fluctuations
     187// for a region of a given area.
     188double GridMedianBackgroundEstimator::sigma_m() const{
     189  if (! _enable_rho_m){
     190    throw Error("GridMediamBackgroundEstimator: sigma_m requested but rho_m/sigma_m calculation has been disabled.");
     191  }
     192  verify_particles_set();
     193  return _sigma_m;
     194}
     195
     196//----------------------------------------------------------------------
     197// returns rho_m locally at the position of a given jet. As for
     198// rho(jet), it is non-const.
     199double GridMedianBackgroundEstimator::rho_m(const PseudoJet & jet)  {
     200  //verify_particles_set();
     201  double rescaling = (_rescaling_class == 0) ? 1.0 : (*_rescaling_class)(jet);
     202  return rescaling*rho_m();
     203}
     204
     205
     206//----------------------------------------------------------------------
     207// returns sigma_m locally at the position of a given jet. As for
     208// rho(jet), it is non-const.
     209double GridMedianBackgroundEstimator::sigma_m(const PseudoJet & jet){
     210  //verify_particles_set();
     211  double rescaling = (_rescaling_class == 0) ? 1.0 : (*_rescaling_class)(jet);
     212  return rescaling*sigma_m();
    100213}
    101214
     
    112225string GridMedianBackgroundEstimator::description() const {
    113226  ostringstream desc;
     227#ifdef FASTJET_GMBGE_USEFJGRID
     228  desc << "GridMedianBackgroundEstimator, with " << RectangularGrid::description();
     229#else
    114230  desc << "GridMedianBackgroundEstimator, with grid extension |y| < " << _ymax
    115        << " and requested grid spacing = " << _requested_grid_spacing;
     231       << ", and grid cells of size dy x dphi = " << _dy << " x " << _dphi
     232       << " (requested size = " << _requested_grid_spacing << ")";
     233#endif
    116234  return desc.str();
    117235}       
     
    144262
    145263
     264#ifndef FASTJET_GMBGE_USEFJGRID
    146265//----------------------------------------------------------------------
    147266// protected material
     
    168287
    169288  _ntotal = _nphi * _ny;
    170   _scalar_pt.resize(_ntotal);
    171   _cell_area = _dy * _dphi;
    172 }
    173 
    174 
    175 //----------------------------------------------------------------------
    176 // retrieve the grid cell index for a given PseudoJet
    177 int GridMedianBackgroundEstimator::igrid(const PseudoJet & p) const {
     289  //_scalar_pt.resize(_ntotal);
     290  _tile_area = _dy * _dphi;
     291}
     292
     293
     294//----------------------------------------------------------------------
     295// retrieve the grid tile index for a given PseudoJet
     296int GridMedianBackgroundEstimator::tile_index(const PseudoJet & p) const {
    178297  // directly taking int does not work for values between -1 and 0
    179298  // so use floor instead
     
    193312  if (iphi == _nphi) iphi = 0; // just in case of rounding errors
    194313
    195   int igrid_res = iy*_nphi + iphi;
    196   assert (igrid_res >= 0 && igrid_res < _ny*_nphi);
    197   return igrid_res;
    198 }
     314  int index_res = iy*_nphi + iphi;
     315  assert (index_res >= 0 && index_res < _ny*_nphi);
     316  return index_res;
     317}
     318#endif // FASTJET_GMBGE_USEFJGRID
     319
    199320
    200321
  • external/fastjet/tools/GridMedianBackgroundEstimator.hh

    rba7fc1e r37deb3b  
    22#define __GRID_MEDIAN_BACKGROUND_ESTIMATOR_HH__
    33
    4 //STARTHEADER
    5 // $Id: GridMedianBackgroundEstimator.hh 2580 2011-09-13 17:25:43Z salam $
    6 //
    7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4//FJSTARTHEADER
     5// $Id: GridMedianBackgroundEstimator.hh 3610 2014-08-13 09:49:28Z salam $
     6//
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234
    3335#include "fastjet/tools/BackgroundEstimatorBase.hh"
     36
     37// if defined then we'll use the RectangularGrid class
     38//
     39// (For FastJet 3.2, maybe remove the symbol and simply clean up the
     40// code below to use exclusively the RectangularGrid)
     41#define FASTJET_GMBGE_USEFJGRID
     42
     43#ifdef FASTJET_GMBGE_USEFJGRID
     44#include "fastjet/RectangularGrid.hh"
     45#endif
     46
     47
    3448
    3549FASTJET_BEGIN_NAMESPACE      // defined in fastjet/internal/base.hh
     
    6175///   rho() [Without rescaling, they are identical]
    6276///
    63 class GridMedianBackgroundEstimator : public BackgroundEstimatorBase {
     77class GridMedianBackgroundEstimator : public BackgroundEstimatorBase
     78#ifdef FASTJET_GMBGE_USEFJGRID
     79                                                                    , RectangularGrid
     80#endif
     81{
     82
    6483public:
    6584  /// @name  constructors and destructors
    6685  //\{
     86#ifdef FASTJET_GMBGE_USEFJGRID
    6787  //----------------------------------------------------------------
    6888  ///   \param ymax   maximal absolute rapidity extent of the grid
     
    7191  ///             periodicity in azimuthal angle (size, not area)
    7292  GridMedianBackgroundEstimator(double ymax, double requested_grid_spacing) :
     93    RectangularGrid(ymax, requested_grid_spacing),
     94    _has_particles(false), _enable_rho_m(true) {}
     95
     96  //----------------------------------------------------------------
     97  /// Constructor based on a user's fully specified RectangularGrid
     98  GridMedianBackgroundEstimator(const RectangularGrid & grid) :
     99    RectangularGrid(grid),
     100    _has_particles(false), _enable_rho_m(true) {
     101    if (!RectangularGrid::is_initialised())
     102      throw Error("attempt to construct GridMedianBackgroundEstimator with uninitialised RectangularGrid");
     103  }   
     104
     105#else  // alternative in old framework where we didn't have the rectangular grid
     106  GridMedianBackgroundEstimator(double ymax, double requested_grid_spacing) :
    73107    _ymin(-ymax), _ymax(ymax),
    74108    _requested_grid_spacing(requested_grid_spacing),
    75     _has_particles(false){setup_grid();}
     109    _has_particles(false), _enable_rho_m(true)
     110  {
     111     setup_grid();
     112  }
     113#endif // FASTJET_GMBGE_USEFJGRID
     114
    76115  //\}
    77116
     
    84123  /// of the specified particles.
    85124  void set_particles(const std::vector<PseudoJet> & particles);
     125
     126  /// determine whether the automatic calculation of rho_m and sigma_m
     127  /// is enabled (by default true)
     128  void set_compute_rho_m(bool enable){ _enable_rho_m = enable;}
    86129
    87130  //\}
     
    114157  bool has_sigma() {return true;}
    115158
     159  //-----------------------------------------------------------------
     160  /// Returns rho_m, the purely longitudinal, particle-mass-induced
     161  /// component of the background density per unit area
     162  double rho_m() const;
     163
     164  /// returns sigma_m, a measure of the fluctuations in the purely
     165  /// longitudinal, particle-mass-induced component of the background
     166  /// density per unit area; must be multipled by sqrt(area) to get
     167  /// fluctuations for a region of a given area.
     168  double sigma_m() const;
     169
     170  /// Returns rho_m locally at the jet position. As for rho(jet), it is non-const.
     171  double rho_m(const PseudoJet & jet);
     172
     173  /// Returns sigma_m locally at the jet position. As for rho(jet), it is non-const.
     174  double sigma_m(const PseudoJet & jet);
     175
     176  /// Returns true if this background estimator has support for
     177  /// determination of rho_m.
     178  ///
     179  /// Note that support for sigma_m is automatic is one has sigma and
     180  /// rho_m support.
     181  bool has_rho_m() const {return _enable_rho_m;}
     182
     183
    116184  /// returns the area of the grid cells (all identical, but
    117185  /// referred to as "mean" area for uniformity with JetMedianBGE).
    118   double mean_area() const {return _cell_area;}
     186  double mean_area() const {return mean_tile_area();}
    119187  //\}
    120188
     
    134202  /// Note that this has to be called BEFORE any attempt to do an
    135203  /// actual computation
     204  ///
     205  /// The same profile will be used for both pt and mt (this is
     206  /// probabaly a good approximation since the particle density
     207  /// changes is what dominates the rapidity profile)
    136208  virtual void set_rescaling_class(const FunctionOfPseudoJet<double> * rescaling_class);
    137209
     
    149221
    150222private:
     223
     224#ifndef FASTJET_GMBGE_USEFJGRID
     225
    151226  /// configure the grid
    152227  void setup_grid();
    153228
    154229  /// retrieve the grid cell index for a given PseudoJet
    155   int igrid(const PseudoJet & p) const;
     230  int tile_index(const PseudoJet & p) const;
     231
     232  // information about the grid
     233  double _ymin, _ymax, _dy, _dphi, _requested_grid_spacing, _tile_area;
     234  int _ny, _nphi, _ntotal;
     235
     236  int n_tiles() const {return _ntotal;}
     237  int n_good_tiles() const {return n_tiles();}
     238  int tile_is_good(int /* itile */) const {return true;}
     239
     240  double mean_tile_area() const {return _tile_area;}
     241#endif // FASTJET_GMBGE_USEFJGRID
     242
    156243
    157244  /// verify that particles have been set and throw an error if not
    158245  void verify_particles_set() const;
    159246
    160   // information about the grid
    161   double _ymin, _ymax, _dy, _dphi, _requested_grid_spacing, _cell_area;
    162   int _ny, _nphi, _ntotal;
    163 
    164247  // information abotu the event
    165   std::vector<double> _scalar_pt;
     248  //std::vector<double> _scalar_pt;
     249  double _rho, _sigma, _rho_m, _sigma_m;
    166250  bool _has_particles;
    167 
    168   // various warnings to let people aware of potential dangers
     251  bool _enable_rho_m;
     252
     253  // various warnings to inform people of potential dangers
    169254  LimitedWarning _warning_rho_of_jet;
    170255  LimitedWarning _warning_rescaling;
  • external/fastjet/tools/JHTopTagger.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: JHTopTagger.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include <fastjet/tools/JHTopTagger.hh>
  • external/fastjet/tools/JHTopTagger.hh

    rba7fc1e r37deb3b  
    22#define __FASTJET_JH_TOP_TAGGER_HH__
    33
    4 //STARTHEADER
    5 // $Id: JHTopTagger.hh 2689 2011-11-14 14:51:06Z soyez $
    6 //
    7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4//FJSTARTHEADER
     5// $Id: JHTopTagger.hh 3433 2014-07-23 08:17:03Z salam $
     6//
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234
  • external/fastjet/tools/JetMedianBackgroundEstimator.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: JetMedianBackgroundEstimator.cc 3517 2014-08-01 14:23:13Z soyez $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/tools/JetMedianBackgroundEstimator.hh"
     
    3133#include <fastjet/ClusterSequenceStructure.hh>
    3234#include <iostream>
     35#include <sstream>
    3336
    3437FASTJET_BEGIN_NAMESPACE     // defined in fastjet/internal/base.hh
     
    3740
    3841double BackgroundJetScalarPtDensity::result(const PseudoJet & jet) const {
    39   std::vector<PseudoJet> constituents = jet.constituents();
     42  // do not include the ghosts in the list of constituents to have a
     43  // correct behaviour when _pt_power is <= 0
     44  std::vector<PseudoJet> constituents = (!SelectorIsPureGhost())(jet.constituents());
    4045  double scalar_pt = 0;
    4146  for (unsigned i = 0; i < constituents.size(); i++) {
     
    4348  }
    4449  return scalar_pt / jet.area();
     50}
     51
     52
     53std::string BackgroundJetScalarPtDensity::description() const {
     54  ostringstream oss;
     55  oss << "BackgroundScalarJetPtDensity";
     56  if (_pt_power != 1.0) oss << " with pt_power = " << _pt_power;
     57  return oss.str();
    4558}
    4659
     
    7285                                         const JetDefinition &jet_def,
    7386                                         const AreaDefinition &area_def)
    74   : _rho_range(rho_range), _jet_def(jet_def), _area_def(area_def) {
     87  : _rho_range(rho_range), _jet_def(jet_def), _area_def(area_def){
    7588
    7689  // initialise things decently
     
    261274
    262275//----------------------------------------------------------------------
     276// returns rho_m (particle-masses contribution to the 4-vector density)
     277double JetMedianBackgroundEstimator::rho_m() const {
     278  if (! has_rho_m()){
     279    throw Error("JetMediamBackgroundEstimator: rho_m requested but rho_m calculation is disabled (either eplicitly or due to the presence of a jet density class).");
     280  }
     281  if (_rho_range.takes_reference())
     282    throw Error("The background estimation is obtained from a selector that takes a reference jet. rho(PseudoJet) should be used in that case");
     283  _recompute_if_needed();
     284  return _rho_m;
     285}
     286
     287
     288//----------------------------------------------------------------------
     289// returns sigma_m (particle-masses contribution to the 4-vector
     290// density); must be multipled by sqrt(area) to get fluctuations
     291// for a region of a given area.
     292double JetMedianBackgroundEstimator::sigma_m() const{
     293  if (! has_rho_m()){
     294    throw Error("JetMediamBackgroundEstimator: sigma_m requested but rho_m/sigma_m calculation is disabled (either explicitly or due to the presence of a jet density class).");
     295  }
     296  if (_rho_range.takes_reference())
     297    throw Error("The background estimation is obtained from a selector that takes a reference jet. rho(PseudoJet) should be used in that case");
     298  _recompute_if_needed();
     299  return _sigma_m;
     300}
     301
     302//----------------------------------------------------------------------
     303// returns rho_m locally at the position of a given jet. As for
     304// rho(jet), it is non-const.
     305double JetMedianBackgroundEstimator::rho_m(const PseudoJet & jet)  {
     306  _recompute_if_needed(jet);
     307  double our_rho = _rho_m;
     308  if (_rescaling_class != 0) {
     309    our_rho *= (*_rescaling_class)(jet);
     310  }
     311  return our_rho;
     312}
     313
     314
     315//----------------------------------------------------------------------
     316// returns sigma_m locally at the position of a given jet. As for
     317// rho(jet), it is non-const.
     318double JetMedianBackgroundEstimator::sigma_m(const PseudoJet & jet){
     319  _recompute_if_needed(jet);
     320  double our_sigma = _sigma_m;
     321  if (_rescaling_class != 0) {
     322    our_sigma *= (*_rescaling_class)(jet);
     323  }
     324  return our_sigma;
     325}
     326
     327//----------------------------------------------------------------------
    263328// configuring behaviour
    264329//----------------------------------------------------------------------
     
    271336  set_provide_fj2_sigma(false);
    272337
     338  _enable_rho_m = true;
     339
    273340  // reset the computed values
    274341  _rho = _sigma = 0.0;
     342  _rho_m = _sigma_m = 0.0;
    275343  _n_jets_used = _n_empty_jets = 0;
    276344  _empty_area = _mean_area = 0.0;
     
    289357// is used (as occurs also if this function is not called).
    290358void JetMedianBackgroundEstimator::set_jet_density_class(const FunctionOfPseudoJet<double> * jet_density_class_in) {
    291   _warnings_preliminary.warn("JetMedianBackgroundEstimator::set_jet_density_class: density classes are still preliminary in FastJet 3.0. Their interface may differ in future releases (without guaranteeing backward compatibility).");
     359  _warnings_preliminary.warn("JetMedianBackgroundEstimator::set_jet_density_class: density classes are still preliminary in FastJet 3.1. Their interface may differ in future releases (without guaranteeing backward compatibility). Note that since FastJet 3.1, rho_m and sigma_m are accessible direclty in JetMedianBackgroundEstimator and GridMedianBackgroundEstimator(with no need for a density class).");
    292360  _jet_density_class = jet_density_class_in;
    293361  _uptodate = false;
     
    338406  // fill the vector of pt/area (or the quantity from the jet density class)
    339407  //  - in the range
    340   vector<double> vector_for_median;
     408  vector<double> vector_for_median_pt;
     409  vector<double> vector_for_median_dt;
    341410  double total_area  = 0.0;
    342411  _n_jets_used = 0;
     
    346415
    347416  // compute the pt/area for the selected jets
     417  double median_input_pt, median_input_dt=0.0;
     418  BackgroundJetPtMDensity m_density;
     419  bool do_rho_m = has_rho_m();
    348420  for (unsigned i = 0; i < selected_jets.size(); i++) {
    349421    const PseudoJet & current_jet = selected_jets[i];
    350422
    351423    double this_area = (_use_area_4vector) ? current_jet.area_4vector().perp() : current_jet.area();
    352 
    353424    if (this_area>0){
    354       double median_input;
     425      // for the pt component, we either use pt or the user-provided
     426      // density class
    355427      if (_jet_density_class == 0) {
    356         median_input = current_jet.perp()/this_area;
     428        median_input_pt = current_jet.perp()/this_area;
    357429      } else {
    358         median_input = (*_jet_density_class)(current_jet);
     430        median_input_pt = (*_jet_density_class)(current_jet);
    359431      }
     432
     433      // handle the rho_m part if requested
     434      // note that we're using the scalar area as a normalisation inside the
     435      // density class!
     436      if (do_rho_m)
     437        median_input_dt = m_density(current_jet);
     438   
     439      // perform rescaling if needed
    360440      if (_rescaling_class != 0) {
    361         median_input /= (*_rescaling_class)(current_jet);
     441        double resc = (*_rescaling_class)(current_jet);;
     442        median_input_pt /= resc;
     443        median_input_dt /= resc;
    362444      }
    363       vector_for_median.push_back(median_input);
     445     
     446      // store the result for future computation of the median
     447      vector_for_median_pt.push_back(median_input_pt);
     448      if (do_rho_m)
     449        vector_for_median_dt.push_back(median_input_dt);
     450
    364451      total_area  += this_area;
    365452      _n_jets_used++;
     
    367454      _warnings_zero_area.warn("JetMedianBackgroundEstimator::_compute(...): discarded jet with zero area. Zero-area jets may be due to (i) too large a ghost area (ii) a jet being outside the ghost range (iii) the computation not being done using an appropriate algorithm (kt;C/A).");
    368455    }
    369      
    370456  }
    371457 
    372458  // there is nothing inside our region, so answer will always be zero
    373   if (vector_for_median.size() == 0) {
     459  if (vector_for_median_pt.size() == 0) {
    374460    _rho        = 0.0;
    375461    _sigma      = 0.0;
     462    _rho_m      = 0.0;
     463    _sigma_m    = 0.0;
    376464    _mean_area  = 0.0;
    377465    return;
     
    392480
    393481  double stand_dev;
    394   _median_and_stddev(vector_for_median, _n_empty_jets, _rho, stand_dev,
     482  _median_and_stddev(vector_for_median_pt, _n_empty_jets, _rho, stand_dev,
    395483                     _provide_fj2_sigma);
    396484
     
    398486  _mean_area  = total_area / total_njets;
    399487  _sigma      = stand_dev * sqrt(_mean_area);
     488
     489  // compute the rho_m part now
     490  if (do_rho_m){
     491    _median_and_stddev(vector_for_median_dt, _n_empty_jets, _rho_m, stand_dev,
     492                       _provide_fj2_sigma);
     493    _sigma_m = stand_dev * sqrt(_mean_area);
     494  }
    400495
    401496  // record that the computation has been performed 
     
    439534
    440535
    441 
    442536FASTJET_END_NAMESPACE
    443537
  • external/fastjet/tools/JetMedianBackgroundEstimator.hh

    rba7fc1e r37deb3b  
    22#define __FASTJET_BACKGROUND_ESTIMATOR_HH__
    33
    4 //STARTHEADER
    5 // $Id: JetMedianBackgroundEstimator.hh 2689 2011-11-14 14:51:06Z soyez $
     4//FJSTARTHEADER
     5// $Id: JetMedianBackgroundEstimator.hh 3517 2014-08-01 14:23:13Z soyez $
    66//
    7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234#include <fastjet/ClusterSequenceAreaBase.hh>
     
    121123  ///
    122124  JetMedianBackgroundEstimator(const Selector &rho_range = SelectorIdentity())
    123     : _rho_range(rho_range), _jet_def(JetDefinition()) { reset(); }
     125    : _rho_range(rho_range), _jet_def(JetDefinition()),
     126      _enable_rho_m(true){ reset(); }
    124127 
    125128
     
    168171  }
    169172
     173  /// determine whether the automatic calculation of rho_m and sigma_m
     174  /// is enabled (by default true)
     175  void set_compute_rho_m(bool enable){ _enable_rho_m = enable;}
     176
    170177  //\}
    171178
     
    201208  virtual bool has_sigma() {return true;}
    202209
     210  //----------------------------------------------------------------
     211  // now do the same thing for rho_m and sigma_m
     212
     213  /// returns rho_m, the purely longitudinal, particle-mass-induced
     214  /// component of the background density per unit area
     215  virtual double rho_m() const;
     216
     217  /// returns sigma_m, a measure of the fluctuations in the purely
     218  /// longitudinal, particle-mass-induced component of the background
     219  /// density per unit area; must be multipled by sqrt(area) to get
     220  /// fluctuations for a region of a given area.
     221  virtual double sigma_m() const;
     222
     223  /// Returns rho_m locally at the jet position. As for rho(jet), it is non-const.
     224  virtual double rho_m(const PseudoJet & /*jet*/);
     225
     226  /// Returns sigma_m locally at the jet position. As for rho(jet), it is non-const.
     227  virtual double sigma_m(const PseudoJet & /*jet*/);
     228
     229  /// Returns true if this background estimator has support for
     230  /// determination of rho_m.
     231  ///
     232  /// In te presence of a density class, support for rho_m is
     233  /// automatically disabled
     234  ///
     235  /// Note that support for sigma_m is automatic is one has sigma and
     236  /// rho_m support.
     237  virtual bool has_rho_m() const {return _enable_rho_m && (_jet_density_class == 0);}
    203238  //\}
    204239 
     
    208243  /// Returns the mean area of the jets used to actually compute the
    209244  /// background properties in the last call of rho() or sigma()
     245  /// If the configuration has changed in the meantime, throw an error.
    210246  double mean_area() const{
    211     _recompute_if_needed();
     247    if (!_uptodate)
     248      throw Error("JetMedianBackgroundEstimator::mean_area(): one may not retrieve information about the last call to rho() or sigma() when the configuration has changed in the meantime.");
     249    //_recompute_if_needed();
    212250    return _mean_area;
    213251  }
     
    215253  /// returns the number of jets used to actually compute the
    216254  /// background properties in the last call of rho() or sigma()
     255  /// If the configuration has changed in the meantime, throw an error.
    217256  unsigned int n_jets_used() const{
    218     _recompute_if_needed();
     257    if (!_uptodate)
     258      throw Error("JetMedianBackgroundEstimator::n_jets_used(): one may not retrieve information about the last call to rho() or sigma() when the configuration has changed in the meantime.");
     259    //_recompute_if_needed();
    219260    return _n_jets_used;
     261  }
     262
     263  /// returns the jets used to actually compute the background
     264  /// properties
     265  std::vector<PseudoJet> jets_used() const{
     266    if (!_uptodate) throw Error("JetMedianBackgroundEstimator::n_jets_used(): one may not retrieve information about the last call to rho() or sigma() when the configuration has changed in the meantime.");
     267    _check_csa_alive();
     268    std::vector<PseudoJet> tmp_jets = _rho_range(_included_jets);
     269    std::vector<PseudoJet> used_jets;
     270    for (unsigned int i=0; i<tmp_jets.size(); i++){
     271      if (tmp_jets[i].area()>0) used_jets.push_back(tmp_jets[i]);
     272    }
     273    return used_jets;
    220274  }
    221275
     
    223277  /// the selector) that is not occupied by jets. The value is that
    224278  /// for the last call of rho() or sigma()
     279  /// If the configuration has changed in the meantime, throw an error.
    225280  ///
    226281  /// The answer is defined to be zero if the area calculation
     
    234289  /// call to the ClusterSequenceAreaBase function.
    235290  double empty_area() const{
    236     _recompute_if_needed();
     291    if (!_uptodate)
     292      throw Error("JetMedianBackgroundEstimator::empty_area(): one may not retrieve information about the last call to rho() or sigma() when the configuration has changed in the meantime.");
     293    //_recompute_if_needed();
    237294    return _empty_area;
    238295  }
     
    241298  /// background properties. The value is that for the last call of
    242299  /// rho() or sigma().
     300  /// If the configuration has changed in the meantime, throw an error.
    243301  ///
    244302  /// If the area has explicit ghosts the result is zero; for active
     
    250308  /// call to the ClusterSequenceAreaBase function.
    251309  double n_empty_jets() const{
    252     _recompute_if_needed();
     310    if (!_uptodate)
     311      throw Error("JetMedianBackgroundEstimator::n_empty_jets(): one may not retrieve information about the last call to rho() or sigma() when the configuration has changed in the meantime.");
     312    //_recompute_if_needed();
    253313    return _n_empty_jets;
    254314  }
     
    361421  /// Issue a warning otherwise
    362422  void _check_jet_alg_good_for_median() const;
    363  
     423
    364424  // the basic parameters of this class (passed through the variou ctors)
    365425  Selector _rho_range;                   ///< range to compute the background in
     
    368428  std::vector<PseudoJet> _included_jets; ///< jets to be used
    369429 
    370   // the tunable aprameters of the class
     430  // the tunable parameters of the class
    371431  bool _use_area_4vector;
    372432  bool _provide_fj2_sigma;
    373433  const FunctionOfPseudoJet<double> * _jet_density_class;
    374434  //SharedPtr<BackgroundRescalingBase> _rescaling_class_sharedptr;
     435  bool _enable_rho_m;
    375436 
    376437  // the actual results of the computation
    377438  mutable double _rho;               ///< background estimated density per unit area
    378439  mutable double _sigma;             ///< background estimated fluctuations
     440  mutable double _rho_m;             ///< "mass" background estimated density per unit area
     441  mutable double _sigma_m;           ///< "mass" background estimated fluctuations
    379442  mutable double _mean_area;         ///< mean area of the jets used to estimate the background
    380443  mutable unsigned int _n_jets_used; ///< number of jets used to estimate the background
     
    429492  virtual double result(const PseudoJet & jet) const;
    430493
    431   virtual std::string description() const {return "BackgroundScalarJetPtDensity";}
     494  virtual std::string description() const;
    432495
    433496private:
  • external/fastjet/tools/MassDropTagger.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: MassDropTagger.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include <fastjet/tools/MassDropTagger.hh>
  • external/fastjet/tools/MassDropTagger.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: MassDropTagger.hh 2731 2011-11-21 12:15:21Z soyez $
     1//FJSTARTHEADER
     2// $Id: MassDropTagger.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __FASTJET_MASS_DROP_TAGGER_HH__
  • external/fastjet/tools/Pruner.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: Pruner.cc 3481 2014-07-29 17:24:12Z soyez $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/tools/Pruner.hh"
     
    4749//----------------------------------------------------------------------
    4850// alternative (dynamic) ctor
    49 //  \param jet_def the jet definition for the internal clustering
     51//  \param jet_def     the jet definition for the internal clustering
    5052//  \param zcut_dyn    dynamic pt-fraction cut in the pruning
    5153//  \param Rcut_dyn    dynamic angular distance cut in the pruning
    5254Pruner::Pruner(const JetDefinition &jet_def,
    53          FunctionOfPseudoJet<double> *zcut_dyn,
    54          FunctionOfPseudoJet<double> *Rcut_dyn)
     55         const FunctionOfPseudoJet<double> *zcut_dyn,
     56         const FunctionOfPseudoJet<double> *Rcut_dyn)
    5557  : _jet_def(jet_def), _zcut(0), _Rcut_factor(0),
    5658    _zcut_dyn(zcut_dyn), _Rcut_dyn(Rcut_dyn), _get_recombiner_from_jet(false)  {
     
    7476  double zcut = (_zcut_dyn) ? (*_zcut_dyn)(jet) : _zcut;
    7577  PruningPlugin * pruning_plugin;
     78
    7679  // for some constructors, we get the recombiner from the
    77   // input jet -- some acrobatics are needed (see plans for FJ3.1
    78   // for a hopefully better solution).
     80  // input jet -- some acrobatics are needed
    7981  if (_get_recombiner_from_jet) {
    80     const JetDefinition::Recombiner * common_recombiner =
    81                                               _get_common_recombiner(jet);
    82     if (common_recombiner) {
    83       JetDefinition jet_def = _jet_def;
    84       if (typeid(*common_recombiner) == typeid(JetDefinition::DefaultRecombiner)) {
    85         RecombinationScheme scheme =
    86           static_cast<const JetDefinition::DefaultRecombiner *>(common_recombiner)->scheme();
    87         jet_def.set_recombination_scheme(scheme);
    88       } else {
    89         jet_def.set_recombiner(common_recombiner);
    90       }
    91       pruning_plugin = new PruningPlugin(jet_def, zcut, Rcut);
    92     } else {
    93       // if there wasn't a common recombiner, we just use the default
    94       // recombiner that was in _jet_def
    95       pruning_plugin = new PruningPlugin(_jet_def, zcut, Rcut);
    96     }
     82    JetDefinition jet_def = _jet_def;
     83
     84    // if all the pieces have a shared recombiner, we'll use that
     85    // one. Otherwise, use the one from _jet_def as a fallback.
     86    JetDefinition jet_def_for_recombiner;
     87    if (_check_common_recombiner(jet, jet_def_for_recombiner)){
     88      jet_def.set_recombiner(jet_def_for_recombiner);
     89    }
     90    pruning_plugin = new PruningPlugin(jet_def, zcut, Rcut);
    9791  } else {
    9892    pruning_plugin = new PruningPlugin(_jet_def, zcut, Rcut);
     
    122116  PseudoJet result_local = SelectorNHardest(1)(cs->inclusive_jets())[0];
    123117  PrunerStructure * s = new PrunerStructure(result_local);
     118  s->_Rcut = Rcut;
     119  s->_zcut = zcut;
    124120  result_local.set_structure_shared_ptr(SharedPtr<PseudoJetStructureBase>(s));
    125121 
     
    155151}
    156152
    157 // see if there is a common recombiner among the pieces; if there
    158 // is return a pointer to it; otherwise, return NULL.
    159 //
    160 // NB: this way of doing things is not ideal, because quite some work
    161 //     is needed to get a correct handling of the final recombiner
    162 //     (e.g. default v. non-default). In future add
    163 //     set_recombiner(jet_def) to JetDefinition, maybe also add
    164 //     an invalid_scheme to the default recombiner and then
    165 //     do all the work below directly with a JetDefinition directly
    166 //     together with JD::has_same_recombiner(...)
    167 const JetDefinition::Recombiner * Pruner::_get_common_recombiner(const PseudoJet &jet) const{
    168   if (jet.has_associated_cluster_sequence())
    169     return jet.validated_cs()->jet_def().recombiner();
     153// see if there is a common recombiner among the pieces; if there is
     154// return true and set jet_def_for_recombiner so that the recombiner
     155// can be taken from that JetDefinition. Otherwise, return
     156// false. 'assigned' is initially false; when true, each time we meet
     157// a new jet definition, we'll check it shares the same recombiner as
     158// jet_def_for_recombiner.
     159bool Pruner::_check_common_recombiner(const PseudoJet &jet,
     160                                      JetDefinition &jet_def_for_recombiner,
     161                                      bool assigned) const{
     162  if (jet.has_associated_cluster_sequence()){
     163    // if the jet def for recombination has already been assigned, check if we have the same
     164    if (assigned)
     165      return jet.validated_cs()->jet_def().has_same_recombiner(jet_def_for_recombiner);
     166
     167    // otherwise, assign it.
     168    jet_def_for_recombiner = jet.validated_cs()->jet_def();
     169    assigned = true;
     170    return true;
     171  }
    170172
    171173  // if the jet has pieces, recurse in the pieces
    172174  if (jet.has_pieces()){
    173175    vector<PseudoJet> pieces = jet.pieces();
    174     if (pieces.size() == 0) return 0;
    175     const JetDefinition::Recombiner * reco = _get_common_recombiner(pieces[0]);
    176     for (unsigned int i=1;i<pieces.size(); i++)
    177       if (_get_common_recombiner(pieces[i]) != reco) return 0;
     176    if (pieces.size() == 0) return false;
     177    for (unsigned int i=0;i<pieces.size(); i++)
     178      if (!_check_common_recombiner(pieces[i], jet_def_for_recombiner, assigned)) return false;
    178179    // never returned false, so we're OK.
    179     return reco;
     180    return true;
    180181  }
    181182
    182183  // return false for any other (unknown) structure
    183   return 0;
     184  return false;
    184185}
    185186
  • external/fastjet/tools/Pruner.hh

    rba7fc1e r37deb3b  
    22#define __FASTJET_TOOLS_PRUNER_HH__
    33
    4 //STARTHEADER
    5 // $Id: Pruner.hh 2616 2011-09-30 18:03:40Z salam $
    6 //
    7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4//FJSTARTHEADER
     5// $Id: Pruner.hh 3481 2014-07-29 17:24:12Z soyez $
     6//
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234#include "fastjet/ClusterSequence.hh"
     
    4345class PruningRecombiner;
    4446class PruningPlugin;
     47
     48// This tells third-party code that the pruner structure
     49// stores Rcut info; the alternative is for the user to
     50// get the information from the version number
     51#define FASTJET_PRUNER_STRUCTURE_STORES_RCUT
    4552
    4653//----------------------------------------------------------------------
     
    135142  ///  \param Rcut_dyn    dynamic angular distance cut in the pruning
    136143  Pruner(const JetDefinition &jet_def,
    137          FunctionOfPseudoJet<double> *zcut_dyn,
    138          FunctionOfPseudoJet<double> *Rcut_dyn);
     144         const FunctionOfPseudoJet<double> *zcut_dyn,
     145         const FunctionOfPseudoJet<double> *Rcut_dyn);
    139146
    140147  /// action on a single jet
     
    152159  bool _check_explicit_ghosts(const PseudoJet &jet) const;
    153160
    154   /// return a pointer to a "common" recombiner if there is one,
    155   /// alternatively a null pointer.
    156   const JetDefinition::Recombiner * _get_common_recombiner(const PseudoJet &jet) const;
     161  /// see if there is a common recombiner among the pieces; if there
     162  /// is return true and set jet_def_for_recombiner so that the
     163  /// recombiner can be taken from that JetDefinition. Otherwise,
     164  /// return false. 'assigned' is initially false; when true, each
     165  /// time we meet a new jet definition, we'll check it shares the
     166  /// same recombiner as jet_def_for_recombiner.
     167  bool _check_common_recombiner(const PseudoJet &jet,
     168                                JetDefinition &jet_def_for_recombiner,
     169                                bool assigned=false) const;
    157170
    158171  JetDefinition _jet_def; ///< the internal jet definition
    159172  double _zcut;           ///< the pt-fraction cut
    160173  double _Rcut_factor;    ///< the angular separation cut factor
    161   FunctionOfPseudoJet<double> *_zcut_dyn; ///< dynamic zcut
    162   FunctionOfPseudoJet<double> *_Rcut_dyn; ///< dynamic Rcut
     174  const FunctionOfPseudoJet<double> *_zcut_dyn; ///< dynamic zcut
     175  const FunctionOfPseudoJet<double> *_Rcut_dyn; ///< dynamic Rcut
    163176  bool   _get_recombiner_from_jet; ///< true for minimal constructor,
    164177                                   ///< causes recombiner to be set equal
     
    194207  std::vector<PseudoJet> extra_jets() const;
    195208
     209  /// return the value of Rcut that was used for this specific pruning.
     210  double Rcut() const {return _Rcut;}
     211
     212  /// return the value of Rcut that was used for this specific pruning.
     213  double zcut() const {return _zcut;}
     214
    196215protected:
    197216  friend class Pruner; ///< to allow setting the internal information
     217
     218private:
     219  double _Rcut, _zcut;
    198220};
    199221
  • external/fastjet/tools/RestFrameNSubjettinessTagger.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: RestFrameNSubjettinessTagger.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include <fastjet/tools/RestFrameNSubjettinessTagger.hh>
  • external/fastjet/tools/RestFrameNSubjettinessTagger.hh

    rba7fc1e r37deb3b  
    22#define __FASTJET_RESTFRAMENSUBJETTINESS_TAGGER_HH__
    33
    4 //STARTHEADER
    5 // $Id: RestFrameNSubjettinessTagger.hh 2689 2011-11-14 14:51:06Z soyez $
     4//FJSTARTHEADER
     5// $Id: RestFrameNSubjettinessTagger.hh 3433 2014-07-23 08:17:03Z salam $
    66//
    7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234#include <fastjet/PseudoJet.hh>
  • external/fastjet/tools/Subtractor.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: Subtractor.cc 3670 2014-09-08 14:17:59Z soyez $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include "fastjet/tools/Subtractor.hh"
     
    3840
    3941
     42//----------------------------------------------------------------------
     43// ctor
    4044Subtractor::Subtractor(double rho) : _bge(0), _rho(rho) {
    41   assert(_rho>0.0);
    42 }
    43 
     45  if (_rho<0.0) throw Error("Subtractor(rho) was passed a negative rho value; rho should be >= 0");
     46  set_defaults();
     47}
     48
     49//----------------------------------------------------------------------
     50// ctor
     51Subtractor::Subtractor(double rho, double rho_m) : _bge(0), _rho(rho) {
     52  if (_rho<0.0) throw Error("Subtractor(rho, rho_m) was passed a negative rho value; rho should be >= 0");
     53  if (rho_m<0.0) throw Error("Subtractor(rho, rho_m) was passed a negative rho_m value; rho_m should be >= 0");
     54  set_defaults();
     55  _rho_m = rho_m;
     56  set_use_rho_m(true);
     57}
     58
     59//----------------------------------------------------------------------
     60void Subtractor::set_defaults(){
     61  _rho_m = _invalid_rho;
     62  _use_rho_m = false; // likely to change in future releases!!
     63  _safe_mass = false; // likely to change in future releases!!
     64
     65  _sel_known_vertex = Selector();
     66  _sel_leading_vertex = Selector();
     67}
     68
     69//----------------------------------------------------------------------
     70// perform the subtraction of a given jet
    4471PseudoJet Subtractor::result(const PseudoJet & jet) const {
    4572  if (!jet.has_area()){
    46     throw Error("Trying to subtract a jet without area support");
    47   }
    48  
     73    throw Error("Subtractor::result(...): Trying to subtract a jet without area support");
     74  }
     75
     76  PseudoJet known_lv, known_pu;
     77  PseudoJet unknown = jet;
     78  if (_sel_known_vertex.worker()){
     79    // separate the jet constituents in 3 groups:
     80    //   unknown vertex
     81    //   known vertex, leading vertex
     82    //   known vertex, non-leading vertex (PU)
     83    vector<PseudoJet> constits_unknown, constits_known;
     84    _sel_known_vertex.sift(jet.constituents(),
     85                           constits_known,
     86                           constits_unknown);
     87    vector<PseudoJet> constits_known_lv, constits_known_pu;
     88    _sel_leading_vertex.sift(constits_known,
     89                             constits_known_lv,
     90                             constits_known_pu);
     91
     92    // For the parts related to the known vertices (LV or PU), we just
     93    // sum the 4-momenta. For the unknown part, we assign it the full
     94    // jet area.
     95    known_lv = (constits_known_lv.size()!=0)
     96      ? SelectorIdentity().sum(constits_known_lv) : 0.0*jet;
     97    known_pu = (constits_known_pu.size()!=0)
     98      ? SelectorIdentity().sum(constits_known_pu) : 0.0*jet;
     99    if (constits_unknown.size()==0){
     100      // no need for any form of subtraction!
     101      PseudoJet subtracted_jet = jet;
     102      subtracted_jet.reset_momentum(known_lv);
     103      return subtracted_jet;
     104    }
     105    unknown = jet; // that keeps all info including area
     106    unknown.reset_momentum(SelectorIdentity().sum(constits_unknown));
     107  } else {
     108    known_lv = jet; // ensures correct rap-phi!
     109    known_lv *= 0.0;
     110    known_pu = known_lv;
     111  }
     112
     113  // prepare for the subtraction and compute the 4-vector to be
     114  // subtracted
     115  PseudoJet subtracted_jet = jet;
     116  PseudoJet to_subtract = known_pu + _amount_to_subtract(unknown);
     117
     118  // sanity check for the transverse momentum
     119  if (to_subtract.pt2() < jet.pt2() ) {
     120    // this subtraction should retain the jet's structural
     121    // information
     122    subtracted_jet -= to_subtract;
     123  } else {
     124    // this sets the jet's momentum while maintaining all of the jet's
     125    // structural information
     126    subtracted_jet.reset_momentum(known_lv);
     127    return subtracted_jet;
     128  }
     129
     130  // make sure that in the end the pt is at least the one known to
     131  // come from the leading vertex
     132  if (subtracted_jet.pt2() < known_lv.pt2()){
     133    subtracted_jet.reset_momentum(known_lv);
     134    return subtracted_jet;
     135  }
     136
     137  // sanity check for the mass (if needed)
     138  if ((_safe_mass) && (subtracted_jet.m2() < known_lv.m2())){
     139    // in this case, we keep pt and phi as obtained from the
     140    // subtraction above and take rap and m from the part that comes
     141    // from the leading vertex (or the original jet if nothing comes
     142    // from the leading vertex)
     143    subtracted_jet.reset_momentum(PtYPhiM(subtracted_jet.pt(),
     144                                          known_lv.rap(),
     145                                          subtracted_jet.phi(),
     146                                          known_lv.m()));
     147  }
     148
     149  return subtracted_jet;
     150}
     151
     152//----------------------------------------------------------------------
     153std::string Subtractor::description() const{
     154  if (_bge != 0) {
     155    string desc = "Subtractor that uses the following background estimator to determine rho: "+_bge->description();
     156    if (use_rho_m()) desc += "; including the rho_m correction";
     157    if (safe_mass()) desc += "; including mass safety tests";
     158    if (_sel_known_vertex.worker()){
     159      desc += "; using known vertex selection: "+_sel_known_vertex.description()+" and leading vertex selection: "+_sel_leading_vertex.description();
     160    }
     161    return desc;
     162  } else if (_rho != _invalid_rho) {
     163    ostringstream ostr;
     164    ostr << "Subtractor that uses a fixed value of rho = " << _rho;
     165    if (use_rho_m()) ostr << " and rho_m = " << _rho_m;
     166    return ostr.str();
     167  } else {
     168    return "Uninitialised subtractor";
     169  }
     170}
     171
     172//----------------------------------------------------------------------
     173// compute the 4-vector that should be subtracted from the given
     174// jet
     175PseudoJet Subtractor::_amount_to_subtract(const PseudoJet &jet) const{
     176  // the "transverse momentum" part
    49177  double rho;
    50178  if (_bge != 0) {
     
    53181    rho = _rho;
    54182  } else {
    55     throw Error("default Subtractor does not have any information about the background, which is needed to perform the subtraction");
    56   }
    57 
    58   PseudoJet subtracted_jet = jet;
    59   PseudoJet area4vect = jet.area_4vector();
    60   // sanity check
    61   if (rho*area4vect.perp() < jet.perp() ) {
    62     // this subtraction should retain the jet's structural
    63     // information
    64     subtracted_jet -= rho*area4vect;
    65   } else {
    66     // this sets the jet's momentum to zero while
    67     // maintaining all of the jet's structural information
    68     subtracted_jet *= 0;
    69   }
    70   return subtracted_jet;
    71 }
    72 
    73 //----------------------------------------------------------------------
    74 std::string Subtractor::description() const{
    75   if (_bge != 0) {
    76     return "Subtractor that uses the following background estimator to determine rho: "+_bge->description();
    77   } else if (_rho != _invalid_rho) {
    78     ostringstream ostr;
    79     ostr << "Subtractor that uses a fixed value of rho = " << _rho;
    80     return ostr.str();
    81   } else {
    82     return "Uninitialised subtractor";
    83   }
    84 }
     183    throw Error("Subtractor::_amount_to_subtract(...): default Subtractor does not have any information about the background, needed to perform the subtraction");
     184  }
     185
     186  PseudoJet area = jet.area_4vector();
     187  PseudoJet to_subtract = rho*area;
     188
     189  double const rho_m_warning_threshold = 1e-5;
     190
     191  // add an optional contribution from the unknown particles masses
     192  if (_use_rho_m) {
     193    double rho_m;
     194   
     195    if (_bge != 0) {
     196      if (!_bge->has_rho_m()) throw Error("Subtractor::_amount_to_subtract(...): requested subtraction with rho_m from a background estimator, but the estimator does not have rho_m support");
     197      rho_m = _bge->rho_m(jet);
     198    } else if (_rho_m != _invalid_rho) {
     199      rho_m = _rho_m;
     200    } else {
     201      throw Error("Subtractor::_amount_to_subtract(...): default Subtractor does not have any information about the background rho_m, needed to perform the rho_m subtraction");
     202    }
     203    to_subtract += rho_m * PseudoJet(0.0, 0.0, area.pz(), area.E());
     204  } else if (_bge &&
     205             _bge->has_rho_m() &&
     206             _bge->rho_m(jet) > rho_m_warning_threshold * rho) {
     207    _unused_rho_m_warning.warn("Subtractor::_amount_to_subtract(...): Background estimator indicates non-zero rho_m, but use_rho_m()==false in subtractor; consider calling set_use_rho_m(true) to include the rho_m information");
     208  }
     209
     210  return to_subtract;
     211}
     212
    85213
    86214FASTJET_END_NAMESPACE
  • external/fastjet/tools/Subtractor.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: Subtractor.hh 2577 2011-09-13 15:11:38Z salam $
    3 //
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     1//FJSTARTHEADER
     2// $Id: Subtractor.hh 3670 2014-09-08 14:17:59Z soyez $
     3//
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __FASTJET_TOOLS_SUBTRACTOR_HH__
    3032#define __FASTJET_TOOLS_SUBTRACTOR_HH__
    3133
     34#include "fastjet/internal/base.hh"     // namespace macros (include explicitly to help Doxygen)
    3235#include "fastjet/tools/Transformer.hh" // to derive Subtractor from Transformer
    3336#include "fastjet/tools/BackgroundEstimatorBase.hh" // used as a ctor argument
     
    6164  /// define a subtractor based on a BackgroundEstimator
    6265  Subtractor(BackgroundEstimatorBase * bge) :
    63     _bge(bge), _rho(-1.0) {}
     66    _bge(bge), _rho(-1.0) { set_defaults(); }
    6467
    6568  /// define a subtractor that uses a fixed value of rho, the background
     
    6770  Subtractor(double rho);
    6871
     72  /// define a subtractor that uses a fixed value of rho and rho_m;
     73  /// both must be >= 0;
     74  Subtractor(double rho, double rho_m);
     75
    6976  /// default constructor
    70   Subtractor() : _bge(0), _rho(_invalid_rho) {}
     77  Subtractor() : _bge(0), _rho(_invalid_rho) { set_defaults(); }
    7178
    7279  /// default dtor
    7380  virtual ~Subtractor(){};
     81
     82  /// @name configuring the behaviour
     83  //\{
     84  //----------------------------------------------------------------
     85
     86  /// reset all parameters to default values
     87  ///
     88  /// Note: by default, the rho_m term is not included and the safety
     89  /// test for the mass is not done. This is mostly for backwards
     90  /// compatibility with FastJet 3.0 and is highly likely to change in
     91  /// a future release of FastJet
     92  void set_defaults();
     93
     94  /// when 'use_rho_m' is true, include in the subtraction the
     95  /// correction from rho_m, the purely longitudinal,
     96  /// particle-mass-induced component of the background density per
     97  /// unit area
     98  ///
     99  /// Note: this will be switched off by default (for backwards
     100  /// compatibility with FastJet 3.0) but is highly likely to change
     101  /// in a future release of FastJet
     102  void set_use_rho_m(bool use_rho_m_in = true){
     103    if (_bge == 0  && _rho_m < 0) {
     104      throw Error("Subtractor: rho_m support works only for Subtractors constructed with a background estimator or an explicit rho_m value");
     105    }
     106    _use_rho_m=use_rho_m_in;
     107  }
     108 
     109  /// returns whether or not the rho_m component is used
     110  bool use_rho_m() const{ return _use_rho_m;}
     111
     112  /// when 'safe_mass' is true, ensure that the mass of the subtracted
     113  /// 4-vector remain positive
     114  ///
     115  /// when true, if the subtracted mass is negative, we return a
     116  /// 4-vector with 0 mass, pt and phi from the subtracted 4-vector
     117  /// and the rapidity of the original, unsubtracted jet.
     118  ///
     119  /// Note: this will be switched off by default (for backwards
     120  /// compatibility with FastJet 3.0) but is highly likely to change
     121  /// in a future release of FastJet
     122  void set_safe_mass(bool safe_mass_in=true){ _safe_mass=safe_mass_in;}
     123
     124  /// returns whether or not safety tests on the mass are included
     125  bool safe_mass() const{ return _safe_mass;}
     126
     127  /// This is mostly intended for cherge-hadron-subtracted type of
     128  /// events where we wich to use vertex information to improve the
     129  /// subtraction.
     130  ///
     131  /// Given the following parameters:
     132  ///   \param sel_known_vertex    selects the particles with a
     133  ///                              known vertex origin
     134  ///   \param sel_leading_vertex  amongst the particles with a
     135  ///                              known vertex origin, select those
     136  ///                              coming from the leading vertex
     137  /// Momentum identified as coming from the leading vertex will be
     138  /// kept, momentum identified as coming from a non-leading vertex
     139  /// will be eliminated and a regular area-median subtraction will be
     140  /// applied on the 4-vector sum of the particles with unknown vertex
     141  /// origin.
     142  ///
     143  /// When this is set, we shall ensure that the pt of the subtracted
     144  /// 4-vector is at least the pt of the particles that are known to
     145  /// come from the leading vertex (if it fails, subtraction returns
     146  /// the component that is known to come from the leading vertex ---
     147  /// or, the original unsubtracted jet if it contains no particles
     148  /// from the leading vertex).  Furthermore, when safe_mass() is on, we
     149  /// also impose a similar constraint on the mass of the subtracted
     150  /// 4-vector (if the test fails, the longitudinal part of the
     151  /// subtracted 4-vector is taken from the component that is known to
     152  /// come from the leading vertex).
     153  void set_known_selectors(const Selector &sel_known_vertex,
     154                           const Selector &sel_leading_vertex){
     155    _sel_known_vertex   = sel_known_vertex;
     156    _sel_leading_vertex = sel_leading_vertex;
     157  }
     158
     159  //\}
     160
     161  /// @name description and action
     162  //\{
     163  //----------------------------------------------------------------
    74164
    75165  /// returns a jet that's subtracted
     
    82172  virtual std::string description() const;
    83173
     174  //\}
    84175protected:
     176  /// compute the 4-vector that should be subtracted from the given
     177  /// jet
     178  PseudoJet _amount_to_subtract(const PseudoJet &jet) const;
    85179
    86180  /// the tool used to estimate the background
    87181  /// if has to be mutable in case its underlying selector takes a reference jet
    88182  mutable BackgroundEstimatorBase * _bge;
    89   /// the fixed value of rho to use if the user has selected that option
    90   double _rho;
     183  /// the fixed value of rho and/or rho_m to use if the user has selected that option
     184  double _rho, _rho_m;
     185
     186  // configuration parameters/flags
     187  bool _use_rho_m;   ///< include the rho_m correction
     188  bool _safe_mass;   ///< ensures that the subtracted mass is +ve
     189
     190  Selector _sel_known_vertex;   ///< selects the particles with a
     191                                ///< known vertex origin
     192  Selector _sel_leading_vertex; ///< amongst the particles with a
     193                                ///< known vertex origin, select those
     194                                ///< coming from the leading vertex
    91195
    92196  /// a value of rho that is used as a default to label that the stored
     
    98202  // that's not allowed in an include file.
    99203  static const double _invalid_rho;
     204
     205  mutable LimitedWarning _unused_rho_m_warning;
    100206};
    101207
  • external/fastjet/tools/TopTaggerBase.cc

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id$
     1//FJSTARTHEADER
     2// $Id: TopTaggerBase.cc 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#include <fastjet/tools/TopTaggerBase.hh>
  • external/fastjet/tools/TopTaggerBase.hh

    rba7fc1e r37deb3b  
    22#define __FASTJET_TOP_TAGGER_BASE_HH__
    33
    4 //STARTHEADER
    5 // $Id: TopTaggerBase.hh 2689 2011-11-14 14:51:06Z soyez $
     4//FJSTARTHEADER
     5// $Id: TopTaggerBase.hh 3433 2014-07-23 08:17:03Z salam $
    66//
    7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     7// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    88//
    99//----------------------------------------------------------------------
     
    1616//
    1717//  The algorithms that underlie FastJet have required considerable
    18 //  development and are described in hep-ph/0512210. If you use
     18//  development. They are described in the original FastJet paper,
     19//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1920//  FastJet as part of work towards a scientific publication, please
    20 //  include a citation to the FastJet paper.
     21//  quote the version you use and include a citation to the manual and
     22//  optionally also to hep-ph/0512210.
    2123//
    2224//  FastJet is distributed in the hope that it will be useful,
     
    2830//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2931//----------------------------------------------------------------------
    30 //ENDHEADER
     32//FJENDHEADER
    3133
    3234#include <fastjet/internal/base.hh>
  • external/fastjet/tools/Transformer.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: Transformer.hh 2577 2011-09-13 15:11:38Z salam $
     1//FJSTARTHEADER
     2// $Id: Transformer.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __FASTJET_TRANSFORMER_HH__
  • external/fastjet/version.hh

    rba7fc1e r37deb3b  
    1 //STARTHEADER
    2 // $Id: version.hh 2577 2011-09-13 15:11:38Z salam $
     1//FJSTARTHEADER
     2// $Id: version.hh 3433 2014-07-23 08:17:03Z salam $
    33//
    4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
     4// Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
    55//
    66//----------------------------------------------------------------------
     
    1313//
    1414//  The algorithms that underlie FastJet have required considerable
    15 //  development and are described in hep-ph/0512210. If you use
     15//  development. They are described in the original FastJet paper,
     16//  hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
    1617//  FastJet as part of work towards a scientific publication, please
    17 //  include a citation to the FastJet paper.
     18//  quote the version you use and include a citation to the manual and
     19//  optionally also to hep-ph/0512210.
    1820//
    1921//  FastJet is distributed in the hope that it will be useful,
     
    2527//  along with FastJet. If not, see <http://www.gnu.org/licenses/>.
    2628//----------------------------------------------------------------------
    27 //ENDHEADER
     29//FJENDHEADER
    2830
    2931#ifndef __FASTJET_VERSION_HH__
  • modules/BTagging.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class BTagging
  • modules/BTagging.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef BTagging_h
    220#define BTagging_h
  • modules/Calorimeter.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class Calorimeter
     
    135153  }
    136154*/
     155
     156  // read min E value for towers to be saved
     157  fEcalEnergyMin = GetDouble("EcalTowerMinEnergy", 0.0);
     158  fHcalEnergyMin = GetDouble("HcalTowerMinEnergy", 0.0);
     159 
     160  fEcalSigmaMin  = GetDouble("EcalTowerMinSignificance", 0.0);
     161  fHcalSigmaMin  = GetDouble("HcalTowerMinSignificance", 0.0);
     162
     163 
    137164  // read resolution formulas
    138165  fECalResolutionFormula->Compile(GetString("ECalResolutionFormula", "0"));
     
    414441
    415442  if(!fTower) return;
     443//  cout<<"----------------------"<<endl;
     444//  cout<<"Finalize Tower"<<endl;
     445//  cout<<""<<endl;
     446
    416447
    417448  ecalSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, fTowerECalEnergy);
     
    430461  hcalEnergy = LogNormal(fTowerHCalEnergy, hcalSigma);
    431462  hcalTime = (fTowerHCalWeightTime < 1.0E-09 ) ? 0 : fTowerHCalTime/fTowerHCalWeightTime;
     463
     464 
     465  ecalSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, ecalEnergy);
     466  hcalSigma = fHCalResolutionFormula->Eval(0.0, fTowerEta, 0.0, hcalEnergy);
     467
     468  ecalEnergy = (ecalEnergy < fEcalEnergyMin || ecalEnergy < fEcalSigmaMin*ecalSigma) ? 0 : ecalEnergy;
     469  hcalEnergy = (hcalEnergy < fHcalEnergyMin || hcalEnergy < fHcalSigmaMin*hcalSigma) ? 0 : hcalEnergy;
    432470
    433471  energy = ecalEnergy + hcalEnergy;
     
    453491  fTower->Edges[3] = fTowerEdges[3];
    454492
    455 
    456   // fill calorimeter towers
    457   if(energy > 0.0)
     493  if( energy > 0.0 )
    458494  {
    459495    if(fTowerPhotonHits > 0 && fTowerTrackHits == 0)
     
    475511
    476512  ecalEnergy -= fTrackECalEnergy;
    477   if(ecalEnergy < 0.0) ecalEnergy = 0.0;
     513  if(ecalEnergy < fEcalEnergyMin || ecalEnergy < fEcalSigmaMin*fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, ecalEnergy)) ecalEnergy = 0.0;
    478514
    479515  hcalEnergy -= fTrackHCalEnergy;
    480   if(hcalEnergy < 0.0) hcalEnergy = 0.0;
     516  if(hcalEnergy < fHcalEnergyMin || hcalEnergy < fHcalSigmaMin*fHCalResolutionFormula->Eval(0.0, fTowerEta, 0.0, hcalEnergy)) hcalEnergy = 0.0;
    481517
    482518  energy = ecalEnergy + hcalEnergy;
    483519
    484  
    485   // save ECAL and/or HCAL energy excess as an energy flow tower
    486520  if(ecalEnergy > 0.0)
    487521  {
     
    497531    fEFlowPhotonOutputArray->Add(tower);
    498532  }
    499 
    500533  if(hcalEnergy > 0.0)
    501534  {
  • modules/Calorimeter.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef Calorimeter_h
    220#define Calorimeter_h
     
    5472  Int_t fTowerTrackHits, fTowerPhotonHits;
    5573
     74  Double_t fEcalEnergyMin;
     75  Double_t fHcalEnergyMin;
     76 
     77  Double_t fEcalSigmaMin;
     78  Double_t fHcalSigmaMin;
     79
    5680  TFractionMap fFractionMap; //!
    5781  TBinMap fBinMap; //!
  • modules/Cloner.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class Clone
  • modules/Cloner.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef Clone_h
    220#define Clone_h
  • modules/ConstituentFilter.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class ConstituentFilter
  • modules/ConstituentFilter.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef ConstituentFilter_h
    220#define ConstituentFilter_h
  • modules/Delphes.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class Delphes
  • modules/Delphes.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef Delphes_h
    220#define Delphes_h
  • modules/Efficiency.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class Efficiency
  • modules/Efficiency.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef Efficiency_h
    220#define Efficiency_h
  • modules/EnergyScale.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class EnergyScale
  • modules/EnergyScale.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef EnergyScale_h
    220#define EnergyScale_h
  • modules/EnergySmearing.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class EnergySmearing
  • modules/EnergySmearing.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef EnergySmearing_h
    220#define EnergySmearing_h
  • modules/ExampleModule.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class ExampleModule
  • modules/ExampleModule.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef ExampleModule_h
    220#define ExampleModule_h
  • modules/FastJetFinder.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class FastJetFinder
     
    223241  Candidate *candidate, *constituent;
    224242  TLorentzVector momentum;
     243 
     244  TLorentzVector constmomentum;
     245 
    225246  Double_t deta, dphi, detaMax, dphiMax;
    226247  Double_t time, weightTime, avTime;
     
    286307  for(itOutputList = outputList.begin(); itOutputList != outputList.end(); ++itOutputList)
    287308  {
    288     momentum.SetPxPyPzE(itOutputList->px(), itOutputList->py(), itOutputList->pz(), itOutputList->E());
     309    jet = *itOutputList;
     310    if(fJetAlgorithm == 7) jet = join(jet.constituents());
     311   
     312    momentum.SetPxPyPzE(jet.px(), jet.py(), jet.pz(), jet.E());
     313   
    289314    area.reset(0.0, 0.0, 0.0, 0.0);
    290315    if(fAreaDefinition) area = itOutputList->area_4vector();
     
    297322    inputList.clear();
    298323    inputList = sequence->constituents(*itOutputList);
     324
     325    constmomentum.SetPxPyPzE(0.0,0.0,0.0,0.0);;
    299326
    300327    for(itInputList = inputList.begin(); itInputList != inputList.end(); ++itInputList)
    301328    {
    302329      constituent = static_cast<Candidate*>(fInputArray->At(itInputList->user_index()));
     330
     331      constmomentum += constituent->Momentum;
    303332
    304333      deta = TMath::Abs(momentum.Eta() - constituent->Momentum.Eta());
  • modules/FastJetFinder.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef FastJetFinder_h
    220#define FastJetFinder_h
  • modules/Hector.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class Hector
  • modules/Hector.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef Hector_h
    220#define Hector_h
  • modules/IdentificationMap.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class IdentificationMap
  • modules/IdentificationMap.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef IdentificationMap_h
    220#define IdentificationMap_h
  • modules/ImpactParameterSmearing.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119/** \class ImpactParameterSmearing
    220 *
  • modules/ImpactParameterSmearing.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef ImpactParameterSmearing_h
    220#define ImpactParameterSmearing_h
  • modules/Isolation.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class Isolation
  • modules/Isolation.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef Isolation_h
    220#define Isolation_h
  • modules/JetPileUpSubtractor.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class JetPileUpSubtractor
  • modules/JetPileUpSubtractor.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef JetPileUpSubtractor_h
    220#define JetPileUpSubtractor_h
  • modules/LeptonDressing.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class LeptonDressing
  • modules/LeptonDressing.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef LeptonDressing_h
    220#define LeptonDressing_h
  • modules/Merger.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class Merger
  • modules/Merger.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef Merger_h
    220#define Merger_h
  • modules/ModulesLinkDef.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class
     
    1533
    1634#include "modules/FastJetFinder.h"
     35#include "modules/FastJetGridMedianEstimator.h"
    1736#include "modules/ParticlePropagator.h"
    1837#include "modules/Efficiency.h"
     
    3958#include "modules/ConstituentFilter.h"
    4059#include "modules/StatusPidFilter.h"
     60#include "modules/PdgCodeFilter.h"
    4161#include "modules/Cloner.h"
    4262#include "modules/Weighter.h"
     
    5373
    5474#pragma link C++ class FastJetFinder+;
     75#pragma link C++ class FastJetGridMedianEstimator+;
    5576#pragma link C++ class ParticlePropagator+;
    5677#pragma link C++ class Efficiency+;
     
    7798#pragma link C++ class ConstituentFilter+;
    7899#pragma link C++ class StatusPidFilter+;
     100#pragma link C++ class PdgCodeFilter+;
    79101#pragma link C++ class Cloner+;
    80102#pragma link C++ class Weighter+;
  • modules/MomentumSmearing.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class MomentumSmearing
  • modules/MomentumSmearing.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef MomentumSmearing_h
    220#define MomentumSmearing_h
  • modules/ParticlePropagator.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class ParticlePropagator
     
    140158    if(TMath::Abs(q) < 1.0E-9 || TMath::Abs(fBz) < 1.0E-9)
    141159    {
    142       // solve pt2*t^2 + 2*(px*x + py*y)*t + (fRadius2 - x*x - y*y) = 0
     160      // solve pt2*t^2 + 2*(px*x + py*y)*t - (fRadius2 - x*x - y*y) = 0
    143161      tmp = px*y - py*x;
    144162      discr2 = pt2*fRadius2 - tmp*tmp;
  • modules/ParticlePropagator.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef ParticlePropagator_h
    220#define ParticlePropagator_h
  • modules/PileUpJetID.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119/** \class PileUpJetID
    220 *
  • modules/PileUpJetID.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef PileUpJetID_h
    220#define PileUpJetID_h
  • modules/PileUpMerger.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119/** \class PileUpMerger
    220 *
  • modules/PileUpMerger.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef PileUpMerger_h
    220#define PileUpMerger_h
  • modules/PileUpMergerPythia8.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119/** \class PileUpMergerPythia8
    220 *
     
    114132    dphi = gRandom->Uniform(-TMath::Pi(), TMath::Pi());
    115133
    116     for(i = 0; i < fPythia->event.size(); ++i)
     134    for(i = 1; i < fPythia->event.size(); ++i)
    117135    {
    118136      Pythia8::Particle &particle = fPythia->event[i];
  • modules/PileUpMergerPythia8.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef PileUpMergerPythia8_h
    220#define PileUpMergerPythia8_h
  • modules/Pythia8LinkDef.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class
  • modules/SimpleCalorimeter.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class SimpleCalorimeter
     
    129147  }
    130148*/
     149
     150  // read min E value for towers to be saved
     151  fEnergyMin = GetDouble("TowerMinEnergy", 0.0);
     152  fSigmaMin  = GetDouble("TowerMinSignificance", 0.0);
     153 
    131154  // read resolution formulas
    132155  fResolutionFormula->Compile(GetString("ResolutionFormula", "0"));
     
    384407  time = (fTowerWeightTime < 1.0E-09 ) ? 0 : fTowerTime/fTowerWeightTime;
    385408
     409  sigma = fResolutionFormula->Eval(0.0, fTowerEta, 0.0, energy);
     410 
     411  energy = (energy < fEnergyMin || energy < fSigmaMin*sigma) ? 0 : energy;
     412 
    386413  eta = gRandom->Uniform(fTowerEdges[0], fTowerEdges[1]);
    387414  phi = gRandom->Uniform(fTowerEdges[2], fTowerEdges[3]);
     
    405432  // fill energy flow candidates
    406433  energy -= fTrackEnergy;
    407   if(energy < 0.0) energy = 0.0;
     434  if(energy < fEnergyMin || energy < fSigmaMin*fResolutionFormula->Eval(0.0, fTowerEta, 0.0, energy)) energy = 0.0;
    408435   
    409436  // save energy excess as an energy flow tower
  • modules/SimpleCalorimeter.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef SimpleCalorimeter_h
    220#define SimpleCalorimeter_h
     
    5472  Int_t fTowerTrackHits, fTowerPhotonHits;
    5573
     74  Double_t fEnergyMin;
     75  Double_t fSigmaMin;
     76
    5677  TFractionMap fFractionMap; //!
    5778  TBinMap fBinMap; //!
  • modules/StatusPidFilter.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119/** \class StatusPidFilter
    220 *
  • modules/StatusPidFilter.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119//------------------------------------------------------------------------------
    220
  • modules/TauTagging.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class TauTagging
  • modules/TauTagging.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef TauTagging_h
    220#define TauTagging_h
  • modules/TimeSmearing.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class TimeSmearing
  • modules/TimeSmearing.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef TimeSmearing_h
    220#define TimeSmearing_h
  • modules/TrackCountingBTagging.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class TrackCountingBTagging
  • modules/TrackCountingBTagging.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef TrackCountingBTagging_h
    220#define TrackCountingBTagging_h
  • modules/TrackPileUpSubtractor.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class TrackPileUpSubtractor
  • modules/TrackPileUpSubtractor.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef TrackPileUpSubtractor_h
    220#define TrackPileUpSubtractor_h
  • modules/TreeWriter.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class TreeWriter
  • modules/TreeWriter.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef TreeWriter_h
    220#define TreeWriter_h
  • modules/UniqueObjectFinder.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class UniqueObjectFinder
  • modules/UniqueObjectFinder.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef UniqueObjectFinder_h
    220#define UniqueObjectFinder_h
  • modules/Weighter.cc

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119
    220/** \class Weighter
  • modules/Weighter.h

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#ifndef Weighter_h
    220#define Weighter_h
  • readers/DelphesCMSFWLite.cpp

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#include <algorithm>
    220#include <stdexcept>
  • readers/DelphesHepMC.cpp

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#include <stdexcept>
    220#include <iostream>
  • readers/DelphesLHEF.cpp

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#include <stdexcept>
    220#include <iostream>
  • readers/DelphesProMC.cpp

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#include <stdexcept>
    220#include <iostream>
     
    2947#include "ExRootAnalysis/ExRootProgressBar.h"
    3048
    31 #include "ProMC/ProMC.pb.h"
    32 #include "ProMC/ProMCBook.h"
    33 #include "ProMC/ProMCHeader.pb.h"
     49#include "ProMC.pb.h"
     50#include "ProMCBook.h"
     51#include "ProMCHeader.pb.h"
    3452
    3553using namespace std;
     
    3755//---------------------------------------------------------------------------
    3856
    39 void ConvertInput(ProMCEvent &event, ExRootTreeBranch *branch, DelphesFactory *factory,
    40   TObjArray *allParticleOutputArray, TObjArray *stableParticleOutputArray, TObjArray *partonOutputArray,
    41   TStopwatch *readStopWatch, TStopwatch *procStopWatch)
     57void ConvertInput(ProMCEvent &event, double momentumUnit, double positionUnit,
     58  ExRootTreeBranch *branch, DelphesFactory *factory,
     59  TObjArray *allParticleOutputArray, TObjArray *stableParticleOutputArray,
     60  TObjArray *partonOutputArray, TStopwatch *readStopWatch, TStopwatch *procStopWatch)
    4261{
    4362  Int_t i;
     
    89108    pid = mutableParticles->pdg_id(i);
    90109    status = mutableParticles->status(i);
    91     px = mutableParticles->px(i); py = mutableParticles->py(i); pz = mutableParticles->pz(i); mass = mutableParticles->mass(i);
    92     x = mutableParticles->x(i); y = mutableParticles->y(i); z = mutableParticles->z(i); t = mutableParticles->t(i);
     110
     111    px = mutableParticles->px(i)/momentumUnit;
     112    py = mutableParticles->py(i)/momentumUnit;
     113    pz = mutableParticles->pz(i)/momentumUnit;
     114    mass = mutableParticles->mass(i)/momentumUnit;
     115    x = mutableParticles->x(i)/positionUnit;
     116    y = mutableParticles->y(i)/positionUnit;
     117    z = mutableParticles->z(i)/positionUnit;
     118    t = mutableParticles->t(i)/positionUnit;
    93119
    94120    candidate = factory->NewCandidate();
     
    154180  Int_t i;
    155181  Long64_t eventCounter, numberOfEvents;
     182  double momentumUnit = 1.0, positionUnit = 1.0;
    156183
    157184  if(argc < 4)
     
    206233      inputFile = new ProMCBook(argv[i], "r");
    207234
     235      ProMCHeader header = inputFile->getHeader();
     236
     237      momentumUnit = static_cast<double>(header.momentumunit());
     238      positionUnit = static_cast<double>(header.lengthunit());
     239
     240
     241
    208242      if(inputFile == NULL)
    209243      {
     
    230264
    231265        procStopWatch.Start();
    232         ConvertInput(event, branchEvent, factory,
    233           allParticleOutputArray, stableParticleOutputArray, partonOutputArray,
    234           &readStopWatch, &procStopWatch);
     266        ConvertInput(event, momentumUnit, positionUnit,
     267          branchEvent, factory,
     268          allParticleOutputArray, stableParticleOutputArray,
     269          partonOutputArray, &readStopWatch, &procStopWatch);
    235270        modularDelphes->ProcessTask();
    236271        procStopWatch.Stop();
  • readers/DelphesProMC.py

    rba7fc1e r37deb3b  
    134134################################################################################
    135135
    136 if len(sys.argv) < 2:
     136if len(sys.argv) < 4:
    137137  print " Usage: DelphesProMC.py config_file output_file input_file(s)"
    138138  sys.exit(1)
  • readers/DelphesPythia8.cpp

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#include <stdexcept>
    220#include <iostream>
     
    7189  pdg = TDatabasePDG::Instance();
    7290
    73   for(i = 0; i < pythia->event.size(); ++i)
     91  for(i = 1; i < pythia->event.size(); ++i)
    7492  {
    7593    Pythia8::Particle &particle = pythia->event[i];
  • readers/DelphesSTDHEP.cpp

    rba7fc1e r37deb3b  
     1/*
     2 *  Delphes: a framework for fast simulation of a generic collider experiment
     3 *  Copyright (C) 2012-2014  Universite catholique de Louvain (UCL), Belgium
     4 * 
     5 *  This program is free software: you can redistribute it and/or modify
     6 *  it under the terms of the GNU General Public License as published by
     7 *  the Free Software Foundation, either version 3 of the License, or
     8 *  (at your option) any later version.
     9 * 
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 * 
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 */
     18
    119#include <stdexcept>
    220#include <iostream>
Note: See TracChangeset for help on using the changeset viewer.