Fork me on GitHub

Changes in / [f6b6ee7:e7e90df] in git


Ignore:
Files:
37 added
192 edited

Legend:

Unmodified
Added
Removed
  • Makefile

    rf6b6ee7 re7e90df  
    6868
    6969
     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
    7082lhco2root$(ExeSuf): \
    7183        tmp/converters/lhco2root.$(ObjSuf)
     
    7789        classes/DelphesClasses.h \
    7890        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
     102pileup2root$(ExeSuf): \
     103        tmp/converters/pileup2root.$(ObjSuf)
     104
     105tmp/converters/pileup2root.$(ObjSuf): \
     106        converters/pileup2root.cpp \
     107        classes/DelphesStream.h \
     108        classes/DelphesClasses.h \
     109        classes/DelphesFactory.h \
     110        classes/DelphesPileUpReader.h \
    79111        external/ExRootAnalysis/ExRootTreeWriter.h \
    80112        external/ExRootAnalysis/ExRootTreeBranch.h \
     
    89121        external/ExRootAnalysis/ExRootTreeReader.h \
    90122        external/ExRootAnalysis/ExRootProgressBar.h
    91 root2lhco$(ExeSuf): \
    92         tmp/converters/root2lhco.$(ObjSuf)
    93 
    94 tmp/converters/root2lhco.$(ObjSuf): \
    95         converters/root2lhco.cpp \
    96         classes/DelphesClasses.h \
    97         external/ExRootAnalysis/ExRootTreeReader.h \
    98         external/ExRootAnalysis/ExRootProgressBar.h
    99 stdhep2pileup$(ExeSuf): \
    100         tmp/converters/stdhep2pileup.$(ObjSuf)
    101 
    102 tmp/converters/stdhep2pileup.$(ObjSuf): \
    103         converters/stdhep2pileup.cpp \
    104         classes/DelphesClasses.h \
    105         classes/DelphesFactory.h \
    106         classes/DelphesSTDHEPReader.h \
    107         classes/DelphesPileUpWriter.h \
    108         external/ExRootAnalysis/ExRootTreeWriter.h \
    109         external/ExRootAnalysis/ExRootTreeBranch.h \
    110         external/ExRootAnalysis/ExRootProgressBar.h
    111123hepmc2pileup$(ExeSuf): \
    112124        tmp/converters/hepmc2pileup.$(ObjSuf)
     
    121133        external/ExRootAnalysis/ExRootTreeBranch.h \
    122134        external/ExRootAnalysis/ExRootProgressBar.h
    123 pileup2root$(ExeSuf): \
    124         tmp/converters/pileup2root.$(ObjSuf)
    125 
    126 tmp/converters/pileup2root.$(ObjSuf): \
    127         converters/pileup2root.cpp \
    128         classes/DelphesStream.h \
    129         classes/DelphesClasses.h \
    130         classes/DelphesFactory.h \
    131         classes/DelphesPileUpReader.h \
    132         external/ExRootAnalysis/ExRootTreeWriter.h \
    133         external/ExRootAnalysis/ExRootTreeBranch.h \
    134         external/ExRootAnalysis/ExRootProgressBar.h
    135135Example1$(ExeSuf): \
    136136        tmp/examples/Example1.$(ObjSuf)
     
    145145        external/ExRootAnalysis/ExRootUtilities.h
    146146EXECUTABLE +=  \
     147        stdhep2pileup$(ExeSuf) \
    147148        lhco2root$(ExeSuf) \
     149        root2lhco$(ExeSuf) \
     150        pileup2root$(ExeSuf) \
    148151        root2pileup$(ExeSuf) \
    149         root2lhco$(ExeSuf) \
    150         stdhep2pileup$(ExeSuf) \
    151152        hepmc2pileup$(ExeSuf) \
    152         pileup2root$(ExeSuf) \
    153153        Example1$(ExeSuf)
    154154
    155155EXECUTABLE_OBJ +=  \
     156        tmp/converters/stdhep2pileup.$(ObjSuf) \
    156157        tmp/converters/lhco2root.$(ObjSuf) \
     158        tmp/converters/root2lhco.$(ObjSuf) \
     159        tmp/converters/pileup2root.$(ObjSuf) \
    157160        tmp/converters/root2pileup.$(ObjSuf) \
    158         tmp/converters/root2lhco.$(ObjSuf) \
    159         tmp/converters/stdhep2pileup.$(ObjSuf) \
    160161        tmp/converters/hepmc2pileup.$(ObjSuf) \
    161         tmp/converters/pileup2root.$(ObjSuf) \
    162162        tmp/examples/Example1.$(ObjSuf)
    163163
     
    298298        modules/Delphes.h \
    299299        modules/FastJetFinder.h \
     300        modules/FastJetGridMedianEstimator.h \
    300301        modules/ParticlePropagator.h \
    301302        modules/Efficiency.h \
     
    321322        modules/ConstituentFilter.h \
    322323        modules/StatusPidFilter.h \
     324        modules/PdgCodeFilter.h \
    323325        modules/Cloner.h \
    324326        modules/Weighter.h \
     
    379381        DisplayDict$(PcmSuf)
    380382
     383tmp/classes/DelphesPileUpReader.$(ObjSuf): \
     384        classes/DelphesPileUpReader.$(SrcSuf) \
     385        classes/DelphesPileUpReader.h
     386tmp/classes/DelphesSTDHEPReader.$(ObjSuf): \
     387        classes/DelphesSTDHEPReader.$(SrcSuf) \
     388        classes/DelphesSTDHEPReader.h \
     389        classes/DelphesClasses.h \
     390        classes/DelphesFactory.h \
     391        external/ExRootAnalysis/ExRootTreeBranch.h
     392tmp/classes/DelphesTF2.$(ObjSuf): \
     393        classes/DelphesTF2.$(SrcSuf) \
     394        classes/DelphesTF2.h
    381395tmp/classes/DelphesHepMCReader.$(ObjSuf): \
    382396        classes/DelphesHepMCReader.$(SrcSuf) \
     
    393407        classes/DelphesStream.h \
    394408        external/ExRootAnalysis/ExRootTreeBranch.h
    395 tmp/classes/DelphesTF2.$(ObjSuf): \
    396         classes/DelphesTF2.$(SrcSuf) \
    397         classes/DelphesTF2.h
    398 tmp/classes/DelphesFactory.$(ObjSuf): \
    399         classes/DelphesFactory.$(SrcSuf) \
    400         classes/DelphesFactory.h \
    401         classes/DelphesClasses.h \
    402         external/ExRootAnalysis/ExRootTreeBranch.h
    403 tmp/classes/DelphesFormula.$(ObjSuf): \
    404         classes/DelphesFormula.$(SrcSuf) \
    405         classes/DelphesFormula.h
    406 tmp/classes/DelphesSTDHEPReader.$(ObjSuf): \
    407         classes/DelphesSTDHEPReader.$(SrcSuf) \
    408         classes/DelphesSTDHEPReader.h \
    409         classes/DelphesClasses.h \
    410         classes/DelphesFactory.h \
    411         external/ExRootAnalysis/ExRootTreeBranch.h
    412409tmp/classes/DelphesStream.$(ObjSuf): \
    413410        classes/DelphesStream.$(SrcSuf) \
    414411        classes/DelphesStream.h
    415 tmp/classes/DelphesPileUpWriter.$(ObjSuf): \
    416         classes/DelphesPileUpWriter.$(SrcSuf) \
    417         classes/DelphesPileUpWriter.h
    418412tmp/classes/DelphesModule.$(ObjSuf): \
    419413        classes/DelphesModule.$(SrcSuf) \
     
    424418        external/ExRootAnalysis/ExRootTreeWriter.h \
    425419        external/ExRootAnalysis/ExRootResult.h
     420tmp/classes/DelphesFactory.$(ObjSuf): \
     421        classes/DelphesFactory.$(SrcSuf) \
     422        classes/DelphesFactory.h \
     423        classes/DelphesClasses.h \
     424        external/ExRootAnalysis/ExRootTreeBranch.h
    426425tmp/classes/DelphesClasses.$(ObjSuf): \
    427426        classes/DelphesClasses.$(SrcSuf) \
     
    429428        classes/DelphesFactory.h \
    430429        classes/SortableObject.h
    431 tmp/classes/DelphesPileUpReader.$(ObjSuf): \
    432         classes/DelphesPileUpReader.$(SrcSuf) \
    433         classes/DelphesPileUpReader.h
    434 tmp/modules/SimpleCalorimeter.$(ObjSuf): \
    435         modules/SimpleCalorimeter.$(SrcSuf) \
    436         modules/SimpleCalorimeter.h \
    437         classes/DelphesClasses.h \
    438         classes/DelphesFactory.h \
    439         classes/DelphesFormula.h \
    440         external/ExRootAnalysis/ExRootResult.h \
    441         external/ExRootAnalysis/ExRootFilter.h \
    442         external/ExRootAnalysis/ExRootClassifier.h
    443 tmp/modules/LeptonDressing.$(ObjSuf): \
    444         modules/LeptonDressing.$(SrcSuf) \
    445         modules/LeptonDressing.h \
    446         classes/DelphesClasses.h \
    447         classes/DelphesFactory.h \
    448         classes/DelphesFormula.h \
    449         external/ExRootAnalysis/ExRootResult.h \
    450         external/ExRootAnalysis/ExRootFilter.h \
    451         external/ExRootAnalysis/ExRootClassifier.h
    452 tmp/modules/Efficiency.$(ObjSuf): \
    453         modules/Efficiency.$(SrcSuf) \
    454         modules/Efficiency.h \
    455         classes/DelphesClasses.h \
    456         classes/DelphesFactory.h \
    457         classes/DelphesFormula.h \
    458         external/ExRootAnalysis/ExRootResult.h \
    459         external/ExRootAnalysis/ExRootFilter.h \
    460         external/ExRootAnalysis/ExRootClassifier.h
     430tmp/classes/DelphesFormula.$(ObjSuf): \
     431        classes/DelphesFormula.$(SrcSuf) \
     432        classes/DelphesFormula.h
     433tmp/classes/DelphesPileUpWriter.$(ObjSuf): \
     434        classes/DelphesPileUpWriter.$(SrcSuf) \
     435        classes/DelphesPileUpWriter.h
     436tmp/modules/StatusPidFilter.$(ObjSuf): \
     437        modules/StatusPidFilter.$(SrcSuf) \
     438        modules/StatusPidFilter.h \
     439        classes/DelphesClasses.h \
     440        classes/DelphesFactory.h \
     441        classes/DelphesFormula.h \
     442        external/ExRootAnalysis/ExRootResult.h \
     443        external/ExRootAnalysis/ExRootFilter.h \
     444        external/ExRootAnalysis/ExRootClassifier.h
     445tmp/modules/ParticlePropagator.$(ObjSuf): \
     446        modules/ParticlePropagator.$(SrcSuf) \
     447        modules/ParticlePropagator.h \
     448        classes/DelphesClasses.h \
     449        classes/DelphesFactory.h \
     450        classes/DelphesFormula.h \
     451        external/ExRootAnalysis/ExRootResult.h \
     452        external/ExRootAnalysis/ExRootFilter.h \
     453        external/ExRootAnalysis/ExRootClassifier.h
     454tmp/modules/Delphes.$(ObjSuf): \
     455        modules/Delphes.$(SrcSuf) \
     456        modules/Delphes.h \
     457        classes/DelphesClasses.h \
     458        classes/DelphesFactory.h \
     459        classes/DelphesFormula.h \
     460        external/ExRootAnalysis/ExRootResult.h \
     461        external/ExRootAnalysis/ExRootFilter.h \
     462        external/ExRootAnalysis/ExRootClassifier.h \
     463        external/ExRootAnalysis/ExRootConfReader.h \
     464        external/ExRootAnalysis/ExRootTreeWriter.h
    461465tmp/modules/UniqueObjectFinder.$(ObjSuf): \
    462466        modules/UniqueObjectFinder.$(SrcSuf) \
     
    468472        external/ExRootAnalysis/ExRootFilter.h \
    469473        external/ExRootAnalysis/ExRootClassifier.h
     474tmp/modules/ConstituentFilter.$(ObjSuf): \
     475        modules/ConstituentFilter.$(SrcSuf) \
     476        modules/ConstituentFilter.h \
     477        classes/DelphesClasses.h \
     478        classes/DelphesFactory.h \
     479        classes/DelphesFormula.h \
     480        external/ExRootAnalysis/ExRootResult.h \
     481        external/ExRootAnalysis/ExRootFilter.h \
     482        external/ExRootAnalysis/ExRootClassifier.h
     483tmp/modules/TrackPileUpSubtractor.$(ObjSuf): \
     484        modules/TrackPileUpSubtractor.$(SrcSuf) \
     485        modules/TrackPileUpSubtractor.h \
     486        classes/DelphesClasses.h \
     487        classes/DelphesFactory.h \
     488        classes/DelphesFormula.h \
     489        external/ExRootAnalysis/ExRootResult.h \
     490        external/ExRootAnalysis/ExRootFilter.h \
     491        external/ExRootAnalysis/ExRootClassifier.h
     492tmp/modules/Weighter.$(ObjSuf): \
     493        modules/Weighter.$(SrcSuf) \
     494        modules/Weighter.h \
     495        classes/DelphesClasses.h \
     496        classes/DelphesFactory.h \
     497        classes/DelphesFormula.h \
     498        external/ExRootAnalysis/ExRootResult.h \
     499        external/ExRootAnalysis/ExRootFilter.h \
     500        external/ExRootAnalysis/ExRootClassifier.h
     501tmp/modules/Isolation.$(ObjSuf): \
     502        modules/Isolation.$(SrcSuf) \
     503        modules/Isolation.h \
     504        classes/DelphesClasses.h \
     505        classes/DelphesFactory.h \
     506        classes/DelphesFormula.h \
     507        external/ExRootAnalysis/ExRootResult.h \
     508        external/ExRootAnalysis/ExRootFilter.h \
     509        external/ExRootAnalysis/ExRootClassifier.h
     510tmp/modules/PileUpMerger.$(ObjSuf): \
     511        modules/PileUpMerger.$(SrcSuf) \
     512        modules/PileUpMerger.h \
     513        classes/DelphesClasses.h \
     514        classes/DelphesFactory.h \
     515        classes/DelphesTF2.h \
     516        classes/DelphesPileUpReader.h \
     517        external/ExRootAnalysis/ExRootResult.h \
     518        external/ExRootAnalysis/ExRootFilter.h \
     519        external/ExRootAnalysis/ExRootClassifier.h
    470520tmp/modules/ExampleModule.$(ObjSuf): \
    471521        modules/ExampleModule.$(SrcSuf) \
     
    477527        external/ExRootAnalysis/ExRootFilter.h \
    478528        external/ExRootAnalysis/ExRootClassifier.h
    479 tmp/modules/ParticlePropagator.$(ObjSuf): \
    480         modules/ParticlePropagator.$(SrcSuf) \
    481         modules/ParticlePropagator.h \
    482         classes/DelphesClasses.h \
    483         classes/DelphesFactory.h \
    484         classes/DelphesFormula.h \
    485         external/ExRootAnalysis/ExRootResult.h \
    486         external/ExRootAnalysis/ExRootFilter.h \
    487         external/ExRootAnalysis/ExRootClassifier.h
     529tmp/modules/Hector.$(ObjSuf): \
     530        modules/Hector.$(SrcSuf) \
     531        modules/Hector.h \
     532        classes/DelphesClasses.h \
     533        classes/DelphesFactory.h \
     534        classes/DelphesFormula.h \
     535        external/ExRootAnalysis/ExRootResult.h \
     536        external/ExRootAnalysis/ExRootFilter.h \
     537        external/ExRootAnalysis/ExRootClassifier.h \
     538        external/Hector/H_BeamLine.h \
     539        external/Hector/H_RecRPObject.h \
     540        external/Hector/H_BeamParticle.h
    488541tmp/modules/EnergySmearing.$(ObjSuf): \
    489542        modules/EnergySmearing.$(SrcSuf) \
     
    517570        external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.hh \
    518571        external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.hh
     572tmp/modules/SimpleCalorimeter.$(ObjSuf): \
     573        modules/SimpleCalorimeter.$(SrcSuf) \
     574        modules/SimpleCalorimeter.h \
     575        classes/DelphesClasses.h \
     576        classes/DelphesFactory.h \
     577        classes/DelphesFormula.h \
     578        external/ExRootAnalysis/ExRootResult.h \
     579        external/ExRootAnalysis/ExRootFilter.h \
     580        external/ExRootAnalysis/ExRootClassifier.h
     581tmp/modules/LeptonDressing.$(ObjSuf): \
     582        modules/LeptonDressing.$(SrcSuf) \
     583        modules/LeptonDressing.h \
     584        classes/DelphesClasses.h \
     585        classes/DelphesFactory.h \
     586        classes/DelphesFormula.h \
     587        external/ExRootAnalysis/ExRootResult.h \
     588        external/ExRootAnalysis/ExRootFilter.h \
     589        external/ExRootAnalysis/ExRootClassifier.h
     590tmp/modules/Efficiency.$(ObjSuf): \
     591        modules/Efficiency.$(SrcSuf) \
     592        modules/Efficiency.h \
     593        classes/DelphesClasses.h \
     594        classes/DelphesFactory.h \
     595        classes/DelphesFormula.h \
     596        external/ExRootAnalysis/ExRootResult.h \
     597        external/ExRootAnalysis/ExRootFilter.h \
     598        external/ExRootAnalysis/ExRootClassifier.h
     599tmp/modules/TimeSmearing.$(ObjSuf): \
     600        modules/TimeSmearing.$(SrcSuf) \
     601        modules/TimeSmearing.h \
     602        classes/DelphesClasses.h \
     603        classes/DelphesFactory.h \
     604        classes/DelphesFormula.h \
     605        external/ExRootAnalysis/ExRootResult.h \
     606        external/ExRootAnalysis/ExRootFilter.h \
     607        external/ExRootAnalysis/ExRootClassifier.h
     608tmp/modules/PileUpJetID.$(ObjSuf): \
     609        modules/PileUpJetID.$(SrcSuf) \
     610        modules/PileUpJetID.h \
     611        classes/DelphesClasses.h \
     612        classes/DelphesFactory.h \
     613        classes/DelphesFormula.h \
     614        external/ExRootAnalysis/ExRootResult.h \
     615        external/ExRootAnalysis/ExRootFilter.h \
     616        external/ExRootAnalysis/ExRootClassifier.h
     617tmp/modules/JetPileUpSubtractor.$(ObjSuf): \
     618        modules/JetPileUpSubtractor.$(SrcSuf) \
     619        modules/JetPileUpSubtractor.h \
     620        classes/DelphesClasses.h \
     621        classes/DelphesFactory.h \
     622        classes/DelphesFormula.h \
     623        external/ExRootAnalysis/ExRootResult.h \
     624        external/ExRootAnalysis/ExRootFilter.h \
     625        external/ExRootAnalysis/ExRootClassifier.h
     626tmp/modules/TauTagging.$(ObjSuf): \
     627        modules/TauTagging.$(SrcSuf) \
     628        modules/TauTagging.h \
     629        classes/DelphesClasses.h \
     630        classes/DelphesFactory.h \
     631        classes/DelphesFormula.h \
     632        external/ExRootAnalysis/ExRootResult.h \
     633        external/ExRootAnalysis/ExRootFilter.h \
     634        external/ExRootAnalysis/ExRootClassifier.h
     635tmp/modules/BTagging.$(ObjSuf): \
     636        modules/BTagging.$(SrcSuf) \
     637        modules/BTagging.h \
     638        classes/DelphesClasses.h \
     639        classes/DelphesFactory.h \
     640        classes/DelphesFormula.h \
     641        external/ExRootAnalysis/ExRootResult.h \
     642        external/ExRootAnalysis/ExRootFilter.h \
     643        external/ExRootAnalysis/ExRootClassifier.h
     644tmp/modules/Merger.$(ObjSuf): \
     645        modules/Merger.$(SrcSuf) \
     646        modules/Merger.h \
     647        classes/DelphesClasses.h \
     648        classes/DelphesFactory.h \
     649        classes/DelphesFormula.h \
     650        external/ExRootAnalysis/ExRootResult.h \
     651        external/ExRootAnalysis/ExRootFilter.h \
     652        external/ExRootAnalysis/ExRootClassifier.h
     653tmp/modules/FastJetGridMedianEstimator.$(ObjSuf): \
     654        modules/FastJetGridMedianEstimator.$(SrcSuf) \
     655        modules/FastJetGridMedianEstimator.h \
     656        classes/DelphesClasses.h \
     657        classes/DelphesFactory.h \
     658        classes/DelphesFormula.h \
     659        external/ExRootAnalysis/ExRootResult.h \
     660        external/ExRootAnalysis/ExRootFilter.h \
     661        external/ExRootAnalysis/ExRootClassifier.h \
     662        external/fastjet/PseudoJet.hh \
     663        external/fastjet/JetDefinition.hh \
     664        external/fastjet/ClusterSequence.hh \
     665        external/fastjet/Selector.hh \
     666        external/fastjet/RectangularGrid.hh \
     667        external/fastjet/ClusterSequenceArea.hh \
     668        external/fastjet/tools/JetMedianBackgroundEstimator.hh \
     669        external/fastjet/tools/GridMedianBackgroundEstimator.hh \
     670        external/fastjet/plugins/SISCone/fastjet/SISConePlugin.hh \
     671        external/fastjet/plugins/CDFCones/fastjet/CDFMidPointPlugin.hh \
     672        external/fastjet/plugins/CDFCones/fastjet/CDFJetCluPlugin.hh \
     673        external/fastjet/contribs/Nsubjettiness/Nsubjettiness.hh \
     674        external/fastjet/contribs/Nsubjettiness/Njettiness.hh \
     675        external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.hh \
     676        external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.hh
     677tmp/modules/Cloner.$(ObjSuf): \
     678        modules/Cloner.$(SrcSuf) \
     679        modules/Cloner.h \
     680        classes/DelphesClasses.h \
     681        classes/DelphesFactory.h \
     682        classes/DelphesFormula.h \
     683        external/ExRootAnalysis/ExRootResult.h \
     684        external/ExRootAnalysis/ExRootFilter.h \
     685        external/ExRootAnalysis/ExRootClassifier.h
     686tmp/modules/PdgCodeFilter.$(ObjSuf): \
     687        modules/PdgCodeFilter.$(SrcSuf) \
     688        modules/PdgCodeFilter.h \
     689        classes/DelphesClasses.h \
     690        classes/DelphesFactory.h \
     691        classes/DelphesFormula.h \
     692        external/ExRootAnalysis/ExRootResult.h \
     693        external/ExRootAnalysis/ExRootFilter.h \
     694        external/ExRootAnalysis/ExRootClassifier.h
     695tmp/modules/EnergyScale.$(ObjSuf): \
     696        modules/EnergyScale.$(SrcSuf) \
     697        modules/EnergyScale.h \
     698        classes/DelphesClasses.h \
     699        classes/DelphesFactory.h \
     700        classes/DelphesFormula.h \
     701        external/ExRootAnalysis/ExRootResult.h \
     702        external/ExRootAnalysis/ExRootFilter.h \
     703        external/ExRootAnalysis/ExRootClassifier.h
     704tmp/modules/TrackCountingBTagging.$(ObjSuf): \
     705        modules/TrackCountingBTagging.$(SrcSuf) \
     706        modules/TrackCountingBTagging.h \
     707        classes/DelphesClasses.h \
     708        classes/DelphesFactory.h \
     709        classes/DelphesFormula.h
     710tmp/modules/Calorimeter.$(ObjSuf): \
     711        modules/Calorimeter.$(SrcSuf) \
     712        modules/Calorimeter.h \
     713        classes/DelphesClasses.h \
     714        classes/DelphesFactory.h \
     715        classes/DelphesFormula.h \
     716        external/ExRootAnalysis/ExRootResult.h \
     717        external/ExRootAnalysis/ExRootFilter.h \
     718        external/ExRootAnalysis/ExRootClassifier.h
    519719tmp/modules/PileUpMergerPythia8.$(ObjSuf): \
    520720        modules/PileUpMergerPythia8.$(SrcSuf) \
     
    527727        external/ExRootAnalysis/ExRootFilter.h \
    528728        external/ExRootAnalysis/ExRootClassifier.h
    529 tmp/modules/StatusPidFilter.$(ObjSuf): \
    530         modules/StatusPidFilter.$(SrcSuf) \
    531         modules/StatusPidFilter.h \
    532         classes/DelphesClasses.h \
    533         classes/DelphesFactory.h \
    534         classes/DelphesFormula.h \
    535         external/ExRootAnalysis/ExRootResult.h \
    536         external/ExRootAnalysis/ExRootFilter.h \
    537         external/ExRootAnalysis/ExRootClassifier.h
    538 tmp/modules/ConstituentFilter.$(ObjSuf): \
    539         modules/ConstituentFilter.$(SrcSuf) \
    540         modules/ConstituentFilter.h \
    541         classes/DelphesClasses.h \
    542         classes/DelphesFactory.h \
    543         classes/DelphesFormula.h \
    544         external/ExRootAnalysis/ExRootResult.h \
    545         external/ExRootAnalysis/ExRootFilter.h \
    546         external/ExRootAnalysis/ExRootClassifier.h
    547 tmp/modules/EnergyScale.$(ObjSuf): \
    548         modules/EnergyScale.$(SrcSuf) \
    549         modules/EnergyScale.h \
    550         classes/DelphesClasses.h \
    551         classes/DelphesFactory.h \
    552         classes/DelphesFormula.h \
    553         external/ExRootAnalysis/ExRootResult.h \
    554         external/ExRootAnalysis/ExRootFilter.h \
    555         external/ExRootAnalysis/ExRootClassifier.h
    556 tmp/modules/TrackCountingBTagging.$(ObjSuf): \
    557         modules/TrackCountingBTagging.$(SrcSuf) \
    558         modules/TrackCountingBTagging.h \
    559         classes/DelphesClasses.h \
    560         classes/DelphesFactory.h \
    561         classes/DelphesFormula.h
    562 tmp/modules/TauTagging.$(ObjSuf): \
    563         modules/TauTagging.$(SrcSuf) \
    564         modules/TauTagging.h \
    565         classes/DelphesClasses.h \
    566         classes/DelphesFactory.h \
    567         classes/DelphesFormula.h \
    568         external/ExRootAnalysis/ExRootResult.h \
    569         external/ExRootAnalysis/ExRootFilter.h \
    570         external/ExRootAnalysis/ExRootClassifier.h
    571 tmp/modules/TimeSmearing.$(ObjSuf): \
    572         modules/TimeSmearing.$(SrcSuf) \
    573         modules/TimeSmearing.h \
    574         classes/DelphesClasses.h \
    575         classes/DelphesFactory.h \
    576         classes/DelphesFormula.h \
    577         external/ExRootAnalysis/ExRootResult.h \
    578         external/ExRootAnalysis/ExRootFilter.h \
    579         external/ExRootAnalysis/ExRootClassifier.h
    580 tmp/modules/Merger.$(ObjSuf): \
    581         modules/Merger.$(SrcSuf) \
    582         modules/Merger.h \
    583         classes/DelphesClasses.h \
    584         classes/DelphesFactory.h \
    585         classes/DelphesFormula.h \
    586         external/ExRootAnalysis/ExRootResult.h \
    587         external/ExRootAnalysis/ExRootFilter.h \
    588         external/ExRootAnalysis/ExRootClassifier.h
    589 tmp/modules/BTagging.$(ObjSuf): \
    590         modules/BTagging.$(SrcSuf) \
    591         modules/BTagging.h \
     729tmp/modules/MomentumSmearing.$(ObjSuf): \
     730        modules/MomentumSmearing.$(SrcSuf) \
     731        modules/MomentumSmearing.h \
     732        classes/DelphesClasses.h \
     733        classes/DelphesFactory.h \
     734        classes/DelphesFormula.h \
     735        external/ExRootAnalysis/ExRootResult.h \
     736        external/ExRootAnalysis/ExRootFilter.h \
     737        external/ExRootAnalysis/ExRootClassifier.h
     738tmp/modules/ImpactParameterSmearing.$(ObjSuf): \
     739        modules/ImpactParameterSmearing.$(SrcSuf) \
     740        modules/ImpactParameterSmearing.h \
    592741        classes/DelphesClasses.h \
    593742        classes/DelphesFactory.h \
     
    606755        external/ExRootAnalysis/ExRootClassifier.h \
    607756        external/ExRootAnalysis/ExRootTreeBranch.h
    608 tmp/modules/Weighter.$(ObjSuf): \
    609         modules/Weighter.$(SrcSuf) \
    610         modules/Weighter.h \
    611         classes/DelphesClasses.h \
    612         classes/DelphesFactory.h \
    613         classes/DelphesFormula.h \
    614         external/ExRootAnalysis/ExRootResult.h \
    615         external/ExRootAnalysis/ExRootFilter.h \
    616         external/ExRootAnalysis/ExRootClassifier.h
    617 tmp/modules/PileUpJetID.$(ObjSuf): \
    618         modules/PileUpJetID.$(SrcSuf) \
    619         modules/PileUpJetID.h \
    620         classes/DelphesClasses.h \
    621         classes/DelphesFactory.h \
    622         classes/DelphesFormula.h \
    623         external/ExRootAnalysis/ExRootResult.h \
    624         external/ExRootAnalysis/ExRootFilter.h \
    625         external/ExRootAnalysis/ExRootClassifier.h
    626 tmp/modules/Delphes.$(ObjSuf): \
    627         modules/Delphes.$(SrcSuf) \
    628         modules/Delphes.h \
    629         classes/DelphesClasses.h \
    630         classes/DelphesFactory.h \
    631         classes/DelphesFormula.h \
    632         external/ExRootAnalysis/ExRootResult.h \
    633         external/ExRootAnalysis/ExRootFilter.h \
    634         external/ExRootAnalysis/ExRootClassifier.h \
    635         external/ExRootAnalysis/ExRootConfReader.h \
    636         external/ExRootAnalysis/ExRootTreeWriter.h
    637 tmp/modules/ImpactParameterSmearing.$(ObjSuf): \
    638         modules/ImpactParameterSmearing.$(SrcSuf) \
    639         modules/ImpactParameterSmearing.h \
    640         classes/DelphesClasses.h \
    641         classes/DelphesFactory.h \
    642         classes/DelphesFormula.h \
    643         external/ExRootAnalysis/ExRootResult.h \
    644         external/ExRootAnalysis/ExRootFilter.h \
    645         external/ExRootAnalysis/ExRootClassifier.h
    646 tmp/modules/Calorimeter.$(ObjSuf): \
    647         modules/Calorimeter.$(SrcSuf) \
    648         modules/Calorimeter.h \
    649         classes/DelphesClasses.h \
    650         classes/DelphesFactory.h \
    651         classes/DelphesFormula.h \
    652         external/ExRootAnalysis/ExRootResult.h \
    653         external/ExRootAnalysis/ExRootFilter.h \
    654         external/ExRootAnalysis/ExRootClassifier.h
    655 tmp/modules/Isolation.$(ObjSuf): \
    656         modules/Isolation.$(SrcSuf) \
    657         modules/Isolation.h \
    658         classes/DelphesClasses.h \
    659         classes/DelphesFactory.h \
    660         classes/DelphesFormula.h \
    661         external/ExRootAnalysis/ExRootResult.h \
    662         external/ExRootAnalysis/ExRootFilter.h \
    663         external/ExRootAnalysis/ExRootClassifier.h
    664 tmp/modules/PileUpMerger.$(ObjSuf): \
    665         modules/PileUpMerger.$(SrcSuf) \
    666         modules/PileUpMerger.h \
    667         classes/DelphesClasses.h \
    668         classes/DelphesFactory.h \
    669         classes/DelphesTF2.h \
    670         classes/DelphesPileUpReader.h \
    671         external/ExRootAnalysis/ExRootResult.h \
    672         external/ExRootAnalysis/ExRootFilter.h \
    673         external/ExRootAnalysis/ExRootClassifier.h
    674 tmp/modules/TrackPileUpSubtractor.$(ObjSuf): \
    675         modules/TrackPileUpSubtractor.$(SrcSuf) \
    676         modules/TrackPileUpSubtractor.h \
    677         classes/DelphesClasses.h \
    678         classes/DelphesFactory.h \
    679         classes/DelphesFormula.h \
    680         external/ExRootAnalysis/ExRootResult.h \
    681         external/ExRootAnalysis/ExRootFilter.h \
    682         external/ExRootAnalysis/ExRootClassifier.h
    683 tmp/modules/Cloner.$(ObjSuf): \
    684         modules/Cloner.$(SrcSuf) \
    685         modules/Cloner.h \
    686         classes/DelphesClasses.h \
    687         classes/DelphesFactory.h \
    688         classes/DelphesFormula.h \
    689         external/ExRootAnalysis/ExRootResult.h \
    690         external/ExRootAnalysis/ExRootFilter.h \
    691         external/ExRootAnalysis/ExRootClassifier.h
    692 tmp/modules/JetPileUpSubtractor.$(ObjSuf): \
    693         modules/JetPileUpSubtractor.$(SrcSuf) \
    694         modules/JetPileUpSubtractor.h \
    695         classes/DelphesClasses.h \
    696         classes/DelphesFactory.h \
    697         classes/DelphesFormula.h \
    698         external/ExRootAnalysis/ExRootResult.h \
    699         external/ExRootAnalysis/ExRootFilter.h \
    700         external/ExRootAnalysis/ExRootClassifier.h
    701 tmp/modules/Hector.$(ObjSuf): \
    702         modules/Hector.$(SrcSuf) \
    703         modules/Hector.h \
    704         classes/DelphesClasses.h \
    705         classes/DelphesFactory.h \
    706         classes/DelphesFormula.h \
    707         external/ExRootAnalysis/ExRootResult.h \
    708         external/ExRootAnalysis/ExRootFilter.h \
    709         external/ExRootAnalysis/ExRootClassifier.h \
    710         external/Hector/H_BeamLine.h \
    711         external/Hector/H_RecRPObject.h \
    712         external/Hector/H_BeamParticle.h
    713 tmp/modules/MomentumSmearing.$(ObjSuf): \
    714         modules/MomentumSmearing.$(SrcSuf) \
    715         modules/MomentumSmearing.h \
    716         classes/DelphesClasses.h \
    717         classes/DelphesFactory.h \
    718         classes/DelphesFormula.h \
    719         external/ExRootAnalysis/ExRootResult.h \
    720         external/ExRootAnalysis/ExRootFilter.h \
    721         external/ExRootAnalysis/ExRootClassifier.h
     757tmp/external/ExRootAnalysis/ExRootTreeWriter.$(ObjSuf): \
     758        external/ExRootAnalysis/ExRootTreeWriter.$(SrcSuf) \
     759        external/ExRootAnalysis/ExRootTreeWriter.h \
     760        external/ExRootAnalysis/ExRootTreeBranch.h
    722761tmp/external/ExRootAnalysis/ExRootFilter.$(ObjSuf): \
    723762        external/ExRootAnalysis/ExRootFilter.$(SrcSuf) \
    724763        external/ExRootAnalysis/ExRootFilter.h \
    725764        external/ExRootAnalysis/ExRootClassifier.h
     765tmp/external/ExRootAnalysis/ExRootResult.$(ObjSuf): \
     766        external/ExRootAnalysis/ExRootResult.$(SrcSuf) \
     767        external/ExRootAnalysis/ExRootResult.h \
     768        external/ExRootAnalysis/ExRootUtilities.h
    726769tmp/external/ExRootAnalysis/ExRootConfReader.$(ObjSuf): \
    727770        external/ExRootAnalysis/ExRootConfReader.$(SrcSuf) \
    728771        external/ExRootAnalysis/ExRootConfReader.h \
    729772        external/tcl/tcl.h
    730 tmp/external/ExRootAnalysis/ExRootTreeWriter.$(ObjSuf): \
    731         external/ExRootAnalysis/ExRootTreeWriter.$(SrcSuf) \
    732         external/ExRootAnalysis/ExRootTreeWriter.h \
    733         external/ExRootAnalysis/ExRootTreeBranch.h
    734 tmp/external/ExRootAnalysis/ExRootResult.$(ObjSuf): \
    735         external/ExRootAnalysis/ExRootResult.$(SrcSuf) \
    736         external/ExRootAnalysis/ExRootResult.h \
    737         external/ExRootAnalysis/ExRootUtilities.h
     773tmp/external/ExRootAnalysis/ExRootProgressBar.$(ObjSuf): \
     774        external/ExRootAnalysis/ExRootProgressBar.$(SrcSuf) \
     775        external/ExRootAnalysis/ExRootProgressBar.h
    738776tmp/external/ExRootAnalysis/ExRootTreeBranch.$(ObjSuf): \
    739777        external/ExRootAnalysis/ExRootTreeBranch.$(SrcSuf) \
     
    746784        external/ExRootAnalysis/ExRootTask.h \
    747785        external/ExRootAnalysis/ExRootConfReader.h
    748 tmp/external/ExRootAnalysis/ExRootProgressBar.$(ObjSuf): \
    749         external/ExRootAnalysis/ExRootProgressBar.$(SrcSuf) \
    750         external/ExRootAnalysis/ExRootProgressBar.h
    751786tmp/external/ExRootAnalysis/ExRootUtilities.$(ObjSuf): \
    752787        external/ExRootAnalysis/ExRootUtilities.$(SrcSuf) \
    753788        external/ExRootAnalysis/ExRootUtilities.h
     789tmp/external/fastjet/Selector.$(ObjSuf): \
     790        external/fastjet/Selector.$(SrcSuf) \
     791        external/fastjet/Selector.hh \
     792        external/fastjet/GhostedAreaSpec.hh
     793tmp/external/fastjet/BasicRandom.$(ObjSuf): \
     794        external/fastjet/BasicRandom.$(SrcSuf) \
     795        external/fastjet/internal/BasicRandom.hh
    754796tmp/external/fastjet/Dnn2piCylinder.$(ObjSuf): \
    755797        external/fastjet/Dnn2piCylinder.$(SrcSuf) \
    756798        external/fastjet/internal/Dnn2piCylinder.hh
    757 tmp/external/fastjet/GhostedAreaSpec.$(ObjSuf): \
    758         external/fastjet/GhostedAreaSpec.$(SrcSuf) \
    759         external/fastjet/GhostedAreaSpec.hh \
    760         external/fastjet/Error.hh
    761 tmp/external/fastjet/ClusterSequenceActiveArea.$(ObjSuf): \
    762         external/fastjet/ClusterSequenceActiveArea.$(SrcSuf) \
    763         external/fastjet/PseudoJet.hh \
    764         external/fastjet/ClusterSequence.hh \
    765         external/fastjet/ClusterSequenceActiveArea.hh \
     799tmp/external/fastjet/Dnn3piCylinder.$(ObjSuf): \
     800        external/fastjet/Dnn3piCylinder.$(SrcSuf) \
     801        external/fastjet/internal/Dnn3piCylinder.hh
     802tmp/external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(ObjSuf): \
     803        external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(SrcSuf) \
    766804        external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh
     805tmp/external/fastjet/LazyTiling9.$(ObjSuf): \
     806        external/fastjet/LazyTiling9.$(SrcSuf) \
     807        external/fastjet/internal/LazyTiling9.hh \
     808        external/fastjet/internal/TilingExtent.hh
     809tmp/external/fastjet/AreaDefinition.$(ObjSuf): \
     810        external/fastjet/AreaDefinition.$(SrcSuf) \
     811        external/fastjet/AreaDefinition.hh
     812tmp/external/fastjet/ClusterSequence_DumbN3.$(ObjSuf): \
     813        external/fastjet/ClusterSequence_DumbN3.$(SrcSuf) \
     814        external/fastjet/PseudoJet.hh \
     815        external/fastjet/ClusterSequence.hh
    767816tmp/external/fastjet/ClusterSequence_Delaunay.$(ObjSuf): \
    768817        external/fastjet/ClusterSequence_Delaunay.$(SrcSuf) \
     
    774823        external/fastjet/internal/Dnn3piCylinder.hh \
    775824        external/fastjet/internal/Dnn2piCylinder.hh
    776 tmp/external/fastjet/ClusterSequenceArea.$(ObjSuf): \
    777         external/fastjet/ClusterSequenceArea.$(SrcSuf) \
    778         external/fastjet/ClusterSequenceArea.hh
    779 tmp/external/fastjet/Voronoi.$(ObjSuf): \
    780         external/fastjet/Voronoi.$(SrcSuf) \
    781         external/fastjet/internal/Voronoi.hh
    782 tmp/external/fastjet/Selector.$(ObjSuf): \
    783         external/fastjet/Selector.$(SrcSuf) \
    784         external/fastjet/Selector.hh \
    785         external/fastjet/GhostedAreaSpec.hh
    786 tmp/external/fastjet/ClusterSequence_TiledN2.$(ObjSuf): \
    787         external/fastjet/ClusterSequence_TiledN2.$(SrcSuf) \
    788         external/fastjet/PseudoJet.hh \
    789         external/fastjet/ClusterSequence.hh \
    790         external/fastjet/internal/MinHeap.hh
    791 tmp/external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(ObjSuf): \
    792         external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(SrcSuf) \
    793         external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh
    794 tmp/external/fastjet/LimitedWarning.$(ObjSuf): \
    795         external/fastjet/LimitedWarning.$(SrcSuf) \
    796         external/fastjet/LimitedWarning.hh
    797 tmp/external/fastjet/CompositeJetStructure.$(ObjSuf): \
    798         external/fastjet/CompositeJetStructure.$(SrcSuf)
    799 tmp/external/fastjet/DnnPlane.$(ObjSuf): \
    800         external/fastjet/DnnPlane.$(SrcSuf) \
    801         external/fastjet/internal/DnnPlane.hh
    802 tmp/external/fastjet/ClusterSequence_DumbN3.$(ObjSuf): \
    803         external/fastjet/ClusterSequence_DumbN3.$(SrcSuf) \
    804         external/fastjet/PseudoJet.hh \
    805         external/fastjet/ClusterSequence.hh
    806 tmp/external/fastjet/ClusterSequencePassiveArea.$(ObjSuf): \
    807         external/fastjet/ClusterSequencePassiveArea.$(SrcSuf) \
    808         external/fastjet/ClusterSequencePassiveArea.hh \
    809         external/fastjet/ClusterSequenceVoronoiArea.hh
    810 tmp/external/fastjet/BasicRandom.$(ObjSuf): \
    811         external/fastjet/BasicRandom.$(SrcSuf) \
    812         external/fastjet/internal/BasicRandom.hh
    813 tmp/external/fastjet/ClusterSequenceAreaBase.$(ObjSuf): \
    814         external/fastjet/ClusterSequenceAreaBase.$(SrcSuf) \
    815         external/fastjet/ClusterSequenceAreaBase.hh
    816 tmp/external/fastjet/PseudoJetStructureBase.$(ObjSuf): \
    817         external/fastjet/PseudoJetStructureBase.$(SrcSuf) \
    818         external/fastjet/PseudoJetStructureBase.hh \
    819         external/fastjet/Error.hh \
    820         external/fastjet/PseudoJet.hh \
    821         external/fastjet/ClusterSequence.hh \
    822         external/fastjet/ClusterSequenceAreaBase.hh
    823 tmp/external/fastjet/ClusterSequence.$(ObjSuf): \
    824         external/fastjet/ClusterSequence.$(SrcSuf) \
    825         external/fastjet/Error.hh \
    826         external/fastjet/PseudoJet.hh \
    827         external/fastjet/ClusterSequence.hh \
    828         external/fastjet/ClusterSequenceStructure.hh \
    829         external/fastjet/version.hh
     825tmp/external/fastjet/Dnn4piCylinder.$(ObjSuf): \
     826        external/fastjet/Dnn4piCylinder.$(SrcSuf) \
     827        external/fastjet/internal/Dnn4piCylinder.hh
     828tmp/external/fastjet/ClosestPair2D.$(ObjSuf): \
     829        external/fastjet/ClosestPair2D.$(SrcSuf) \
     830        external/fastjet/internal/ClosestPair2D.hh
    830831tmp/external/fastjet/JetDefinition.$(ObjSuf): \
    831832        external/fastjet/JetDefinition.$(SrcSuf) \
     
    833834        external/fastjet/Error.hh \
    834835        external/fastjet/CompositeJetStructure.hh
     836tmp/external/fastjet/RectangularGrid.$(ObjSuf): \
     837        external/fastjet/RectangularGrid.$(SrcSuf) \
     838        external/fastjet/RectangularGrid.hh
     839tmp/external/fastjet/ClusterSequenceAreaBase.$(ObjSuf): \
     840        external/fastjet/ClusterSequenceAreaBase.$(SrcSuf) \
     841        external/fastjet/ClusterSequenceAreaBase.hh
     842tmp/external/fastjet/DnnPlane.$(ObjSuf): \
     843        external/fastjet/DnnPlane.$(SrcSuf) \
     844        external/fastjet/internal/DnnPlane.hh
     845tmp/external/fastjet/LazyTiling25.$(ObjSuf): \
     846        external/fastjet/LazyTiling25.$(SrcSuf) \
     847        external/fastjet/internal/LazyTiling25.hh \
     848        external/fastjet/internal/TilingExtent.hh
     849tmp/external/fastjet/LazyTiling9SeparateGhosts.$(ObjSuf): \
     850        external/fastjet/LazyTiling9SeparateGhosts.$(SrcSuf) \
     851        external/fastjet/internal/LazyTiling9SeparateGhosts.hh \
     852        external/fastjet/internal/TilingExtent.hh
    835853tmp/external/fastjet/Error.$(ObjSuf): \
    836854        external/fastjet/Error.$(SrcSuf) \
    837855        external/fastjet/Error.hh \
    838856        external/fastjet/config.h
    839 tmp/external/fastjet/RangeDefinition.$(ObjSuf): \
    840         external/fastjet/RangeDefinition.$(SrcSuf) \
    841         external/fastjet/RangeDefinition.hh
     857tmp/external/fastjet/ClusterSequenceActiveArea.$(ObjSuf): \
     858        external/fastjet/ClusterSequenceActiveArea.$(SrcSuf) \
     859        external/fastjet/PseudoJet.hh \
     860        external/fastjet/ClusterSequence.hh \
     861        external/fastjet/ClusterSequenceActiveArea.hh \
     862        external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh
     863tmp/external/fastjet/CompositeJetStructure.$(ObjSuf): \
     864        external/fastjet/CompositeJetStructure.$(SrcSuf)
    842865tmp/external/fastjet/ClusterSequence_N2.$(ObjSuf): \
    843866        external/fastjet/ClusterSequence_N2.$(SrcSuf)
     867tmp/external/fastjet/ClusterSequence_TiledN2.$(ObjSuf): \
     868        external/fastjet/ClusterSequence_TiledN2.$(SrcSuf) \
     869        external/fastjet/PseudoJet.hh \
     870        external/fastjet/ClusterSequence.hh \
     871        external/fastjet/internal/MinHeap.hh \
     872        external/fastjet/internal/TilingExtent.hh
    844873tmp/external/fastjet/ClusterSequenceStructure.$(ObjSuf): \
    845874        external/fastjet/ClusterSequenceStructure.$(SrcSuf) \
     
    849878        external/fastjet/ClusterSequence.hh \
    850879        external/fastjet/ClusterSequenceAreaBase.hh
    851 tmp/external/fastjet/Dnn4piCylinder.$(ObjSuf): \
    852         external/fastjet/Dnn4piCylinder.$(SrcSuf) \
    853         external/fastjet/internal/Dnn4piCylinder.hh
     880tmp/external/fastjet/ClusterSequencePassiveArea.$(ObjSuf): \
     881        external/fastjet/ClusterSequencePassiveArea.$(SrcSuf) \
     882        external/fastjet/ClusterSequencePassiveArea.hh \
     883        external/fastjet/ClusterSequenceVoronoiArea.hh
     884tmp/external/fastjet/PseudoJetStructureBase.$(ObjSuf): \
     885        external/fastjet/PseudoJetStructureBase.$(SrcSuf) \
     886        external/fastjet/PseudoJetStructureBase.hh \
     887        external/fastjet/Error.hh \
     888        external/fastjet/PseudoJet.hh \
     889        external/fastjet/ClusterSequence.hh \
     890        external/fastjet/ClusterSequenceAreaBase.hh
     891tmp/external/fastjet/TilingExtent.$(ObjSuf): \
     892        external/fastjet/TilingExtent.$(SrcSuf) \
     893        external/fastjet/internal/TilingExtent.hh
     894tmp/external/fastjet/Voronoi.$(ObjSuf): \
     895        external/fastjet/Voronoi.$(SrcSuf) \
     896        external/fastjet/internal/Voronoi.hh
     897tmp/external/fastjet/LazyTiling9Alt.$(ObjSuf): \
     898        external/fastjet/LazyTiling9Alt.$(SrcSuf) \
     899        external/fastjet/internal/LazyTiling9Alt.hh \
     900        external/fastjet/internal/TilingExtent.hh
     901tmp/external/fastjet/ClusterSequenceArea.$(ObjSuf): \
     902        external/fastjet/ClusterSequenceArea.$(SrcSuf) \
     903        external/fastjet/ClusterSequenceArea.hh
    854904tmp/external/fastjet/ClusterSequence1GhostPassiveArea.$(ObjSuf): \
    855905        external/fastjet/ClusterSequence1GhostPassiveArea.$(SrcSuf) \
    856906        external/fastjet/ClusterSequence1GhostPassiveArea.hh
     907tmp/external/fastjet/FunctionOfPseudoJet.$(ObjSuf): \
     908        external/fastjet/FunctionOfPseudoJet.$(SrcSuf)
    857909tmp/external/fastjet/MinHeap.$(ObjSuf): \
    858910        external/fastjet/MinHeap.$(SrcSuf) \
    859911        external/fastjet/internal/MinHeap.hh
     912tmp/external/fastjet/GhostedAreaSpec.$(ObjSuf): \
     913        external/fastjet/GhostedAreaSpec.$(SrcSuf) \
     914        external/fastjet/GhostedAreaSpec.hh \
     915        external/fastjet/Error.hh
     916tmp/external/fastjet/RangeDefinition.$(ObjSuf): \
     917        external/fastjet/RangeDefinition.$(SrcSuf) \
     918        external/fastjet/RangeDefinition.hh
     919tmp/external/fastjet/ClusterSequence_CP2DChan.$(ObjSuf): \
     920        external/fastjet/ClusterSequence_CP2DChan.$(SrcSuf) \
     921        external/fastjet/ClusterSequence.hh \
     922        external/fastjet/internal/ClosestPair2D.hh
    860923tmp/external/fastjet/PseudoJet.$(ObjSuf): \
    861924        external/fastjet/PseudoJet.$(SrcSuf) \
     
    865928        external/fastjet/ClusterSequenceAreaBase.hh \
    866929        external/fastjet/CompositeJetStructure.hh
    867 tmp/external/fastjet/Dnn3piCylinder.$(ObjSuf): \
    868         external/fastjet/Dnn3piCylinder.$(SrcSuf) \
    869         external/fastjet/internal/Dnn3piCylinder.hh
    870 tmp/external/fastjet/ClusterSequence_CP2DChan.$(ObjSuf): \
    871         external/fastjet/ClusterSequence_CP2DChan.$(SrcSuf) \
    872         external/fastjet/ClusterSequence.hh \
    873         external/fastjet/internal/ClosestPair2D.hh
     930tmp/external/fastjet/LimitedWarning.$(ObjSuf): \
     931        external/fastjet/LimitedWarning.$(SrcSuf) \
     932        external/fastjet/LimitedWarning.hh
    874933tmp/external/fastjet/ClusterSequenceVoronoiArea.$(ObjSuf): \
    875934        external/fastjet/ClusterSequenceVoronoiArea.$(SrcSuf) \
    876935        external/fastjet/ClusterSequenceVoronoiArea.hh \
    877936        external/fastjet/internal/Voronoi.hh
    878 tmp/external/fastjet/ClosestPair2D.$(ObjSuf): \
    879         external/fastjet/ClosestPair2D.$(SrcSuf) \
    880         external/fastjet/internal/ClosestPair2D.hh
    881 tmp/external/fastjet/FunctionOfPseudoJet.$(ObjSuf): \
    882         external/fastjet/FunctionOfPseudoJet.$(SrcSuf)
    883 tmp/external/fastjet/AreaDefinition.$(ObjSuf): \
    884         external/fastjet/AreaDefinition.$(SrcSuf) \
    885         external/fastjet/AreaDefinition.hh
     937tmp/external/fastjet/ClusterSequence.$(ObjSuf): \
     938        external/fastjet/ClusterSequence.$(SrcSuf) \
     939        external/fastjet/Error.hh \
     940        external/fastjet/PseudoJet.hh \
     941        external/fastjet/ClusterSequence.hh \
     942        external/fastjet/ClusterSequenceStructure.hh \
     943        external/fastjet/version.hh \
     944        external/fastjet/internal/LazyTiling9Alt.hh \
     945        external/fastjet/internal/LazyTiling9.hh \
     946        external/fastjet/internal/LazyTiling25.hh \
     947        external/fastjet/internal/LazyTiling9SeparateGhosts.hh
     948tmp/external/fastjet/tools/RestFrameNSubjettinessTagger.$(ObjSuf): \
     949        external/fastjet/tools/RestFrameNSubjettinessTagger.$(SrcSuf)
     950tmp/external/fastjet/tools/MassDropTagger.$(ObjSuf): \
     951        external/fastjet/tools/MassDropTagger.$(SrcSuf)
     952tmp/external/fastjet/tools/GridMedianBackgroundEstimator.$(ObjSuf): \
     953        external/fastjet/tools/GridMedianBackgroundEstimator.$(SrcSuf) \
     954        external/fastjet/tools/GridMedianBackgroundEstimator.hh
     955tmp/external/fastjet/tools/Pruner.$(ObjSuf): \
     956        external/fastjet/tools/Pruner.$(SrcSuf) \
     957        external/fastjet/tools/Pruner.hh \
     958        external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh \
     959        external/fastjet/Selector.hh
    886960tmp/external/fastjet/tools/CASubJetTagger.$(ObjSuf): \
    887961        external/fastjet/tools/CASubJetTagger.$(SrcSuf)
    888 tmp/external/fastjet/tools/TopTaggerBase.$(ObjSuf): \
    889         external/fastjet/tools/TopTaggerBase.$(SrcSuf)
    890962tmp/external/fastjet/tools/BackgroundEstimatorBase.$(ObjSuf): \
    891963        external/fastjet/tools/BackgroundEstimatorBase.$(SrcSuf) \
     
    894966        external/fastjet/tools/Subtractor.$(SrcSuf) \
    895967        external/fastjet/tools/Subtractor.hh
    896 tmp/external/fastjet/tools/RestFrameNSubjettinessTagger.$(ObjSuf): \
    897         external/fastjet/tools/RestFrameNSubjettinessTagger.$(SrcSuf)
     968tmp/external/fastjet/tools/Recluster.$(ObjSuf): \
     969        external/fastjet/tools/Recluster.$(SrcSuf) \
     970        external/fastjet/tools/Recluster.hh \
     971        external/fastjet/CompositeJetStructure.hh
    898972tmp/external/fastjet/tools/JetMedianBackgroundEstimator.$(ObjSuf): \
    899973        external/fastjet/tools/JetMedianBackgroundEstimator.$(SrcSuf) \
    900974        external/fastjet/tools/JetMedianBackgroundEstimator.hh
    901 tmp/external/fastjet/tools/MassDropTagger.$(ObjSuf): \
    902         external/fastjet/tools/MassDropTagger.$(SrcSuf)
    903975tmp/external/fastjet/tools/JHTopTagger.$(ObjSuf): \
    904976        external/fastjet/tools/JHTopTagger.$(SrcSuf)
    905 tmp/external/fastjet/tools/GridMedianBackgroundEstimator.$(ObjSuf): \
    906         external/fastjet/tools/GridMedianBackgroundEstimator.$(SrcSuf) \
    907         external/fastjet/tools/GridMedianBackgroundEstimator.hh
    908977tmp/external/fastjet/tools/Filter.$(ObjSuf): \
    909978        external/fastjet/tools/Filter.$(SrcSuf) \
    910         external/fastjet/tools/Filter.hh
    911 tmp/external/fastjet/tools/Pruner.$(ObjSuf): \
    912         external/fastjet/tools/Pruner.$(SrcSuf) \
    913         external/fastjet/tools/Pruner.hh \
    914         external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh \
    915         external/fastjet/Selector.hh
    916 tmp/external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(ObjSuf): \
    917         external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(SrcSuf) \
    918         external/fastjet/ClusterSequence.hh
    919 tmp/external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(ObjSuf): \
    920         external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(SrcSuf)
    921 tmp/external/fastjet/plugins/ATLASCone/Jet.$(ObjSuf): \
    922         external/fastjet/plugins/ATLASCone/Jet.$(SrcSuf)
    923 tmp/external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(ObjSuf): \
    924         external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(SrcSuf)
    925 tmp/external/fastjet/plugins/NestedDefs/NestedDefsPlugin.$(ObjSuf): \
    926         external/fastjet/plugins/NestedDefs/NestedDefsPlugin.$(SrcSuf) \
    927         external/fastjet/ClusterSequence.hh
    928 tmp/external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(ObjSuf): \
    929         external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(SrcSuf) \
     979        external/fastjet/tools/Filter.hh \
     980        external/fastjet/tools/Recluster.hh
     981tmp/external/fastjet/tools/TopTaggerBase.$(ObjSuf): \
     982        external/fastjet/tools/TopTaggerBase.$(SrcSuf)
     983tmp/external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(ObjSuf): \
     984        external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(SrcSuf) \
    930985        external/fastjet/ClusterSequence.hh \
    931986        external/fastjet/Error.hh
    932 tmp/external/fastjet/plugins/TrackJet/TrackJetPlugin.$(ObjSuf): \
    933         external/fastjet/plugins/TrackJet/TrackJetPlugin.$(SrcSuf) \
    934         external/fastjet/ClusterSequence.hh
    935987tmp/external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(ObjSuf): \
    936988        external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(SrcSuf) \
     
    944996tmp/external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(ObjSuf): \
    945997        external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(SrcSuf)
    946 tmp/external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(ObjSuf): \
    947         external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(SrcSuf) \
     998tmp/external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(ObjSuf): \
     999        external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(SrcSuf) \
    9481000        external/fastjet/ClusterSequence.hh \
    9491001        external/fastjet/Error.hh
    950 tmp/external/fastjet/plugins/SISCone/geom_2d.$(ObjSuf): \
    951         external/fastjet/plugins/SISCone/geom_2d.$(SrcSuf)
     1002tmp/external/fastjet/plugins/GridJet/GridJetPlugin.$(ObjSuf): \
     1003        external/fastjet/plugins/GridJet/GridJetPlugin.$(SrcSuf) \
     1004        external/fastjet/ClusterSequence.hh
     1005tmp/external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(ObjSuf): \
     1006        external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(SrcSuf) \
     1007        external/fastjet/ClusterSequence.hh
     1008tmp/external/fastjet/plugins/SISCone/split_merge.$(ObjSuf): \
     1009        external/fastjet/plugins/SISCone/split_merge.$(SrcSuf)
     1010tmp/external/fastjet/plugins/SISCone/hash.$(ObjSuf): \
     1011        external/fastjet/plugins/SISCone/hash.$(SrcSuf)
     1012tmp/external/fastjet/plugins/SISCone/siscone_error.$(ObjSuf): \
     1013        external/fastjet/plugins/SISCone/siscone_error.$(SrcSuf)
     1014tmp/external/fastjet/plugins/SISCone/ranlux.$(ObjSuf): \
     1015        external/fastjet/plugins/SISCone/ranlux.$(SrcSuf)
    9521016tmp/external/fastjet/plugins/SISCone/SISConePlugin.$(ObjSuf): \
    9531017        external/fastjet/plugins/SISCone/SISConePlugin.$(SrcSuf) \
    9541018        external/fastjet/ClusterSequence.hh
     1019tmp/external/fastjet/plugins/SISCone/vicinity.$(ObjSuf): \
     1020        external/fastjet/plugins/SISCone/vicinity.$(SrcSuf)
     1021tmp/external/fastjet/plugins/SISCone/area.$(ObjSuf): \
     1022        external/fastjet/plugins/SISCone/area.$(SrcSuf)
     1023tmp/external/fastjet/plugins/SISCone/reference.$(ObjSuf): \
     1024        external/fastjet/plugins/SISCone/reference.$(SrcSuf)
     1025tmp/external/fastjet/plugins/SISCone/quadtree.$(ObjSuf): \
     1026        external/fastjet/plugins/SISCone/quadtree.$(SrcSuf)
    9551027tmp/external/fastjet/plugins/SISCone/siscone.$(ObjSuf): \
    9561028        external/fastjet/plugins/SISCone/siscone.$(SrcSuf)
    957 tmp/external/fastjet/plugins/SISCone/hash.$(ObjSuf): \
    958         external/fastjet/plugins/SISCone/hash.$(SrcSuf)
    959 tmp/external/fastjet/plugins/SISCone/quadtree.$(ObjSuf): \
    960         external/fastjet/plugins/SISCone/quadtree.$(SrcSuf)
    961 tmp/external/fastjet/plugins/SISCone/area.$(ObjSuf): \
    962         external/fastjet/plugins/SISCone/area.$(SrcSuf)
    9631029tmp/external/fastjet/plugins/SISCone/momentum.$(ObjSuf): \
    9641030        external/fastjet/plugins/SISCone/momentum.$(SrcSuf)
    965 tmp/external/fastjet/plugins/SISCone/reference.$(ObjSuf): \
    966         external/fastjet/plugins/SISCone/reference.$(SrcSuf)
    967 tmp/external/fastjet/plugins/SISCone/ranlux.$(ObjSuf): \
    968         external/fastjet/plugins/SISCone/ranlux.$(SrcSuf)
    9691031tmp/external/fastjet/plugins/SISCone/protocones.$(ObjSuf): \
    9701032        external/fastjet/plugins/SISCone/protocones.$(SrcSuf)
    971 tmp/external/fastjet/plugins/SISCone/split_merge.$(ObjSuf): \
    972         external/fastjet/plugins/SISCone/split_merge.$(SrcSuf)
    973 tmp/external/fastjet/plugins/SISCone/vicinity.$(ObjSuf): \
    974         external/fastjet/plugins/SISCone/vicinity.$(SrcSuf)
    975 tmp/external/fastjet/plugins/SISCone/siscone_error.$(ObjSuf): \
    976         external/fastjet/plugins/SISCone/siscone_error.$(SrcSuf)
    977 tmp/external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(ObjSuf): \
    978         external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(SrcSuf) \
     1033tmp/external/fastjet/plugins/SISCone/geom_2d.$(ObjSuf): \
     1034        external/fastjet/plugins/SISCone/geom_2d.$(SrcSuf)
     1035tmp/external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(ObjSuf): \
     1036        external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(SrcSuf) \
    9791037        external/fastjet/ClusterSequence.hh
    980 tmp/external/fastjet/plugins/GridJet/GridJetPlugin.$(ObjSuf): \
    981         external/fastjet/plugins/GridJet/GridJetPlugin.$(SrcSuf) \
     1038tmp/external/fastjet/plugins/ATLASCone/Jet.$(ObjSuf): \
     1039        external/fastjet/plugins/ATLASCone/Jet.$(SrcSuf)
     1040tmp/external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(ObjSuf): \
     1041        external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(SrcSuf)
     1042tmp/external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(ObjSuf): \
     1043        external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(SrcSuf)
     1044tmp/external/fastjet/plugins/EECambridge/EECambridgePlugin.$(ObjSuf): \
     1045        external/fastjet/plugins/EECambridge/EECambridgePlugin.$(SrcSuf) \
     1046        external/fastjet/ClusterSequence.hh \
     1047        external/fastjet/NNH.hh
     1048tmp/external/fastjet/plugins/TrackJet/TrackJetPlugin.$(ObjSuf): \
     1049        external/fastjet/plugins/TrackJet/TrackJetPlugin.$(SrcSuf) \
    9821050        external/fastjet/ClusterSequence.hh
    9831051tmp/external/fastjet/plugins/Jade/JadePlugin.$(ObjSuf): \
     
    9851053        external/fastjet/ClusterSequence.hh \
    9861054        external/fastjet/NNH.hh
    987 tmp/external/fastjet/plugins/EECambridge/EECambridgePlugin.$(ObjSuf): \
    988         external/fastjet/plugins/EECambridge/EECambridgePlugin.$(SrcSuf) \
    989         external/fastjet/ClusterSequence.hh \
    990         external/fastjet/NNH.hh
     1055tmp/external/fastjet/plugins/NestedDefs/NestedDefsPlugin.$(ObjSuf): \
     1056        external/fastjet/plugins/NestedDefs/NestedDefsPlugin.$(SrcSuf) \
     1057        external/fastjet/ClusterSequence.hh
     1058tmp/external/fastjet/contribs/SoftKiller/SoftKiller.$(ObjSuf): \
     1059        external/fastjet/contribs/SoftKiller/SoftKiller.$(SrcSuf)
     1060tmp/external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(ObjSuf): \
     1061        external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(SrcSuf)
    9911062tmp/external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(ObjSuf): \
    9921063        external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(SrcSuf)
    993 tmp/external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(ObjSuf): \
    994         external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(SrcSuf)
    995 tmp/external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(ObjSuf): \
    996         external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(SrcSuf)
    997 tmp/external/fastjet/contribs/Nsubjettiness/Njettiness.$(ObjSuf): \
    998         external/fastjet/contribs/Nsubjettiness/Njettiness.$(SrcSuf)
    9991064tmp/external/fastjet/contribs/Nsubjettiness/AxesFinder.$(ObjSuf): \
    10001065        external/fastjet/contribs/Nsubjettiness/AxesFinder.$(SrcSuf)
    10011066tmp/external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.$(ObjSuf): \
    10021067        external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.$(SrcSuf)
     1068tmp/external/fastjet/contribs/Nsubjettiness/Njettiness.$(ObjSuf): \
     1069        external/fastjet/contribs/Nsubjettiness/Njettiness.$(SrcSuf)
     1070tmp/external/fastjet/contribs/Nsubjettiness/NjettinessDefinition.$(ObjSuf): \
     1071        external/fastjet/contribs/Nsubjettiness/NjettinessDefinition.$(SrcSuf)
     1072tmp/external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(ObjSuf): \
     1073        external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(SrcSuf)
     1074tmp/external/Hector/H_OpticalElement.$(ObjSuf): \
     1075        external/Hector/H_OpticalElement.$(SrcSuf)
     1076tmp/external/Hector/H_CircularAperture.$(ObjSuf): \
     1077        external/Hector/H_CircularAperture.$(SrcSuf)
     1078tmp/external/Hector/H_TransportMatrices.$(ObjSuf): \
     1079        external/Hector/H_TransportMatrices.$(SrcSuf)
     1080tmp/external/Hector/H_SectorDipole.$(ObjSuf): \
     1081        external/Hector/H_SectorDipole.$(SrcSuf)
     1082tmp/external/Hector/H_Dipole.$(ObjSuf): \
     1083        external/Hector/H_Dipole.$(SrcSuf)
     1084tmp/external/Hector/H_AbstractBeamLine.$(ObjSuf): \
     1085        external/Hector/H_AbstractBeamLine.$(SrcSuf)
     1086tmp/external/Hector/H_BeamLine.$(ObjSuf): \
     1087        external/Hector/H_BeamLine.$(SrcSuf)
     1088tmp/external/Hector/H_RectEllipticAperture.$(ObjSuf): \
     1089        external/Hector/H_RectEllipticAperture.$(SrcSuf)
     1090tmp/external/Hector/H_HorizontalKicker.$(ObjSuf): \
     1091        external/Hector/H_HorizontalKicker.$(SrcSuf)
     1092tmp/external/Hector/H_Kicker.$(ObjSuf): \
     1093        external/Hector/H_Kicker.$(SrcSuf)
     1094tmp/external/Hector/H_BeamLineParser.$(ObjSuf): \
     1095        external/Hector/H_BeamLineParser.$(SrcSuf)
     1096tmp/external/Hector/H_BeamParticle.$(ObjSuf): \
     1097        external/Hector/H_BeamParticle.$(SrcSuf)
     1098tmp/external/Hector/H_RectangularDipole.$(ObjSuf): \
     1099        external/Hector/H_RectangularDipole.$(SrcSuf)
     1100tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf): \
     1101        external/Hector/H_VerticalQuadrupole.$(SrcSuf)
    10031102tmp/external/Hector/H_Marker.$(ObjSuf): \
    10041103        external/Hector/H_Marker.$(SrcSuf)
     1104tmp/external/Hector/H_Beam.$(ObjSuf): \
     1105        external/Hector/H_Beam.$(SrcSuf)
     1106tmp/external/Hector/H_EllipticAperture.$(ObjSuf): \
     1107        external/Hector/H_EllipticAperture.$(SrcSuf)
    10051108tmp/external/Hector/H_VerticalKicker.$(ObjSuf): \
    10061109        external/Hector/H_VerticalKicker.$(SrcSuf)
    1007 tmp/external/Hector/H_BeamLine.$(ObjSuf): \
    1008         external/Hector/H_BeamLine.$(SrcSuf)
     1110tmp/external/Hector/H_HorizontalQuadrupole.$(ObjSuf): \
     1111        external/Hector/H_HorizontalQuadrupole.$(SrcSuf)
     1112tmp/external/Hector/H_Parameters.$(ObjSuf): \
     1113        external/Hector/H_Parameters.$(SrcSuf)
     1114tmp/external/Hector/H_Drift.$(ObjSuf): \
     1115        external/Hector/H_Drift.$(SrcSuf)
     1116tmp/external/Hector/H_RomanPot.$(ObjSuf): \
     1117        external/Hector/H_RomanPot.$(SrcSuf)
    10091118tmp/external/Hector/H_RecRPObject.$(ObjSuf): \
    10101119        external/Hector/H_RecRPObject.$(SrcSuf)
     1120tmp/external/Hector/H_RectangularCollimator.$(ObjSuf): \
     1121        external/Hector/H_RectangularCollimator.$(SrcSuf)
     1122tmp/external/Hector/H_Aperture.$(ObjSuf): \
     1123        external/Hector/H_Aperture.$(SrcSuf)
     1124tmp/external/Hector/H_RectangularAperture.$(ObjSuf): \
     1125        external/Hector/H_RectangularAperture.$(SrcSuf)
    10111126tmp/external/Hector/H_Quadrupole.$(ObjSuf): \
    10121127        external/Hector/H_Quadrupole.$(SrcSuf)
    1013 tmp/external/Hector/H_RectangularDipole.$(ObjSuf): \
    1014         external/Hector/H_RectangularDipole.$(SrcSuf)
    1015 tmp/external/Hector/H_CircularAperture.$(ObjSuf): \
    1016         external/Hector/H_CircularAperture.$(SrcSuf)
    1017 tmp/external/Hector/H_HorizontalQuadrupole.$(ObjSuf): \
    1018         external/Hector/H_HorizontalQuadrupole.$(SrcSuf)
    1019 tmp/external/Hector/H_HorizontalKicker.$(ObjSuf): \
    1020         external/Hector/H_HorizontalKicker.$(SrcSuf)
    1021 tmp/external/Hector/H_BeamLineParser.$(ObjSuf): \
    1022         external/Hector/H_BeamLineParser.$(SrcSuf)
    1023 tmp/external/Hector/H_RectEllipticAperture.$(ObjSuf): \
    1024         external/Hector/H_RectEllipticAperture.$(SrcSuf)
    1025 tmp/external/Hector/H_RectangularCollimator.$(ObjSuf): \
    1026         external/Hector/H_RectangularCollimator.$(SrcSuf)
    1027 tmp/external/Hector/H_SectorDipole.$(ObjSuf): \
    1028         external/Hector/H_SectorDipole.$(SrcSuf)
    1029 tmp/external/Hector/H_RectangularAperture.$(ObjSuf): \
    1030         external/Hector/H_RectangularAperture.$(SrcSuf)
    1031 tmp/external/Hector/H_RomanPot.$(ObjSuf): \
    1032         external/Hector/H_RomanPot.$(SrcSuf)
    1033 tmp/external/Hector/H_Aperture.$(ObjSuf): \
    1034         external/Hector/H_Aperture.$(SrcSuf)
    1035 tmp/external/Hector/H_BeamParticle.$(ObjSuf): \
    1036         external/Hector/H_BeamParticle.$(SrcSuf)
    1037 tmp/external/Hector/H_Beam.$(ObjSuf): \
    1038         external/Hector/H_Beam.$(SrcSuf)
    1039 tmp/external/Hector/H_Drift.$(ObjSuf): \
    1040         external/Hector/H_Drift.$(SrcSuf)
    1041 tmp/external/Hector/H_Dipole.$(ObjSuf): \
    1042         external/Hector/H_Dipole.$(SrcSuf)
    1043 tmp/external/Hector/H_OpticalElement.$(ObjSuf): \
    1044         external/Hector/H_OpticalElement.$(SrcSuf)
    1045 tmp/external/Hector/H_TransportMatrices.$(ObjSuf): \
    1046         external/Hector/H_TransportMatrices.$(SrcSuf)
    1047 tmp/external/Hector/H_Parameters.$(ObjSuf): \
    1048         external/Hector/H_Parameters.$(SrcSuf)
    1049 tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf): \
    1050         external/Hector/H_VerticalQuadrupole.$(SrcSuf)
    1051 tmp/external/Hector/H_AbstractBeamLine.$(ObjSuf): \
    1052         external/Hector/H_AbstractBeamLine.$(SrcSuf)
    1053 tmp/external/Hector/H_EllipticAperture.$(ObjSuf): \
    1054         external/Hector/H_EllipticAperture.$(SrcSuf)
    1055 tmp/external/Hector/H_Kicker.$(ObjSuf): \
    1056         external/Hector/H_Kicker.$(SrcSuf)
    10571128DELPHES_OBJ +=  \
     1129        tmp/classes/DelphesPileUpReader.$(ObjSuf) \
     1130        tmp/classes/DelphesSTDHEPReader.$(ObjSuf) \
     1131        tmp/classes/DelphesTF2.$(ObjSuf) \
    10581132        tmp/classes/DelphesHepMCReader.$(ObjSuf) \
    10591133        tmp/classes/DelphesLHEFReader.$(ObjSuf) \
    1060         tmp/classes/DelphesTF2.$(ObjSuf) \
     1134        tmp/classes/DelphesStream.$(ObjSuf) \
     1135        tmp/classes/DelphesModule.$(ObjSuf) \
    10611136        tmp/classes/DelphesFactory.$(ObjSuf) \
     1137        tmp/classes/DelphesClasses.$(ObjSuf) \
    10621138        tmp/classes/DelphesFormula.$(ObjSuf) \
    1063         tmp/classes/DelphesSTDHEPReader.$(ObjSuf) \
    1064         tmp/classes/DelphesStream.$(ObjSuf) \
    10651139        tmp/classes/DelphesPileUpWriter.$(ObjSuf) \
    1066         tmp/classes/DelphesModule.$(ObjSuf) \
    1067         tmp/classes/DelphesClasses.$(ObjSuf) \
    1068         tmp/classes/DelphesPileUpReader.$(ObjSuf) \
     1140        tmp/modules/StatusPidFilter.$(ObjSuf) \
     1141        tmp/modules/ParticlePropagator.$(ObjSuf) \
     1142        tmp/modules/Delphes.$(ObjSuf) \
     1143        tmp/modules/UniqueObjectFinder.$(ObjSuf) \
     1144        tmp/modules/ConstituentFilter.$(ObjSuf) \
     1145        tmp/modules/TrackPileUpSubtractor.$(ObjSuf) \
     1146        tmp/modules/Weighter.$(ObjSuf) \
     1147        tmp/modules/Isolation.$(ObjSuf) \
     1148        tmp/modules/PileUpMerger.$(ObjSuf) \
     1149        tmp/modules/ExampleModule.$(ObjSuf) \
     1150        tmp/modules/Hector.$(ObjSuf) \
     1151        tmp/modules/EnergySmearing.$(ObjSuf) \
     1152        tmp/modules/FastJetFinder.$(ObjSuf) \
    10691153        tmp/modules/SimpleCalorimeter.$(ObjSuf) \
    10701154        tmp/modules/LeptonDressing.$(ObjSuf) \
    10711155        tmp/modules/Efficiency.$(ObjSuf) \
    1072         tmp/modules/UniqueObjectFinder.$(ObjSuf) \
    1073         tmp/modules/ExampleModule.$(ObjSuf) \
    1074         tmp/modules/ParticlePropagator.$(ObjSuf) \
    1075         tmp/modules/EnergySmearing.$(ObjSuf) \
    1076         tmp/modules/FastJetFinder.$(ObjSuf) \
    1077         tmp/modules/StatusPidFilter.$(ObjSuf) \
    1078         tmp/modules/ConstituentFilter.$(ObjSuf) \
     1156        tmp/modules/TimeSmearing.$(ObjSuf) \
     1157        tmp/modules/PileUpJetID.$(ObjSuf) \
     1158        tmp/modules/JetPileUpSubtractor.$(ObjSuf) \
     1159        tmp/modules/TauTagging.$(ObjSuf) \
     1160        tmp/modules/BTagging.$(ObjSuf) \
     1161        tmp/modules/Merger.$(ObjSuf) \
     1162        tmp/modules/FastJetGridMedianEstimator.$(ObjSuf) \
     1163        tmp/modules/Cloner.$(ObjSuf) \
     1164        tmp/modules/PdgCodeFilter.$(ObjSuf) \
    10791165        tmp/modules/EnergyScale.$(ObjSuf) \
    10801166        tmp/modules/TrackCountingBTagging.$(ObjSuf) \
    1081         tmp/modules/TauTagging.$(ObjSuf) \
    1082         tmp/modules/TimeSmearing.$(ObjSuf) \
    1083         tmp/modules/Merger.$(ObjSuf) \
    1084         tmp/modules/BTagging.$(ObjSuf) \
     1167        tmp/modules/Calorimeter.$(ObjSuf) \
     1168        tmp/modules/MomentumSmearing.$(ObjSuf) \
     1169        tmp/modules/ImpactParameterSmearing.$(ObjSuf) \
    10851170        tmp/modules/TreeWriter.$(ObjSuf) \
    1086         tmp/modules/Weighter.$(ObjSuf) \
    1087         tmp/modules/PileUpJetID.$(ObjSuf) \
    1088         tmp/modules/Delphes.$(ObjSuf) \
    1089         tmp/modules/ImpactParameterSmearing.$(ObjSuf) \
    1090         tmp/modules/Calorimeter.$(ObjSuf) \
    1091         tmp/modules/Isolation.$(ObjSuf) \
    1092         tmp/modules/PileUpMerger.$(ObjSuf) \
    1093         tmp/modules/TrackPileUpSubtractor.$(ObjSuf) \
    1094         tmp/modules/Cloner.$(ObjSuf) \
    1095         tmp/modules/JetPileUpSubtractor.$(ObjSuf) \
    1096         tmp/modules/Hector.$(ObjSuf) \
    1097         tmp/modules/MomentumSmearing.$(ObjSuf) \
     1171        tmp/external/ExRootAnalysis/ExRootTreeWriter.$(ObjSuf) \
    10981172        tmp/external/ExRootAnalysis/ExRootFilter.$(ObjSuf) \
     1173        tmp/external/ExRootAnalysis/ExRootResult.$(ObjSuf) \
    10991174        tmp/external/ExRootAnalysis/ExRootConfReader.$(ObjSuf) \
    1100         tmp/external/ExRootAnalysis/ExRootTreeWriter.$(ObjSuf) \
    1101         tmp/external/ExRootAnalysis/ExRootResult.$(ObjSuf) \
     1175        tmp/external/ExRootAnalysis/ExRootProgressBar.$(ObjSuf) \
    11021176        tmp/external/ExRootAnalysis/ExRootTreeBranch.$(ObjSuf) \
    11031177        tmp/external/ExRootAnalysis/ExRootTreeReader.$(ObjSuf) \
    11041178        tmp/external/ExRootAnalysis/ExRootTask.$(ObjSuf) \
    1105         tmp/external/ExRootAnalysis/ExRootProgressBar.$(ObjSuf) \
    11061179        tmp/external/ExRootAnalysis/ExRootUtilities.$(ObjSuf) \
     1180        tmp/external/fastjet/Selector.$(ObjSuf) \
     1181        tmp/external/fastjet/BasicRandom.$(ObjSuf) \
    11071182        tmp/external/fastjet/Dnn2piCylinder.$(ObjSuf) \
     1183        tmp/external/fastjet/Dnn3piCylinder.$(ObjSuf) \
     1184        tmp/external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(ObjSuf) \
     1185        tmp/external/fastjet/LazyTiling9.$(ObjSuf) \
     1186        tmp/external/fastjet/AreaDefinition.$(ObjSuf) \
     1187        tmp/external/fastjet/ClusterSequence_DumbN3.$(ObjSuf) \
     1188        tmp/external/fastjet/ClusterSequence_Delaunay.$(ObjSuf) \
     1189        tmp/external/fastjet/Dnn4piCylinder.$(ObjSuf) \
     1190        tmp/external/fastjet/ClosestPair2D.$(ObjSuf) \
     1191        tmp/external/fastjet/JetDefinition.$(ObjSuf) \
     1192        tmp/external/fastjet/RectangularGrid.$(ObjSuf) \
     1193        tmp/external/fastjet/ClusterSequenceAreaBase.$(ObjSuf) \
     1194        tmp/external/fastjet/DnnPlane.$(ObjSuf) \
     1195        tmp/external/fastjet/LazyTiling25.$(ObjSuf) \
     1196        tmp/external/fastjet/LazyTiling9SeparateGhosts.$(ObjSuf) \
     1197        tmp/external/fastjet/Error.$(ObjSuf) \
     1198        tmp/external/fastjet/ClusterSequenceActiveArea.$(ObjSuf) \
     1199        tmp/external/fastjet/CompositeJetStructure.$(ObjSuf) \
     1200        tmp/external/fastjet/ClusterSequence_N2.$(ObjSuf) \
     1201        tmp/external/fastjet/ClusterSequence_TiledN2.$(ObjSuf) \
     1202        tmp/external/fastjet/ClusterSequenceStructure.$(ObjSuf) \
     1203        tmp/external/fastjet/ClusterSequencePassiveArea.$(ObjSuf) \
     1204        tmp/external/fastjet/PseudoJetStructureBase.$(ObjSuf) \
     1205        tmp/external/fastjet/TilingExtent.$(ObjSuf) \
     1206        tmp/external/fastjet/Voronoi.$(ObjSuf) \
     1207        tmp/external/fastjet/LazyTiling9Alt.$(ObjSuf) \
     1208        tmp/external/fastjet/ClusterSequenceArea.$(ObjSuf) \
     1209        tmp/external/fastjet/ClusterSequence1GhostPassiveArea.$(ObjSuf) \
     1210        tmp/external/fastjet/FunctionOfPseudoJet.$(ObjSuf) \
     1211        tmp/external/fastjet/MinHeap.$(ObjSuf) \
    11081212        tmp/external/fastjet/GhostedAreaSpec.$(ObjSuf) \
    1109         tmp/external/fastjet/ClusterSequenceActiveArea.$(ObjSuf) \
    1110         tmp/external/fastjet/ClusterSequence_Delaunay.$(ObjSuf) \
    1111         tmp/external/fastjet/ClusterSequenceArea.$(ObjSuf) \
    1112         tmp/external/fastjet/Voronoi.$(ObjSuf) \
    1113         tmp/external/fastjet/Selector.$(ObjSuf) \
    1114         tmp/external/fastjet/ClusterSequence_TiledN2.$(ObjSuf) \
    1115         tmp/external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(ObjSuf) \
     1213        tmp/external/fastjet/RangeDefinition.$(ObjSuf) \
     1214        tmp/external/fastjet/ClusterSequence_CP2DChan.$(ObjSuf) \
     1215        tmp/external/fastjet/PseudoJet.$(ObjSuf) \
    11161216        tmp/external/fastjet/LimitedWarning.$(ObjSuf) \
    1117         tmp/external/fastjet/CompositeJetStructure.$(ObjSuf) \
    1118         tmp/external/fastjet/DnnPlane.$(ObjSuf) \
    1119         tmp/external/fastjet/ClusterSequence_DumbN3.$(ObjSuf) \
    1120         tmp/external/fastjet/ClusterSequencePassiveArea.$(ObjSuf) \
    1121         tmp/external/fastjet/BasicRandom.$(ObjSuf) \
    1122         tmp/external/fastjet/ClusterSequenceAreaBase.$(ObjSuf) \
    1123         tmp/external/fastjet/PseudoJetStructureBase.$(ObjSuf) \
     1217        tmp/external/fastjet/ClusterSequenceVoronoiArea.$(ObjSuf) \
    11241218        tmp/external/fastjet/ClusterSequence.$(ObjSuf) \
    1125         tmp/external/fastjet/JetDefinition.$(ObjSuf) \
    1126         tmp/external/fastjet/Error.$(ObjSuf) \
    1127         tmp/external/fastjet/RangeDefinition.$(ObjSuf) \
    1128         tmp/external/fastjet/ClusterSequence_N2.$(ObjSuf) \
    1129         tmp/external/fastjet/ClusterSequenceStructure.$(ObjSuf) \
    1130         tmp/external/fastjet/Dnn4piCylinder.$(ObjSuf) \
    1131         tmp/external/fastjet/ClusterSequence1GhostPassiveArea.$(ObjSuf) \
    1132         tmp/external/fastjet/MinHeap.$(ObjSuf) \
    1133         tmp/external/fastjet/PseudoJet.$(ObjSuf) \
    1134         tmp/external/fastjet/Dnn3piCylinder.$(ObjSuf) \
    1135         tmp/external/fastjet/ClusterSequence_CP2DChan.$(ObjSuf) \
    1136         tmp/external/fastjet/ClusterSequenceVoronoiArea.$(ObjSuf) \
    1137         tmp/external/fastjet/ClosestPair2D.$(ObjSuf) \
    1138         tmp/external/fastjet/FunctionOfPseudoJet.$(ObjSuf) \
    1139         tmp/external/fastjet/AreaDefinition.$(ObjSuf) \
     1219        tmp/external/fastjet/tools/RestFrameNSubjettinessTagger.$(ObjSuf) \
     1220        tmp/external/fastjet/tools/MassDropTagger.$(ObjSuf) \
     1221        tmp/external/fastjet/tools/GridMedianBackgroundEstimator.$(ObjSuf) \
     1222        tmp/external/fastjet/tools/Pruner.$(ObjSuf) \
    11401223        tmp/external/fastjet/tools/CASubJetTagger.$(ObjSuf) \
    1141         tmp/external/fastjet/tools/TopTaggerBase.$(ObjSuf) \
    11421224        tmp/external/fastjet/tools/BackgroundEstimatorBase.$(ObjSuf) \
    11431225        tmp/external/fastjet/tools/Subtractor.$(ObjSuf) \
    1144         tmp/external/fastjet/tools/RestFrameNSubjettinessTagger.$(ObjSuf) \
     1226        tmp/external/fastjet/tools/Recluster.$(ObjSuf) \
    11451227        tmp/external/fastjet/tools/JetMedianBackgroundEstimator.$(ObjSuf) \
    1146         tmp/external/fastjet/tools/MassDropTagger.$(ObjSuf) \
    11471228        tmp/external/fastjet/tools/JHTopTagger.$(ObjSuf) \
    1148         tmp/external/fastjet/tools/GridMedianBackgroundEstimator.$(ObjSuf) \
    11491229        tmp/external/fastjet/tools/Filter.$(ObjSuf) \
    1150         tmp/external/fastjet/tools/Pruner.$(ObjSuf) \
    1151         tmp/external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(ObjSuf) \
    1152         tmp/external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(ObjSuf) \
    1153         tmp/external/fastjet/plugins/ATLASCone/Jet.$(ObjSuf) \
    1154         tmp/external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(ObjSuf) \
    1155         tmp/external/fastjet/plugins/NestedDefs/NestedDefsPlugin.$(ObjSuf) \
    1156         tmp/external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(ObjSuf) \
    1157         tmp/external/fastjet/plugins/TrackJet/TrackJetPlugin.$(ObjSuf) \
     1230        tmp/external/fastjet/tools/TopTaggerBase.$(ObjSuf) \
     1231        tmp/external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(ObjSuf) \
    11581232        tmp/external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(ObjSuf) \
    11591233        tmp/external/fastjet/plugins/CDFCones/MidPointAlgorithm.$(ObjSuf) \
    11601234        tmp/external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(ObjSuf) \
    11611235        tmp/external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(ObjSuf) \
    1162         tmp/external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(ObjSuf) \
     1236        tmp/external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(ObjSuf) \
     1237        tmp/external/fastjet/plugins/GridJet/GridJetPlugin.$(ObjSuf) \
     1238        tmp/external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(ObjSuf) \
     1239        tmp/external/fastjet/plugins/SISCone/split_merge.$(ObjSuf) \
     1240        tmp/external/fastjet/plugins/SISCone/hash.$(ObjSuf) \
     1241        tmp/external/fastjet/plugins/SISCone/siscone_error.$(ObjSuf) \
     1242        tmp/external/fastjet/plugins/SISCone/ranlux.$(ObjSuf) \
     1243        tmp/external/fastjet/plugins/SISCone/SISConePlugin.$(ObjSuf) \
     1244        tmp/external/fastjet/plugins/SISCone/vicinity.$(ObjSuf) \
     1245        tmp/external/fastjet/plugins/SISCone/area.$(ObjSuf) \
     1246        tmp/external/fastjet/plugins/SISCone/reference.$(ObjSuf) \
     1247        tmp/external/fastjet/plugins/SISCone/quadtree.$(ObjSuf) \
     1248        tmp/external/fastjet/plugins/SISCone/siscone.$(ObjSuf) \
     1249        tmp/external/fastjet/plugins/SISCone/momentum.$(ObjSuf) \
     1250        tmp/external/fastjet/plugins/SISCone/protocones.$(ObjSuf) \
    11631251        tmp/external/fastjet/plugins/SISCone/geom_2d.$(ObjSuf) \
    1164         tmp/external/fastjet/plugins/SISCone/SISConePlugin.$(ObjSuf) \
    1165         tmp/external/fastjet/plugins/SISCone/siscone.$(ObjSuf) \
    1166         tmp/external/fastjet/plugins/SISCone/hash.$(ObjSuf) \
    1167         tmp/external/fastjet/plugins/SISCone/quadtree.$(ObjSuf) \
    1168         tmp/external/fastjet/plugins/SISCone/area.$(ObjSuf) \
    1169         tmp/external/fastjet/plugins/SISCone/momentum.$(ObjSuf) \
    1170         tmp/external/fastjet/plugins/SISCone/reference.$(ObjSuf) \
    1171         tmp/external/fastjet/plugins/SISCone/ranlux.$(ObjSuf) \
    1172         tmp/external/fastjet/plugins/SISCone/protocones.$(ObjSuf) \
    1173         tmp/external/fastjet/plugins/SISCone/split_merge.$(ObjSuf) \
    1174         tmp/external/fastjet/plugins/SISCone/vicinity.$(ObjSuf) \
    1175         tmp/external/fastjet/plugins/SISCone/siscone_error.$(ObjSuf) \
    1176         tmp/external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(ObjSuf) \
    1177         tmp/external/fastjet/plugins/GridJet/GridJetPlugin.$(ObjSuf) \
     1252        tmp/external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(ObjSuf) \
     1253        tmp/external/fastjet/plugins/ATLASCone/Jet.$(ObjSuf) \
     1254        tmp/external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(ObjSuf) \
     1255        tmp/external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(ObjSuf) \
     1256        tmp/external/fastjet/plugins/EECambridge/EECambridgePlugin.$(ObjSuf) \
     1257        tmp/external/fastjet/plugins/TrackJet/TrackJetPlugin.$(ObjSuf) \
    11781258        tmp/external/fastjet/plugins/Jade/JadePlugin.$(ObjSuf) \
    1179         tmp/external/fastjet/plugins/EECambridge/EECambridgePlugin.$(ObjSuf) \
     1259        tmp/external/fastjet/plugins/NestedDefs/NestedDefsPlugin.$(ObjSuf) \
     1260        tmp/external/fastjet/contribs/SoftKiller/SoftKiller.$(ObjSuf) \
     1261        tmp/external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(ObjSuf) \
    11801262        tmp/external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(ObjSuf) \
    1181         tmp/external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(ObjSuf) \
    1182         tmp/external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(ObjSuf) \
    1183         tmp/external/fastjet/contribs/Nsubjettiness/Njettiness.$(ObjSuf) \
    11841263        tmp/external/fastjet/contribs/Nsubjettiness/AxesFinder.$(ObjSuf) \
    11851264        tmp/external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.$(ObjSuf) \
     1265        tmp/external/fastjet/contribs/Nsubjettiness/Njettiness.$(ObjSuf) \
     1266        tmp/external/fastjet/contribs/Nsubjettiness/NjettinessDefinition.$(ObjSuf) \
     1267        tmp/external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(ObjSuf) \
     1268        tmp/external/Hector/H_OpticalElement.$(ObjSuf) \
     1269        tmp/external/Hector/H_CircularAperture.$(ObjSuf) \
     1270        tmp/external/Hector/H_TransportMatrices.$(ObjSuf) \
     1271        tmp/external/Hector/H_SectorDipole.$(ObjSuf) \
     1272        tmp/external/Hector/H_Dipole.$(ObjSuf) \
     1273        tmp/external/Hector/H_AbstractBeamLine.$(ObjSuf) \
     1274        tmp/external/Hector/H_BeamLine.$(ObjSuf) \
     1275        tmp/external/Hector/H_RectEllipticAperture.$(ObjSuf) \
     1276        tmp/external/Hector/H_HorizontalKicker.$(ObjSuf) \
     1277        tmp/external/Hector/H_Kicker.$(ObjSuf) \
     1278        tmp/external/Hector/H_BeamLineParser.$(ObjSuf) \
     1279        tmp/external/Hector/H_BeamParticle.$(ObjSuf) \
     1280        tmp/external/Hector/H_RectangularDipole.$(ObjSuf) \
     1281        tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf) \
    11861282        tmp/external/Hector/H_Marker.$(ObjSuf) \
     1283        tmp/external/Hector/H_Beam.$(ObjSuf) \
     1284        tmp/external/Hector/H_EllipticAperture.$(ObjSuf) \
    11871285        tmp/external/Hector/H_VerticalKicker.$(ObjSuf) \
    1188         tmp/external/Hector/H_BeamLine.$(ObjSuf) \
     1286        tmp/external/Hector/H_HorizontalQuadrupole.$(ObjSuf) \
     1287        tmp/external/Hector/H_Parameters.$(ObjSuf) \
     1288        tmp/external/Hector/H_Drift.$(ObjSuf) \
     1289        tmp/external/Hector/H_RomanPot.$(ObjSuf) \
    11891290        tmp/external/Hector/H_RecRPObject.$(ObjSuf) \
    1190         tmp/external/Hector/H_Quadrupole.$(ObjSuf) \
    1191         tmp/external/Hector/H_RectangularDipole.$(ObjSuf) \
    1192         tmp/external/Hector/H_CircularAperture.$(ObjSuf) \
    1193         tmp/external/Hector/H_HorizontalQuadrupole.$(ObjSuf) \
    1194         tmp/external/Hector/H_HorizontalKicker.$(ObjSuf) \
    1195         tmp/external/Hector/H_BeamLineParser.$(ObjSuf) \
    1196         tmp/external/Hector/H_RectEllipticAperture.$(ObjSuf) \
    11971291        tmp/external/Hector/H_RectangularCollimator.$(ObjSuf) \
    1198         tmp/external/Hector/H_SectorDipole.$(ObjSuf) \
     1292        tmp/external/Hector/H_Aperture.$(ObjSuf) \
    11991293        tmp/external/Hector/H_RectangularAperture.$(ObjSuf) \
    1200         tmp/external/Hector/H_RomanPot.$(ObjSuf) \
    1201         tmp/external/Hector/H_Aperture.$(ObjSuf) \
    1202         tmp/external/Hector/H_BeamParticle.$(ObjSuf) \
    1203         tmp/external/Hector/H_Beam.$(ObjSuf) \
    1204         tmp/external/Hector/H_Drift.$(ObjSuf) \
    1205         tmp/external/Hector/H_Dipole.$(ObjSuf) \
    1206         tmp/external/Hector/H_OpticalElement.$(ObjSuf) \
    1207         tmp/external/Hector/H_TransportMatrices.$(ObjSuf) \
    1208         tmp/external/Hector/H_Parameters.$(ObjSuf) \
    1209         tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf) \
    1210         tmp/external/Hector/H_AbstractBeamLine.$(ObjSuf) \
    1211         tmp/external/Hector/H_EllipticAperture.$(ObjSuf) \
    1212         tmp/external/Hector/H_Kicker.$(ObjSuf)
     1294        tmp/external/Hector/H_Quadrupole.$(ObjSuf)
    12131295
    12141296ifeq ($(HAS_PYTHIA8),true)
     
    12171299endif
    12181300
     1301tmp/display/DelphesCaloData.$(ObjSuf): \
     1302        display/DelphesCaloData.$(SrcSuf) \
     1303        display/DelphesCaloData.h
    12191304tmp/display/DelphesDisplay.$(ObjSuf): \
    12201305        display/DelphesDisplay.$(SrcSuf) \
     
    12271312        display/DelphesBranchElement.h \
    12281313        classes/DelphesClasses.h
     1314tmp/display/Delphes3DGeometry.$(ObjSuf): \
     1315        display/Delphes3DGeometry.$(SrcSuf) \
     1316        display/Delphes3DGeometry.h \
     1317        external/ExRootAnalysis/ExRootConfReader.h \
     1318        classes/DelphesClasses.h
     1319tmp/display/DelphesHtmlSummary.$(ObjSuf): \
     1320        display/DelphesHtmlSummary.$(SrcSuf) \
     1321        display/DelphesHtmlSummary.h
    12291322tmp/display/DelphesEventDisplay.$(ObjSuf): \
    12301323        display/DelphesEventDisplay.$(SrcSuf) \
     
    12361329        display/DelphesEventDisplay.h \
    12371330        classes/DelphesClasses.h
    1238 tmp/display/DelphesHtmlSummary.$(ObjSuf): \
    1239         display/DelphesHtmlSummary.$(SrcSuf) \
    1240         display/DelphesHtmlSummary.h
    1241 tmp/display/Delphes3DGeometry.$(ObjSuf): \
    1242         display/Delphes3DGeometry.$(SrcSuf) \
    1243         display/Delphes3DGeometry.h \
    1244         external/ExRootAnalysis/ExRootConfReader.h \
    1245         classes/DelphesClasses.h
    1246 tmp/display/DelphesCaloData.$(ObjSuf): \
    1247         display/DelphesCaloData.$(SrcSuf) \
    1248         display/DelphesCaloData.h
    12491331DISPLAY_OBJ +=  \
     1332        tmp/display/DelphesCaloData.$(ObjSuf) \
    12501333        tmp/display/DelphesDisplay.$(ObjSuf) \
    12511334        tmp/display/DelphesPlotSummary.$(ObjSuf) \
    12521335        tmp/display/DelphesBranchElement.$(ObjSuf) \
    1253         tmp/display/DelphesEventDisplay.$(ObjSuf) \
     1336        tmp/display/Delphes3DGeometry.$(ObjSuf) \
    12541337        tmp/display/DelphesHtmlSummary.$(ObjSuf) \
    1255         tmp/display/Delphes3DGeometry.$(ObjSuf) \
    1256         tmp/display/DelphesCaloData.$(ObjSuf)
     1338        tmp/display/DelphesEventDisplay.$(ObjSuf)
    12571339
    12581340ifeq ($(HAS_PYTHIA8),true)
     
    12611343endif
    12621344
    1263 tmp/external/tcl/tclObj.$(ObjSuf): \
    1264         external/tcl/tclObj.c
    1265 tmp/external/tcl/tclUtil.$(ObjSuf): \
    1266         external/tcl/tclUtil.c
    1267 tmp/external/tcl/tclAsync.$(ObjSuf): \
    1268         external/tcl/tclAsync.c
    1269 tmp/external/tcl/tclPosixStr.$(ObjSuf): \
    1270         external/tcl/tclPosixStr.c
    1271 tmp/external/tcl/tclCompile.$(ObjSuf): \
    1272         external/tcl/tclCompile.c
    1273 tmp/external/tcl/tclHistory.$(ObjSuf): \
    1274         external/tcl/tclHistory.c
    1275 tmp/external/tcl/tclResolve.$(ObjSuf): \
    1276         external/tcl/tclResolve.c
    1277 tmp/external/tcl/tclParse.$(ObjSuf): \
    1278         external/tcl/tclParse.c
    1279 tmp/external/tcl/tclVar.$(ObjSuf): \
    1280         external/tcl/tclVar.c
    1281 tmp/external/tcl/tclIndexObj.$(ObjSuf): \
    1282         external/tcl/tclIndexObj.c
    1283 tmp/external/tcl/tclCkalloc.$(ObjSuf): \
    1284         external/tcl/tclCkalloc.c
    12851345tmp/external/tcl/tclListObj.$(ObjSuf): \
    12861346        external/tcl/tclListObj.c
    12871347tmp/external/tcl/tclHash.$(ObjSuf): \
    12881348        external/tcl/tclHash.c
    1289 tmp/external/tcl/tclCmdIL.$(ObjSuf): \
    1290         external/tcl/tclCmdIL.c
    1291 tmp/external/tcl/tclStringObj.$(ObjSuf): \
    1292         external/tcl/tclStringObj.c
    1293 tmp/external/tcl/tclAlloc.$(ObjSuf): \
    1294         external/tcl/tclAlloc.c
     1349tmp/external/tcl/tclResolve.$(ObjSuf): \
     1350        external/tcl/tclResolve.c
     1351tmp/external/tcl/tclHistory.$(ObjSuf): \
     1352        external/tcl/tclHistory.c
    12951353tmp/external/tcl/tclCompExpr.$(ObjSuf): \
    12961354        external/tcl/tclCompExpr.c
    1297 tmp/external/tcl/tclLink.$(ObjSuf): \
    1298         external/tcl/tclLink.c
    1299 tmp/external/tcl/tclCmdAH.$(ObjSuf): \
    1300         external/tcl/tclCmdAH.c
    1301 tmp/external/tcl/panic.$(ObjSuf): \
    1302         external/tcl/panic.c
    1303 tmp/external/tcl/tclBasic.$(ObjSuf): \
    1304         external/tcl/tclBasic.c
     1355tmp/external/tcl/tclAsync.$(ObjSuf): \
     1356        external/tcl/tclAsync.c
     1357tmp/external/tcl/tclNamesp.$(ObjSuf): \
     1358        external/tcl/tclNamesp.c
     1359tmp/external/tcl/tclVar.$(ObjSuf): \
     1360        external/tcl/tclVar.c
    13051361tmp/external/tcl/tclPreserve.$(ObjSuf): \
    13061362        external/tcl/tclPreserve.c
    13071363tmp/external/tcl/tclGet.$(ObjSuf): \
    13081364        external/tcl/tclGet.c
    1309 tmp/external/tcl/tclNamesp.$(ObjSuf): \
    1310         external/tcl/tclNamesp.c
     1365tmp/external/tcl/tclStringObj.$(ObjSuf): \
     1366        external/tcl/tclStringObj.c
     1367tmp/external/tcl/tclBasic.$(ObjSuf): \
     1368        external/tcl/tclBasic.c
     1369tmp/external/tcl/tclUtil.$(ObjSuf): \
     1370        external/tcl/tclUtil.c
     1371tmp/external/tcl/tclObj.$(ObjSuf): \
     1372        external/tcl/tclObj.c
     1373tmp/external/tcl/tclPosixStr.$(ObjSuf): \
     1374        external/tcl/tclPosixStr.c
     1375tmp/external/tcl/tclCmdMZ.$(ObjSuf): \
     1376        external/tcl/tclCmdMZ.c
     1377tmp/external/tcl/tclIndexObj.$(ObjSuf): \
     1378        external/tcl/tclIndexObj.c
     1379tmp/external/tcl/tclCmdIL.$(ObjSuf): \
     1380        external/tcl/tclCmdIL.c
     1381tmp/external/tcl/tclCmdAH.$(ObjSuf): \
     1382        external/tcl/tclCmdAH.c
     1383tmp/external/tcl/tclLink.$(ObjSuf): \
     1384        external/tcl/tclLink.c
    13111385tmp/external/tcl/tclProc.$(ObjSuf): \
    13121386        external/tcl/tclProc.c
     1387tmp/external/tcl/tclCkalloc.$(ObjSuf): \
     1388        external/tcl/tclCkalloc.c
     1389tmp/external/tcl/tclAlloc.$(ObjSuf): \
     1390        external/tcl/tclAlloc.c
     1391tmp/external/tcl/tclCompile.$(ObjSuf): \
     1392        external/tcl/tclCompile.c
     1393tmp/external/tcl/panic.$(ObjSuf): \
     1394        external/tcl/panic.c
     1395tmp/external/tcl/tclParse.$(ObjSuf): \
     1396        external/tcl/tclParse.c
    13131397tmp/external/tcl/tclExecute.$(ObjSuf): \
    13141398        external/tcl/tclExecute.c
    1315 tmp/external/tcl/tclCmdMZ.$(ObjSuf): \
    1316         external/tcl/tclCmdMZ.c
    13171399TCL_OBJ +=  \
    1318         tmp/external/tcl/tclObj.$(ObjSuf) \
    1319         tmp/external/tcl/tclUtil.$(ObjSuf) \
    1320         tmp/external/tcl/tclAsync.$(ObjSuf) \
    1321         tmp/external/tcl/tclPosixStr.$(ObjSuf) \
    1322         tmp/external/tcl/tclCompile.$(ObjSuf) \
    1323         tmp/external/tcl/tclHistory.$(ObjSuf) \
    1324         tmp/external/tcl/tclResolve.$(ObjSuf) \
    1325         tmp/external/tcl/tclParse.$(ObjSuf) \
    1326         tmp/external/tcl/tclVar.$(ObjSuf) \
    1327         tmp/external/tcl/tclIndexObj.$(ObjSuf) \
    1328         tmp/external/tcl/tclCkalloc.$(ObjSuf) \
    13291400        tmp/external/tcl/tclListObj.$(ObjSuf) \
    13301401        tmp/external/tcl/tclHash.$(ObjSuf) \
    1331         tmp/external/tcl/tclCmdIL.$(ObjSuf) \
    1332         tmp/external/tcl/tclStringObj.$(ObjSuf) \
    1333         tmp/external/tcl/tclAlloc.$(ObjSuf) \
     1402        tmp/external/tcl/tclResolve.$(ObjSuf) \
     1403        tmp/external/tcl/tclHistory.$(ObjSuf) \
    13341404        tmp/external/tcl/tclCompExpr.$(ObjSuf) \
    1335         tmp/external/tcl/tclLink.$(ObjSuf) \
    1336         tmp/external/tcl/tclCmdAH.$(ObjSuf) \
    1337         tmp/external/tcl/panic.$(ObjSuf) \
    1338         tmp/external/tcl/tclBasic.$(ObjSuf) \
     1405        tmp/external/tcl/tclAsync.$(ObjSuf) \
     1406        tmp/external/tcl/tclNamesp.$(ObjSuf) \
     1407        tmp/external/tcl/tclVar.$(ObjSuf) \
    13391408        tmp/external/tcl/tclPreserve.$(ObjSuf) \
    13401409        tmp/external/tcl/tclGet.$(ObjSuf) \
    1341         tmp/external/tcl/tclNamesp.$(ObjSuf) \
     1410        tmp/external/tcl/tclStringObj.$(ObjSuf) \
     1411        tmp/external/tcl/tclBasic.$(ObjSuf) \
     1412        tmp/external/tcl/tclUtil.$(ObjSuf) \
     1413        tmp/external/tcl/tclObj.$(ObjSuf) \
     1414        tmp/external/tcl/tclPosixStr.$(ObjSuf) \
     1415        tmp/external/tcl/tclCmdMZ.$(ObjSuf) \
     1416        tmp/external/tcl/tclIndexObj.$(ObjSuf) \
     1417        tmp/external/tcl/tclCmdIL.$(ObjSuf) \
     1418        tmp/external/tcl/tclCmdAH.$(ObjSuf) \
     1419        tmp/external/tcl/tclLink.$(ObjSuf) \
    13421420        tmp/external/tcl/tclProc.$(ObjSuf) \
    1343         tmp/external/tcl/tclExecute.$(ObjSuf) \
    1344         tmp/external/tcl/tclCmdMZ.$(ObjSuf)
     1421        tmp/external/tcl/tclCkalloc.$(ObjSuf) \
     1422        tmp/external/tcl/tclAlloc.$(ObjSuf) \
     1423        tmp/external/tcl/tclCompile.$(ObjSuf) \
     1424        tmp/external/tcl/panic.$(ObjSuf) \
     1425        tmp/external/tcl/tclParse.$(ObjSuf) \
     1426        tmp/external/tcl/tclExecute.$(ObjSuf)
    13451427
    13461428external/fastjet/internal/ClosestPair2D.hh: \
     
    13601442        @touch $@
    13611443
     1444modules/FastJetGridMedianEstimator.h: \
     1445        classes/DelphesModule.h
     1446        @touch $@
     1447
    13621448external/fastjet/internal/MinHeap.hh: \
    13631449        external/fastjet/internal/base.hh
     
    13851471external/fastjet/JetDefinition.hh: \
    13861472        external/fastjet/internal/numconsts.hh \
    1387         external/fastjet/PseudoJet.hh
     1473        external/fastjet/PseudoJet.hh \
     1474        external/fastjet/ClusterSequence.hh
    13881475        @touch $@
    13891476
     
    14311518        @touch $@
    14321519
     1520external/fastjet/internal/LazyTiling25.hh: \
     1521        external/fastjet/internal/MinHeap.hh \
     1522        external/fastjet/ClusterSequence.hh \
     1523        external/fastjet/internal/LazyTiling9Alt.hh \
     1524        external/fastjet/internal/LazyTiling9.hh
     1525        @touch $@
     1526
    14331527external/fastjet/Error.hh: \
    1434         external/fastjet/internal/base.hh
     1528        external/fastjet/internal/base.hh \
     1529        external/fastjet/config.h \
     1530        external/fastjet/LimitedWarning.hh
    14351531        @touch $@
    14361532
    14371533external/fastjet/contribs/Nsubjettiness/Njettiness.hh: \
    1438         external/fastjet/PseudoJet.hh
     1534        external/fastjet/PseudoJet.hh \
     1535        external/fastjet/SharedPtr.hh
     1536        @touch $@
     1537
     1538external/fastjet/internal/TilingExtent.hh: \
     1539        external/fastjet/ClusterSequence.hh
    14391540        @touch $@
    14401541
     
    14451546modules/TrackPileUpSubtractor.h: \
    14461547        classes/DelphesModule.h
    1447         @touch $@
    1448 
    1449 external/fastjet/tools/GridMedianBackgroundEstimator.hh: \
    1450         external/fastjet/tools/BackgroundEstimatorBase.hh
    14511548        @touch $@
    14521549
     
    14541551        external/fastjet/internal/Triangulation.hh \
    14551552        external/fastjet/internal/DynamicNearestNeighbours.hh
     1553        @touch $@
     1554
     1555external/fastjet/tools/GridMedianBackgroundEstimator.hh: \
     1556        external/fastjet/tools/BackgroundEstimatorBase.hh \
     1557        external/fastjet/RectangularGrid.hh
    14561558        @touch $@
    14571559
     
    14711573        @touch $@
    14721574
     1575external/fastjet/internal/LazyTiling9Alt.hh: \
     1576        external/fastjet/internal/MinHeap.hh \
     1577        external/fastjet/ClusterSequence.hh
     1578        @touch $@
     1579
     1580external/fastjet/RectangularGrid.hh: \
     1581        external/fastjet/PseudoJet.hh \
     1582        external/fastjet/Selector.hh
     1583        @touch $@
     1584
    14731585modules/PileUpMerger.h: \
    14741586        classes/DelphesModule.h
     
    14801592
    14811593external/fastjet/internal/DynamicNearestNeighbours.hh: \
    1482         external/fastjet/internal/numconsts.hh
     1594        external/fastjet/internal/numconsts.hh \
     1595        external/fastjet/Error.hh
    14831596        @touch $@
    14841597
     
    15061619        @touch $@
    15071620
     1621external/fastjet/internal/LazyTiling9.hh: \
     1622        external/fastjet/internal/MinHeap.hh \
     1623        external/fastjet/ClusterSequence.hh \
     1624        external/fastjet/internal/LazyTiling9Alt.hh
     1625        @touch $@
     1626
    15081627modules/PileUpJetID.h: \
    15091628        classes/DelphesModule.h
     
    15691688        @touch $@
    15701689
     1690modules/PdgCodeFilter.h: \
     1691        classes/DelphesModule.h
     1692        @touch $@
     1693
    15711694external/fastjet/plugins/CDFCones/fastjet/CDFMidPointPlugin.hh: \
    15721695        external/fastjet/JetDefinition.hh
     
    16381761
    16391762external/fastjet/tools/Subtractor.hh: \
     1763        external/fastjet/internal/base.hh \
    16401764        external/fastjet/tools/Transformer.hh \
    16411765        external/fastjet/tools/BackgroundEstimatorBase.hh
     1766        @touch $@
     1767
     1768external/fastjet/internal/LazyTiling9SeparateGhosts.hh: \
     1769        external/fastjet/internal/MinHeap.hh \
     1770        external/fastjet/ClusterSequence.hh \
     1771        external/fastjet/internal/LazyTiling9Alt.hh
    16421772        @touch $@
    16431773
     
    16741804        @touch $@
    16751805
     1806external/fastjet/LimitedWarning.hh: \
     1807        external/fastjet/internal/base.hh
     1808        @touch $@
     1809
    16761810external/fastjet/config.h: \
    16771811        external/fastjet/config_win.h
    1678         @touch $@
    1679 
    1680 external/fastjet/LimitedWarning.hh: \
    1681         external/fastjet/internal/base.hh
    16821812        @touch $@
    16831813
  • doc/update_fastjet.sh

    rf6b6ee7 re7e90df  
    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/Example1.C

    rf6b6ee7 re7e90df  
    11/*
     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
    26root -l examples/Example1.C'("delphes_output.root")'
    37*/
     
    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/Example2.C

    rf6b6ee7 re7e90df  
    11/*
     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
    25root -l examples/Example2.C'("delphes_output.root")'
    36*/
  • examples/Example3.C

    rf6b6ee7 re7e90df  
    11/*
     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
    25root -l examples/Example3.C'("delphes_output.root")'
    36*/
     
    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/delphes_card_ATLAS.tcl

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
     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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    1 3.0.6
     13.1.0
  • external/fastjet/Voronoi.cc

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    1 1.1.0-beta4
     12.1.0
  • external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.cc

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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

    rf6b6ee7 re7e90df  
    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/Calorimeter.cc

    rf6b6ee7 re7e90df  
    153153  }
    154154*/
     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 
    155164  // read resolution formulas
    156165  fECalResolutionFormula->Compile(GetString("ECalResolutionFormula", "0"));
     
    432441
    433442  if(!fTower) return;
     443//  cout<<"----------------------"<<endl;
     444//  cout<<"Finalize Tower"<<endl;
     445//  cout<<""<<endl;
     446
    434447
    435448  ecalSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, fTowerECalEnergy);
     
    448461  hcalEnergy = LogNormal(fTowerHCalEnergy, hcalSigma);
    449462  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;
    450470
    451471  energy = ecalEnergy + hcalEnergy;
     
    471491  fTower->Edges[3] = fTowerEdges[3];
    472492
    473 
    474   // fill calorimeter towers
    475   if(energy > 0.0)
     493  if( energy > 0.0 )
    476494  {
    477495    if(fTowerPhotonHits > 0 && fTowerTrackHits == 0)
     
    493511
    494512  ecalEnergy -= fTrackECalEnergy;
    495   if(ecalEnergy < 0.0) ecalEnergy = 0.0;
     513  if(ecalEnergy < fEcalEnergyMin || ecalEnergy < fEcalSigmaMin*fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, ecalEnergy)) ecalEnergy = 0.0;
    496514
    497515  hcalEnergy -= fTrackHCalEnergy;
    498   if(hcalEnergy < 0.0) hcalEnergy = 0.0;
     516  if(hcalEnergy < fHcalEnergyMin || hcalEnergy < fHcalSigmaMin*fHCalResolutionFormula->Eval(0.0, fTowerEta, 0.0, hcalEnergy)) hcalEnergy = 0.0;
    499517
    500518  energy = ecalEnergy + hcalEnergy;
    501519
    502  
    503   // save ECAL and/or HCAL energy excess as an energy flow tower
    504520  if(ecalEnergy > 0.0)
    505521  {
     
    515531    fEFlowPhotonOutputArray->Add(tower);
    516532  }
    517 
    518533  if(hcalEnergy > 0.0)
    519534  {
  • modules/Calorimeter.h

    rf6b6ee7 re7e90df  
    7272  Int_t fTowerTrackHits, fTowerPhotonHits;
    7373
     74  Double_t fEcalEnergyMin;
     75  Double_t fHcalEnergyMin;
     76 
     77  Double_t fEcalSigmaMin;
     78  Double_t fHcalSigmaMin;
     79
    7480  TFractionMap fFractionMap; //!
    7581  TBinMap fBinMap; //!
  • modules/FastJetFinder.cc

    rf6b6ee7 re7e90df  
    241241  Candidate *candidate, *constituent;
    242242  TLorentzVector momentum;
     243 
     244  TLorentzVector constmomentum;
     245 
    243246  Double_t deta, dphi, detaMax, dphiMax;
    244247  Double_t time, weightTime, avTime;
     
    304307  for(itOutputList = outputList.begin(); itOutputList != outputList.end(); ++itOutputList)
    305308  {
    306     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   
    307314    area.reset(0.0, 0.0, 0.0, 0.0);
    308315    if(fAreaDefinition) area = itOutputList->area_4vector();
     
    315322    inputList.clear();
    316323    inputList = sequence->constituents(*itOutputList);
     324
     325    constmomentum.SetPxPyPzE(0.0,0.0,0.0,0.0);;
    317326
    318327    for(itInputList = inputList.begin(); itInputList != inputList.end(); ++itInputList)
    319328    {
    320329      constituent = static_cast<Candidate*>(fInputArray->At(itInputList->user_index()));
     330
     331      constmomentum += constituent->Momentum;
    321332
    322333      deta = TMath::Abs(momentum.Eta() - constituent->Momentum.Eta());
  • modules/ModulesLinkDef.h

    rf6b6ee7 re7e90df  
    3333
    3434#include "modules/FastJetFinder.h"
     35#include "modules/FastJetGridMedianEstimator.h"
    3536#include "modules/ParticlePropagator.h"
    3637#include "modules/Efficiency.h"
     
    5657#include "modules/ConstituentFilter.h"
    5758#include "modules/StatusPidFilter.h"
     59#include "modules/PdgCodeFilter.h"
    5860#include "modules/Cloner.h"
    5961#include "modules/Weighter.h"
     
    7072
    7173#pragma link C++ class FastJetFinder+;
     74#pragma link C++ class FastJetGridMedianEstimator+;
    7275#pragma link C++ class ParticlePropagator+;
    7376#pragma link C++ class Efficiency+;
     
    9396#pragma link C++ class ConstituentFilter+;
    9497#pragma link C++ class StatusPidFilter+;
     98#pragma link C++ class PdgCodeFilter+;
    9599#pragma link C++ class Cloner+;
    96100#pragma link C++ class Weighter+;
  • modules/SimpleCalorimeter.cc

    rf6b6ee7 re7e90df  
    147147  }
    148148*/
     149
     150  // read min E value for towers to be saved
     151  fEnergyMin = GetDouble("TowerMinEnergy", 0.0);
     152  fSigmaMin  = GetDouble("TowerMinSignificance", 0.0);
     153 
    149154  // read resolution formulas
    150155  fResolutionFormula->Compile(GetString("ResolutionFormula", "0"));
     
    402407  time = (fTowerWeightTime < 1.0E-09 ) ? 0 : fTowerTime/fTowerWeightTime;
    403408
     409  sigma = fResolutionFormula->Eval(0.0, fTowerEta, 0.0, energy);
     410 
     411  energy = (energy < fEnergyMin || energy < fSigmaMin*sigma) ? 0 : energy;
     412 
    404413  eta = gRandom->Uniform(fTowerEdges[0], fTowerEdges[1]);
    405414  phi = gRandom->Uniform(fTowerEdges[2], fTowerEdges[3]);
     
    423432  // fill energy flow candidates
    424433  energy -= fTrackEnergy;
    425   if(energy < 0.0) energy = 0.0;
     434  if(energy < fEnergyMin || energy < fSigmaMin*fResolutionFormula->Eval(0.0, fTowerEta, 0.0, energy)) energy = 0.0;
    426435   
    427436  // save energy excess as an energy flow tower
  • modules/SimpleCalorimeter.h

    rf6b6ee7 re7e90df  
    7272  Int_t fTowerTrackHits, fTowerPhotonHits;
    7373
     74  Double_t fEnergyMin;
     75  Double_t fSigmaMin;
     76
    7477  TFractionMap fFractionMap; //!
    7578  TBinMap fBinMap; //!
Note: See TracChangeset for help on using the changeset viewer.