Changes in / [acf622f:2e8de36] in git
- Files:
-
- 10 added
- 44 deleted
- 203 edited
Legend:
- Unmodified
- Added
- Removed
-
CMakeLists.txt
racf622f r2e8de36 7 7 8 8 # Declare ROOT dependency 9 find_package(ROOT COMPONENTS EG Eve Ge om Gui GuiHtml GenVector Hist Physics Matrix Graf RIO Tree Gpad RGL MathCore)9 find_package(ROOT COMPONENTS EG Eve GenVector Hist Physics Matrix Graf RIO Tree Gpad RGL MathCore) 10 10 include(${ROOT_USE_FILE}) 11 11 -
Makefile
racf622f r2e8de36 17 17 CXXFLAGS += $(ROOTCFLAGS) -Wno-write-strings -D_FILE_OFFSET_BITS=64 -DDROP_CGAL -I. -Iexternal -Iexternal/tcl 18 18 DELPHES_LIBS = $(shell $(RC) --libs) -lEG $(SYSLIBS) 19 DISPLAY_LIBS = $(shell $(RC) --evelibs) -lGuiHtml$(SYSLIBS)19 DISPLAY_LIBS = $(shell $(RC) --evelibs) $(SYSLIBS) 20 20 21 21 ifneq ($(CMSSW_FWLITE_INCLUDE_PATH),) 22 22 HAS_CMSSW = true 23 23 CXXFLAGS += -std=c++0x -I$(subst :, -I,$(CMSSW_FWLITE_INCLUDE_PATH)) 24 OPT_LIBS += -L$(subst include,lib,$(subst :, -L,$(CMSSW_FWLITE_INCLUDE_PATH)))24 DELPHES_LIBS += -L$(subst include,lib,$(subst :, -L,$(CMSSW_FWLITE_INCLUDE_PATH))) 25 25 ifneq ($(CMSSW_RELEASE_BASE),) 26 26 CXXFLAGS += -I$(CMSSW_RELEASE_BASE)/src 27 27 endif 28 28 ifneq ($(LD_LIBRARY_PATH),) 29 OPT_LIBS += -L$(subst include,lib,$(subst :, -L,$(LD_LIBRARY_PATH)))30 endif 31 OPT_LIBS += -lGenVector -lFWCoreFWLite -lDataFormatsFWLite -lDataFormatsPatCandidates -lDataFormatsLuminosity -lSimDataFormatsGeneratorProducts -lCommonToolsUtils29 DELPHES_LIBS += -L$(subst include,lib,$(subst :, -L,$(LD_LIBRARY_PATH))) 30 endif 31 DELPHES_LIBS += -lGenVector -lFWCoreFWLite -lDataFormatsFWLite -lDataFormatsPatCandidates -lDataFormatsLuminosity -lSimDataFormatsGeneratorProducts -lCommonToolsUtils 32 32 endif 33 33 34 34 ifneq ($(PROMC),) 35 35 HAS_PROMC = true 36 CXXFLAGS += -I$(PROMC)/include -I$(PROMC)/src37 OPT_LIBS += -L$(PROMC)/lib -lpromc-lprotoc -lprotobuf -lprotobuf-lite -lcbook -lz36 CXXFLAGS += -I$(PROMC)/include 37 DELPHES_LIBS += -L$(PROMC)/lib -lprotoc -lprotobuf -lprotobuf-lite -lcbook -lz 38 38 endif 39 39 … … 41 41 HAS_PYTHIA8 = true 42 42 CXXFLAGS += -I$(PYTHIA8)/include 43 OPT_LIBS += -L$(PYTHIA8)/lib -lpythia8 -lLHAPDF -lgfortran -lz43 DELPHES_LIBS += -L$(PYTHIA8)/lib -lpythia8 -lLHAPDF -lgfortran -lz 44 44 else 45 45 ifneq ($(PYTHIA8DATA),) 46 46 HAS_PYTHIA8 = true 47 47 CXXFLAGS += -I$(PYTHIA8DATA)/../include 48 OPT_LIBS += -L$(PYTHIA8DATA)/../lib -lpythia8 -lLHAPDF -lgfortran -lz 49 endif 50 endif 51 52 DELPHES_LIBS += $(OPT_LIBS) 53 DISPLAY_LIBS += $(OPT_LIBS) 48 DELPHES_LIBS += -L$(PYTHIA8DATA)/../lib -lpythia8 -lLHAPDF -lgfortran -lz 49 endif 50 endif 54 51 55 52 ### … … 79 76 external/ExRootAnalysis/ExRootTreeWriter.h \ 80 77 external/ExRootAnalysis/ExRootTreeBranch.h \ 78 external/ExRootAnalysis/ExRootProgressBar.h 79 root2pileup$(ExeSuf): \ 80 tmp/converters/root2pileup.$(ObjSuf) 81 82 tmp/converters/root2pileup.$(ObjSuf): \ 83 converters/root2pileup.cpp \ 84 classes/DelphesClasses.h \ 85 classes/DelphesPileUpWriter.h \ 86 external/ExRootAnalysis/ExRootTreeReader.h \ 81 87 external/ExRootAnalysis/ExRootProgressBar.h 82 88 root2lhco$(ExeSuf): \ … … 124 130 external/ExRootAnalysis/ExRootTreeBranch.h \ 125 131 external/ExRootAnalysis/ExRootProgressBar.h 126 root2pileup$(ExeSuf): \127 tmp/converters/root2pileup.$(ObjSuf)128 129 tmp/converters/root2pileup.$(ObjSuf): \130 converters/root2pileup.cpp \131 classes/DelphesClasses.h \132 classes/DelphesPileUpWriter.h \133 external/ExRootAnalysis/ExRootTreeReader.h \134 external/ExRootAnalysis/ExRootProgressBar.h135 132 Example1$(ExeSuf): \ 136 133 tmp/examples/Example1.$(ObjSuf) … … 146 143 EXECUTABLE += \ 147 144 lhco2root$(ExeSuf) \ 145 root2pileup$(ExeSuf) \ 148 146 root2lhco$(ExeSuf) \ 149 147 stdhep2pileup$(ExeSuf) \ 150 148 hepmc2pileup$(ExeSuf) \ 151 149 pileup2root$(ExeSuf) \ 152 root2pileup$(ExeSuf) \153 150 Example1$(ExeSuf) 154 151 155 152 EXECUTABLE_OBJ += \ 156 153 tmp/converters/lhco2root.$(ObjSuf) \ 154 tmp/converters/root2pileup.$(ObjSuf) \ 157 155 tmp/converters/root2lhco.$(ObjSuf) \ 158 156 tmp/converters/stdhep2pileup.$(ObjSuf) \ 159 157 tmp/converters/hepmc2pileup.$(ObjSuf) \ 160 158 tmp/converters/pileup2root.$(ObjSuf) \ 161 tmp/converters/root2pileup.$(ObjSuf) \162 159 tmp/examples/Example1.$(ObjSuf) 163 160 … … 241 238 external/ExRootAnalysis/ExRootTreeWriter.h \ 242 239 external/ExRootAnalysis/ExRootTreeBranch.h \ 243 external/ExRootAnalysis/ExRootProgressBar.h 240 external/ExRootAnalysis/ExRootProgressBar.h \ 241 external/ProMC/ProMCBook.h 244 242 EXECUTABLE += \ 245 243 DelphesProMC$(ExeSuf) … … 247 245 EXECUTABLE_OBJ += \ 248 246 tmp/readers/DelphesProMC.$(ObjSuf) 247 248 tmp/external/ProMC/ProMCBook.$(ObjSuf): \ 249 external/ProMC/ProMCBook.$(SrcSuf) 250 tmp/external/ProMC/ProMC.pb.$(ObjSuf): \ 251 external/ProMC/ProMC.pb.$(SrcSuf) 252 tmp/external/ProMC/ProMCStat.pb.$(ObjSuf): \ 253 external/ProMC/ProMCStat.pb.$(SrcSuf) 254 tmp/external/ProMC/ProMCHeader.pb.$(ObjSuf): \ 255 external/ProMC/ProMCHeader.pb.$(SrcSuf) 256 tmp/external/ProMC/ProMCDescription.pb.$(ObjSuf): \ 257 external/ProMC/ProMCDescription.pb.$(SrcSuf) 258 DELPHES_OBJ += \ 259 tmp/external/ProMC/ProMCBook.$(ObjSuf) \ 260 tmp/external/ProMC/ProMC.pb.$(ObjSuf) \ 261 tmp/external/ProMC/ProMCStat.pb.$(ObjSuf) \ 262 tmp/external/ProMC/ProMCHeader.pb.$(ObjSuf) \ 263 tmp/external/ProMC/ProMCDescription.pb.$(ObjSuf) 264 265 ifeq ($(HAS_PYTHIA8),true) 266 DELPHES_OBJ += \ 267 268 endif 249 269 250 270 endif … … 297 317 modules/ModulesLinkDef.h \ 298 318 modules/Delphes.h \ 299 modules/AngularSmearing.h \300 319 modules/FastJetFinder.h \ 301 modules/FastJetGridMedianEstimator.h \302 320 modules/ParticlePropagator.h \ 303 321 modules/Efficiency.h \ 304 modules/IdentificationMap.h \305 322 modules/EnergySmearing.h \ 306 323 modules/MomentumSmearing.h \ … … 324 341 modules/ConstituentFilter.h \ 325 342 modules/StatusPidFilter.h \ 326 modules/PdgCodeFilter.h \327 343 modules/Cloner.h \ 328 344 modules/Weighter.h \ … … 365 381 display/DisplayLinkDef.h \ 366 382 display/DelphesDisplay.h \ 367 display/DelphesCaloData.h \ 368 display/DelphesBranchElement.h \ 369 display/Delphes3DGeometry.h \ 370 display/DelphesEventDisplay.h \ 371 display/DelphesHtmlSummary.h \ 372 display/DelphesPlotSummary.h 383 display/DelphesCaloData.h 373 384 DisplayDict$(PcmSuf): \ 374 385 tmp/display/DisplayDict$(PcmSuf) \ … … 383 394 DisplayDict$(PcmSuf) 384 395 385 tmp/classes/DelphesFactory.$(ObjSuf): \ 386 classes/DelphesFactory.$(SrcSuf) \ 387 classes/DelphesFactory.h \ 388 classes/DelphesClasses.h \ 396 tmp/classes/DelphesHepMCReader.$(ObjSuf): \ 397 classes/DelphesHepMCReader.$(SrcSuf) \ 398 classes/DelphesHepMCReader.h \ 399 classes/DelphesClasses.h \ 400 classes/DelphesFactory.h \ 401 classes/DelphesStream.h \ 389 402 external/ExRootAnalysis/ExRootTreeBranch.h 390 403 tmp/classes/DelphesLHEFReader.$(ObjSuf): \ … … 395 408 classes/DelphesStream.h \ 396 409 external/ExRootAnalysis/ExRootTreeBranch.h 410 tmp/classes/DelphesTF2.$(ObjSuf): \ 411 classes/DelphesTF2.$(SrcSuf) \ 412 classes/DelphesTF2.h 413 tmp/classes/DelphesFactory.$(ObjSuf): \ 414 classes/DelphesFactory.$(SrcSuf) \ 415 classes/DelphesFactory.h \ 416 classes/DelphesClasses.h \ 417 external/ExRootAnalysis/ExRootTreeBranch.h 418 tmp/classes/DelphesFormula.$(ObjSuf): \ 419 classes/DelphesFormula.$(SrcSuf) \ 420 classes/DelphesFormula.h 421 tmp/classes/DelphesSTDHEPReader.$(ObjSuf): \ 422 classes/DelphesSTDHEPReader.$(SrcSuf) \ 423 classes/DelphesSTDHEPReader.h \ 424 classes/DelphesClasses.h \ 425 classes/DelphesFactory.h \ 426 external/ExRootAnalysis/ExRootTreeBranch.h 427 tmp/classes/DelphesStream.$(ObjSuf): \ 428 classes/DelphesStream.$(SrcSuf) \ 429 classes/DelphesStream.h 430 tmp/classes/DelphesPileUpWriter.$(ObjSuf): \ 431 classes/DelphesPileUpWriter.$(SrcSuf) \ 432 classes/DelphesPileUpWriter.h 397 433 tmp/classes/DelphesModule.$(ObjSuf): \ 398 434 classes/DelphesModule.$(SrcSuf) \ … … 403 439 external/ExRootAnalysis/ExRootTreeWriter.h \ 404 440 external/ExRootAnalysis/ExRootResult.h 405 tmp/classes/DelphesStream.$(ObjSuf): \406 classes/DelphesStream.$(SrcSuf) \407 classes/DelphesStream.h408 tmp/classes/DelphesHepMCReader.$(ObjSuf): \409 classes/DelphesHepMCReader.$(SrcSuf) \410 classes/DelphesHepMCReader.h \411 classes/DelphesClasses.h \412 classes/DelphesFactory.h \413 classes/DelphesStream.h \414 external/ExRootAnalysis/ExRootTreeBranch.h415 441 tmp/classes/DelphesClasses.$(ObjSuf): \ 416 442 classes/DelphesClasses.$(SrcSuf) \ … … 418 444 classes/DelphesFactory.h \ 419 445 classes/SortableObject.h 420 tmp/classes/DelphesFormula.$(ObjSuf): \421 classes/DelphesFormula.$(SrcSuf) \422 classes/DelphesFormula.h423 tmp/classes/DelphesPileUpWriter.$(ObjSuf): \424 classes/DelphesPileUpWriter.$(SrcSuf) \425 classes/DelphesPileUpWriter.h426 tmp/classes/DelphesTF2.$(ObjSuf): \427 classes/DelphesTF2.$(SrcSuf) \428 classes/DelphesTF2.h429 tmp/classes/DelphesSTDHEPReader.$(ObjSuf): \430 classes/DelphesSTDHEPReader.$(SrcSuf) \431 classes/DelphesSTDHEPReader.h \432 classes/DelphesClasses.h \433 classes/DelphesFactory.h \434 external/ExRootAnalysis/ExRootTreeBranch.h435 446 tmp/classes/DelphesPileUpReader.$(ObjSuf): \ 436 447 classes/DelphesPileUpReader.$(SrcSuf) \ 437 448 classes/DelphesPileUpReader.h 438 tmp/modules/Weighter.$(ObjSuf): \ 439 modules/Weighter.$(SrcSuf) \ 440 modules/Weighter.h \ 441 classes/DelphesClasses.h \ 442 classes/DelphesFactory.h \ 443 classes/DelphesFormula.h \ 444 external/ExRootAnalysis/ExRootResult.h \ 445 external/ExRootAnalysis/ExRootFilter.h \ 446 external/ExRootAnalysis/ExRootClassifier.h 447 tmp/modules/Hector.$(ObjSuf): \ 448 modules/Hector.$(SrcSuf) \ 449 modules/Hector.h \ 450 classes/DelphesClasses.h \ 451 classes/DelphesFactory.h \ 452 classes/DelphesFormula.h \ 453 external/ExRootAnalysis/ExRootResult.h \ 454 external/ExRootAnalysis/ExRootFilter.h \ 455 external/ExRootAnalysis/ExRootClassifier.h \ 456 external/Hector/H_BeamLine.h \ 457 external/Hector/H_RecRPObject.h \ 458 external/Hector/H_BeamParticle.h 459 tmp/modules/ConstituentFilter.$(ObjSuf): \ 460 modules/ConstituentFilter.$(SrcSuf) \ 461 modules/ConstituentFilter.h \ 462 classes/DelphesClasses.h \ 463 classes/DelphesFactory.h \ 464 classes/DelphesFormula.h \ 465 external/ExRootAnalysis/ExRootResult.h \ 466 external/ExRootAnalysis/ExRootFilter.h \ 467 external/ExRootAnalysis/ExRootClassifier.h 468 tmp/modules/JetPileUpSubtractor.$(ObjSuf): \ 469 modules/JetPileUpSubtractor.$(SrcSuf) \ 470 modules/JetPileUpSubtractor.h \ 471 classes/DelphesClasses.h \ 472 classes/DelphesFactory.h \ 473 classes/DelphesFormula.h \ 474 external/ExRootAnalysis/ExRootResult.h \ 475 external/ExRootAnalysis/ExRootFilter.h \ 476 external/ExRootAnalysis/ExRootClassifier.h 477 tmp/modules/TrackPileUpSubtractor.$(ObjSuf): \ 478 modules/TrackPileUpSubtractor.$(SrcSuf) \ 479 modules/TrackPileUpSubtractor.h \ 480 classes/DelphesClasses.h \ 481 classes/DelphesFactory.h \ 482 classes/DelphesFormula.h \ 483 external/ExRootAnalysis/ExRootResult.h \ 484 external/ExRootAnalysis/ExRootFilter.h \ 485 external/ExRootAnalysis/ExRootClassifier.h 486 tmp/modules/PileUpJetID.$(ObjSuf): \ 487 modules/PileUpJetID.$(SrcSuf) \ 488 modules/PileUpJetID.h \ 449 tmp/modules/SimpleCalorimeter.$(ObjSuf): \ 450 modules/SimpleCalorimeter.$(SrcSuf) \ 451 modules/SimpleCalorimeter.h \ 452 classes/DelphesClasses.h \ 453 classes/DelphesFactory.h \ 454 classes/DelphesFormula.h \ 455 external/ExRootAnalysis/ExRootResult.h \ 456 external/ExRootAnalysis/ExRootFilter.h \ 457 external/ExRootAnalysis/ExRootClassifier.h 458 tmp/modules/LeptonDressing.$(ObjSuf): \ 459 modules/LeptonDressing.$(SrcSuf) \ 460 modules/LeptonDressing.h \ 461 classes/DelphesClasses.h \ 462 classes/DelphesFactory.h \ 463 classes/DelphesFormula.h \ 464 external/ExRootAnalysis/ExRootResult.h \ 465 external/ExRootAnalysis/ExRootFilter.h \ 466 external/ExRootAnalysis/ExRootClassifier.h 467 tmp/modules/Efficiency.$(ObjSuf): \ 468 modules/Efficiency.$(SrcSuf) \ 469 modules/Efficiency.h \ 470 classes/DelphesClasses.h \ 471 classes/DelphesFactory.h \ 472 classes/DelphesFormula.h \ 473 external/ExRootAnalysis/ExRootResult.h \ 474 external/ExRootAnalysis/ExRootFilter.h \ 475 external/ExRootAnalysis/ExRootClassifier.h 476 tmp/modules/UniqueObjectFinder.$(ObjSuf): \ 477 modules/UniqueObjectFinder.$(SrcSuf) \ 478 modules/UniqueObjectFinder.h \ 489 479 classes/DelphesClasses.h \ 490 480 classes/DelphesFactory.h \ … … 511 501 external/ExRootAnalysis/ExRootFilter.h \ 512 502 external/ExRootAnalysis/ExRootClassifier.h 513 tmp/modules/EnergyScale.$(ObjSuf): \ 514 modules/EnergyScale.$(SrcSuf) \ 515 modules/EnergyScale.h \ 516 classes/DelphesClasses.h \ 517 classes/DelphesFactory.h \ 518 classes/DelphesFormula.h \ 519 external/ExRootAnalysis/ExRootResult.h \ 520 external/ExRootAnalysis/ExRootFilter.h \ 521 external/ExRootAnalysis/ExRootClassifier.h 522 tmp/modules/PileUpMergerPythia8.$(ObjSuf): \ 523 modules/PileUpMergerPythia8.$(SrcSuf) \ 524 modules/PileUpMergerPythia8.h \ 525 classes/DelphesClasses.h \ 526 classes/DelphesFactory.h \ 527 classes/DelphesFormula.h \ 528 classes/DelphesPileUpReader.h \ 529 external/ExRootAnalysis/ExRootResult.h \ 530 external/ExRootAnalysis/ExRootFilter.h \ 531 external/ExRootAnalysis/ExRootClassifier.h 532 tmp/modules/TimeSmearing.$(ObjSuf): \ 533 modules/TimeSmearing.$(SrcSuf) \ 534 modules/TimeSmearing.h \ 535 classes/DelphesClasses.h \ 536 classes/DelphesFactory.h \ 537 classes/DelphesFormula.h \ 538 external/ExRootAnalysis/ExRootResult.h \ 539 external/ExRootAnalysis/ExRootFilter.h \ 540 external/ExRootAnalysis/ExRootClassifier.h 541 tmp/modules/Calorimeter.$(ObjSuf): \ 542 modules/Calorimeter.$(SrcSuf) \ 543 modules/Calorimeter.h \ 544 classes/DelphesClasses.h \ 545 classes/DelphesFactory.h \ 546 classes/DelphesFormula.h \ 547 external/ExRootAnalysis/ExRootResult.h \ 548 external/ExRootAnalysis/ExRootFilter.h \ 549 external/ExRootAnalysis/ExRootClassifier.h 550 tmp/modules/UniqueObjectFinder.$(ObjSuf): \ 551 modules/UniqueObjectFinder.$(SrcSuf) \ 552 modules/UniqueObjectFinder.h \ 553 classes/DelphesClasses.h \ 554 classes/DelphesFactory.h \ 555 classes/DelphesFormula.h \ 556 external/ExRootAnalysis/ExRootResult.h \ 557 external/ExRootAnalysis/ExRootFilter.h \ 558 external/ExRootAnalysis/ExRootClassifier.h 559 tmp/modules/TrackCountingBTagging.$(ObjSuf): \ 560 modules/TrackCountingBTagging.$(SrcSuf) \ 561 modules/TrackCountingBTagging.h \ 562 classes/DelphesClasses.h \ 563 classes/DelphesFactory.h \ 564 classes/DelphesFormula.h 565 tmp/modules/StatusPidFilter.$(ObjSuf): \ 566 modules/StatusPidFilter.$(SrcSuf) \ 567 modules/StatusPidFilter.h \ 568 classes/DelphesClasses.h \ 569 classes/DelphesFactory.h \ 570 classes/DelphesFormula.h \ 571 external/ExRootAnalysis/ExRootResult.h \ 572 external/ExRootAnalysis/ExRootFilter.h \ 573 external/ExRootAnalysis/ExRootClassifier.h 574 tmp/modules/FastJetGridMedianEstimator.$(ObjSuf): \ 575 modules/FastJetGridMedianEstimator.$(SrcSuf) \ 576 modules/FastJetGridMedianEstimator.h \ 577 classes/DelphesClasses.h \ 578 classes/DelphesFactory.h \ 579 classes/DelphesFormula.h \ 580 external/ExRootAnalysis/ExRootResult.h \ 581 external/ExRootAnalysis/ExRootFilter.h \ 582 external/ExRootAnalysis/ExRootClassifier.h \ 583 external/fastjet/PseudoJet.hh \ 584 external/fastjet/JetDefinition.hh \ 585 external/fastjet/ClusterSequence.hh \ 586 external/fastjet/Selector.hh \ 587 external/fastjet/RectangularGrid.hh \ 588 external/fastjet/ClusterSequenceArea.hh \ 589 external/fastjet/tools/JetMedianBackgroundEstimator.hh \ 590 external/fastjet/tools/GridMedianBackgroundEstimator.hh \ 591 external/fastjet/plugins/SISCone/fastjet/SISConePlugin.hh \ 592 external/fastjet/plugins/CDFCones/fastjet/CDFMidPointPlugin.hh \ 593 external/fastjet/plugins/CDFCones/fastjet/CDFJetCluPlugin.hh \ 594 external/fastjet/contribs/Nsubjettiness/Nsubjettiness.hh \ 595 external/fastjet/contribs/Nsubjettiness/Njettiness.hh \ 596 external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.hh \ 597 external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.hh 598 tmp/modules/AngularSmearing.$(ObjSuf): \ 599 modules/AngularSmearing.$(SrcSuf) \ 600 modules/AngularSmearing.h \ 601 classes/DelphesClasses.h \ 602 classes/DelphesFactory.h \ 603 classes/DelphesFormula.h \ 604 external/ExRootAnalysis/ExRootResult.h \ 605 external/ExRootAnalysis/ExRootFilter.h \ 606 external/ExRootAnalysis/ExRootClassifier.h 607 tmp/modules/PileUpMerger.$(ObjSuf): \ 608 modules/PileUpMerger.$(SrcSuf) \ 609 modules/PileUpMerger.h \ 610 classes/DelphesClasses.h \ 611 classes/DelphesFactory.h \ 612 classes/DelphesTF2.h \ 613 classes/DelphesPileUpReader.h \ 614 external/ExRootAnalysis/ExRootResult.h \ 615 external/ExRootAnalysis/ExRootFilter.h \ 616 external/ExRootAnalysis/ExRootClassifier.h 617 tmp/modules/TreeWriter.$(ObjSuf): \ 618 modules/TreeWriter.$(SrcSuf) \ 619 modules/TreeWriter.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 external/ExRootAnalysis/ExRootTreeBranch.h 627 tmp/modules/SimpleCalorimeter.$(ObjSuf): \ 628 modules/SimpleCalorimeter.$(SrcSuf) \ 629 modules/SimpleCalorimeter.h \ 503 tmp/modules/EnergySmearing.$(ObjSuf): \ 504 modules/EnergySmearing.$(SrcSuf) \ 505 modules/EnergySmearing.h \ 630 506 classes/DelphesClasses.h \ 631 507 classes/DelphesFactory.h \ … … 656 532 external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.hh \ 657 533 external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.hh 534 tmp/modules/PileUpMergerPythia8.$(ObjSuf): \ 535 modules/PileUpMergerPythia8.$(SrcSuf) \ 536 modules/PileUpMergerPythia8.h \ 537 classes/DelphesClasses.h \ 538 classes/DelphesFactory.h \ 539 classes/DelphesFormula.h \ 540 classes/DelphesPileUpReader.h \ 541 external/ExRootAnalysis/ExRootResult.h \ 542 external/ExRootAnalysis/ExRootFilter.h \ 543 external/ExRootAnalysis/ExRootClassifier.h 544 tmp/modules/StatusPidFilter.$(ObjSuf): \ 545 modules/StatusPidFilter.$(SrcSuf) \ 546 modules/StatusPidFilter.h \ 547 classes/DelphesClasses.h \ 548 classes/DelphesFactory.h \ 549 classes/DelphesFormula.h \ 550 external/ExRootAnalysis/ExRootResult.h \ 551 external/ExRootAnalysis/ExRootFilter.h \ 552 external/ExRootAnalysis/ExRootClassifier.h 553 tmp/modules/ConstituentFilter.$(ObjSuf): \ 554 modules/ConstituentFilter.$(SrcSuf) \ 555 modules/ConstituentFilter.h \ 556 classes/DelphesClasses.h \ 557 classes/DelphesFactory.h \ 558 classes/DelphesFormula.h \ 559 external/ExRootAnalysis/ExRootResult.h \ 560 external/ExRootAnalysis/ExRootFilter.h \ 561 external/ExRootAnalysis/ExRootClassifier.h 562 tmp/modules/EnergyScale.$(ObjSuf): \ 563 modules/EnergyScale.$(SrcSuf) \ 564 modules/EnergyScale.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/TrackCountingBTagging.$(ObjSuf): \ 572 modules/TrackCountingBTagging.$(SrcSuf) \ 573 modules/TrackCountingBTagging.h \ 574 classes/DelphesClasses.h \ 575 classes/DelphesFactory.h \ 576 classes/DelphesFormula.h 577 tmp/modules/TauTagging.$(ObjSuf): \ 578 modules/TauTagging.$(SrcSuf) \ 579 modules/TauTagging.h \ 580 classes/DelphesClasses.h \ 581 classes/DelphesFactory.h \ 582 classes/DelphesFormula.h \ 583 external/ExRootAnalysis/ExRootResult.h \ 584 external/ExRootAnalysis/ExRootFilter.h \ 585 external/ExRootAnalysis/ExRootClassifier.h 586 tmp/modules/TimeSmearing.$(ObjSuf): \ 587 modules/TimeSmearing.$(SrcSuf) \ 588 modules/TimeSmearing.h \ 589 classes/DelphesClasses.h \ 590 classes/DelphesFactory.h \ 591 classes/DelphesFormula.h \ 592 external/ExRootAnalysis/ExRootResult.h \ 593 external/ExRootAnalysis/ExRootFilter.h \ 594 external/ExRootAnalysis/ExRootClassifier.h 595 tmp/modules/Merger.$(ObjSuf): \ 596 modules/Merger.$(SrcSuf) \ 597 modules/Merger.h \ 598 classes/DelphesClasses.h \ 599 classes/DelphesFactory.h \ 600 classes/DelphesFormula.h \ 601 external/ExRootAnalysis/ExRootResult.h \ 602 external/ExRootAnalysis/ExRootFilter.h \ 603 external/ExRootAnalysis/ExRootClassifier.h 604 tmp/modules/BTagging.$(ObjSuf): \ 605 modules/BTagging.$(SrcSuf) \ 606 modules/BTagging.h \ 607 classes/DelphesClasses.h \ 608 classes/DelphesFactory.h \ 609 classes/DelphesFormula.h \ 610 external/ExRootAnalysis/ExRootResult.h \ 611 external/ExRootAnalysis/ExRootFilter.h \ 612 external/ExRootAnalysis/ExRootClassifier.h 613 tmp/modules/TreeWriter.$(ObjSuf): \ 614 modules/TreeWriter.$(SrcSuf) \ 615 modules/TreeWriter.h \ 616 classes/DelphesClasses.h \ 617 classes/DelphesFactory.h \ 618 classes/DelphesFormula.h \ 619 external/ExRootAnalysis/ExRootResult.h \ 620 external/ExRootAnalysis/ExRootFilter.h \ 621 external/ExRootAnalysis/ExRootClassifier.h \ 622 external/ExRootAnalysis/ExRootTreeBranch.h 623 tmp/modules/Weighter.$(ObjSuf): \ 624 modules/Weighter.$(SrcSuf) \ 625 modules/Weighter.h \ 626 classes/DelphesClasses.h \ 627 classes/DelphesFactory.h \ 628 classes/DelphesFormula.h \ 629 external/ExRootAnalysis/ExRootResult.h \ 630 external/ExRootAnalysis/ExRootFilter.h \ 631 external/ExRootAnalysis/ExRootClassifier.h 632 tmp/modules/PileUpJetID.$(ObjSuf): \ 633 modules/PileUpJetID.$(SrcSuf) \ 634 modules/PileUpJetID.h \ 635 classes/DelphesClasses.h \ 636 classes/DelphesFactory.h \ 637 classes/DelphesFormula.h \ 638 external/ExRootAnalysis/ExRootResult.h \ 639 external/ExRootAnalysis/ExRootFilter.h \ 640 external/ExRootAnalysis/ExRootClassifier.h 641 tmp/modules/Delphes.$(ObjSuf): \ 642 modules/Delphes.$(SrcSuf) \ 643 modules/Delphes.h \ 644 classes/DelphesClasses.h \ 645 classes/DelphesFactory.h \ 646 classes/DelphesFormula.h \ 647 external/ExRootAnalysis/ExRootResult.h \ 648 external/ExRootAnalysis/ExRootFilter.h \ 649 external/ExRootAnalysis/ExRootClassifier.h \ 650 external/ExRootAnalysis/ExRootConfReader.h \ 651 external/ExRootAnalysis/ExRootTreeWriter.h 652 tmp/modules/ImpactParameterSmearing.$(ObjSuf): \ 653 modules/ImpactParameterSmearing.$(SrcSuf) \ 654 modules/ImpactParameterSmearing.h \ 655 classes/DelphesClasses.h \ 656 classes/DelphesFactory.h \ 657 classes/DelphesFormula.h \ 658 external/ExRootAnalysis/ExRootResult.h \ 659 external/ExRootAnalysis/ExRootFilter.h \ 660 external/ExRootAnalysis/ExRootClassifier.h 661 tmp/modules/Calorimeter.$(ObjSuf): \ 662 modules/Calorimeter.$(SrcSuf) \ 663 modules/Calorimeter.h \ 664 classes/DelphesClasses.h \ 665 classes/DelphesFactory.h \ 666 classes/DelphesFormula.h \ 667 external/ExRootAnalysis/ExRootResult.h \ 668 external/ExRootAnalysis/ExRootFilter.h \ 669 external/ExRootAnalysis/ExRootClassifier.h 670 tmp/modules/Isolation.$(ObjSuf): \ 671 modules/Isolation.$(SrcSuf) \ 672 modules/Isolation.h \ 673 classes/DelphesClasses.h \ 674 classes/DelphesFactory.h \ 675 classes/DelphesFormula.h \ 676 external/ExRootAnalysis/ExRootResult.h \ 677 external/ExRootAnalysis/ExRootFilter.h \ 678 external/ExRootAnalysis/ExRootClassifier.h 679 tmp/modules/PileUpMerger.$(ObjSuf): \ 680 modules/PileUpMerger.$(SrcSuf) \ 681 modules/PileUpMerger.h \ 682 classes/DelphesClasses.h \ 683 classes/DelphesFactory.h \ 684 classes/DelphesTF2.h \ 685 classes/DelphesPileUpReader.h \ 686 external/ExRootAnalysis/ExRootResult.h \ 687 external/ExRootAnalysis/ExRootFilter.h \ 688 external/ExRootAnalysis/ExRootClassifier.h 689 tmp/modules/TrackPileUpSubtractor.$(ObjSuf): \ 690 modules/TrackPileUpSubtractor.$(SrcSuf) \ 691 modules/TrackPileUpSubtractor.h \ 692 classes/DelphesClasses.h \ 693 classes/DelphesFactory.h \ 694 classes/DelphesFormula.h \ 695 external/ExRootAnalysis/ExRootResult.h \ 696 external/ExRootAnalysis/ExRootFilter.h \ 697 external/ExRootAnalysis/ExRootClassifier.h 658 698 tmp/modules/Cloner.$(ObjSuf): \ 659 699 modules/Cloner.$(SrcSuf) \ … … 665 705 external/ExRootAnalysis/ExRootFilter.h \ 666 706 external/ExRootAnalysis/ExRootClassifier.h 667 tmp/modules/Efficiency.$(ObjSuf): \ 668 modules/Efficiency.$(SrcSuf) \ 669 modules/Efficiency.h \ 670 classes/DelphesClasses.h \ 671 classes/DelphesFactory.h \ 672 classes/DelphesFormula.h \ 673 external/ExRootAnalysis/ExRootResult.h \ 674 external/ExRootAnalysis/ExRootFilter.h \ 675 external/ExRootAnalysis/ExRootClassifier.h 676 tmp/modules/ImpactParameterSmearing.$(ObjSuf): \ 677 modules/ImpactParameterSmearing.$(SrcSuf) \ 678 modules/ImpactParameterSmearing.h \ 679 classes/DelphesClasses.h \ 680 classes/DelphesFactory.h \ 681 classes/DelphesFormula.h \ 682 external/ExRootAnalysis/ExRootResult.h \ 683 external/ExRootAnalysis/ExRootFilter.h \ 684 external/ExRootAnalysis/ExRootClassifier.h 685 tmp/modules/Merger.$(ObjSuf): \ 686 modules/Merger.$(SrcSuf) \ 687 modules/Merger.h \ 688 classes/DelphesClasses.h \ 689 classes/DelphesFactory.h \ 690 classes/DelphesFormula.h \ 691 external/ExRootAnalysis/ExRootResult.h \ 692 external/ExRootAnalysis/ExRootFilter.h \ 693 external/ExRootAnalysis/ExRootClassifier.h 694 tmp/modules/Isolation.$(ObjSuf): \ 695 modules/Isolation.$(SrcSuf) \ 696 modules/Isolation.h \ 697 classes/DelphesClasses.h \ 698 classes/DelphesFactory.h \ 699 classes/DelphesFormula.h \ 700 external/ExRootAnalysis/ExRootResult.h \ 701 external/ExRootAnalysis/ExRootFilter.h \ 702 external/ExRootAnalysis/ExRootClassifier.h 703 tmp/modules/Delphes.$(ObjSuf): \ 704 modules/Delphes.$(SrcSuf) \ 705 modules/Delphes.h \ 707 tmp/modules/JetPileUpSubtractor.$(ObjSuf): \ 708 modules/JetPileUpSubtractor.$(SrcSuf) \ 709 modules/JetPileUpSubtractor.h \ 710 classes/DelphesClasses.h \ 711 classes/DelphesFactory.h \ 712 classes/DelphesFormula.h \ 713 external/ExRootAnalysis/ExRootResult.h \ 714 external/ExRootAnalysis/ExRootFilter.h \ 715 external/ExRootAnalysis/ExRootClassifier.h 716 tmp/modules/Hector.$(ObjSuf): \ 717 modules/Hector.$(SrcSuf) \ 718 modules/Hector.h \ 706 719 classes/DelphesClasses.h \ 707 720 classes/DelphesFactory.h \ … … 710 723 external/ExRootAnalysis/ExRootFilter.h \ 711 724 external/ExRootAnalysis/ExRootClassifier.h \ 712 external/ExRootAnalysis/ExRootConfReader.h \ 713 external/ExRootAnalysis/ExRootTreeWriter.h 714 tmp/modules/IdentificationMap.$(ObjSuf): \ 715 modules/IdentificationMap.$(SrcSuf) \ 716 modules/IdentificationMap.h \ 717 classes/DelphesClasses.h \ 718 classes/DelphesFactory.h \ 719 classes/DelphesFormula.h \ 720 external/ExRootAnalysis/ExRootResult.h \ 721 external/ExRootAnalysis/ExRootFilter.h \ 722 external/ExRootAnalysis/ExRootClassifier.h 725 external/Hector/H_BeamLine.h \ 726 external/Hector/H_RecRPObject.h \ 727 external/Hector/H_BeamParticle.h 723 728 tmp/modules/MomentumSmearing.$(ObjSuf): \ 724 729 modules/MomentumSmearing.$(SrcSuf) \ … … 730 735 external/ExRootAnalysis/ExRootFilter.h \ 731 736 external/ExRootAnalysis/ExRootClassifier.h 732 tmp/modules/BTagging.$(ObjSuf): \ 733 modules/BTagging.$(SrcSuf) \ 734 modules/BTagging.h \ 735 classes/DelphesClasses.h \ 736 classes/DelphesFactory.h \ 737 classes/DelphesFormula.h \ 738 external/ExRootAnalysis/ExRootResult.h \ 739 external/ExRootAnalysis/ExRootFilter.h \ 740 external/ExRootAnalysis/ExRootClassifier.h 741 tmp/modules/PdgCodeFilter.$(ObjSuf): \ 742 modules/PdgCodeFilter.$(SrcSuf) \ 743 modules/PdgCodeFilter.h \ 744 classes/DelphesClasses.h \ 745 classes/DelphesFactory.h \ 746 classes/DelphesFormula.h \ 747 external/ExRootAnalysis/ExRootResult.h \ 748 external/ExRootAnalysis/ExRootFilter.h \ 749 external/ExRootAnalysis/ExRootClassifier.h 750 tmp/modules/TauTagging.$(ObjSuf): \ 751 modules/TauTagging.$(SrcSuf) \ 752 modules/TauTagging.h \ 753 classes/DelphesClasses.h \ 754 classes/DelphesFactory.h \ 755 classes/DelphesFormula.h \ 756 external/ExRootAnalysis/ExRootResult.h \ 757 external/ExRootAnalysis/ExRootFilter.h \ 758 external/ExRootAnalysis/ExRootClassifier.h 759 tmp/modules/EnergySmearing.$(ObjSuf): \ 760 modules/EnergySmearing.$(SrcSuf) \ 761 modules/EnergySmearing.h \ 762 classes/DelphesClasses.h \ 763 classes/DelphesFactory.h \ 764 classes/DelphesFormula.h \ 765 external/ExRootAnalysis/ExRootResult.h \ 766 external/ExRootAnalysis/ExRootFilter.h \ 767 external/ExRootAnalysis/ExRootClassifier.h 768 tmp/modules/LeptonDressing.$(ObjSuf): \ 769 modules/LeptonDressing.$(SrcSuf) \ 770 modules/LeptonDressing.h \ 771 classes/DelphesClasses.h \ 772 classes/DelphesFactory.h \ 773 classes/DelphesFormula.h \ 774 external/ExRootAnalysis/ExRootResult.h \ 775 external/ExRootAnalysis/ExRootFilter.h \ 776 external/ExRootAnalysis/ExRootClassifier.h 777 tmp/external/ExRootAnalysis/ExRootProgressBar.$(ObjSuf): \ 778 external/ExRootAnalysis/ExRootProgressBar.$(SrcSuf) \ 779 external/ExRootAnalysis/ExRootProgressBar.h 737 tmp/external/ExRootAnalysis/ExRootFilter.$(ObjSuf): \ 738 external/ExRootAnalysis/ExRootFilter.$(SrcSuf) \ 739 external/ExRootAnalysis/ExRootFilter.h \ 740 external/ExRootAnalysis/ExRootClassifier.h 741 tmp/external/ExRootAnalysis/ExRootConfReader.$(ObjSuf): \ 742 external/ExRootAnalysis/ExRootConfReader.$(SrcSuf) \ 743 external/ExRootAnalysis/ExRootConfReader.h \ 744 external/tcl/tcl.h 745 tmp/external/ExRootAnalysis/ExRootTreeWriter.$(ObjSuf): \ 746 external/ExRootAnalysis/ExRootTreeWriter.$(SrcSuf) \ 747 external/ExRootAnalysis/ExRootTreeWriter.h \ 748 external/ExRootAnalysis/ExRootTreeBranch.h 749 tmp/external/ExRootAnalysis/ExRootResult.$(ObjSuf): \ 750 external/ExRootAnalysis/ExRootResult.$(SrcSuf) \ 751 external/ExRootAnalysis/ExRootResult.h \ 752 external/ExRootAnalysis/ExRootUtilities.h 753 tmp/external/ExRootAnalysis/ExRootTreeBranch.$(ObjSuf): \ 754 external/ExRootAnalysis/ExRootTreeBranch.$(SrcSuf) \ 755 external/ExRootAnalysis/ExRootTreeBranch.h 780 756 tmp/external/ExRootAnalysis/ExRootTreeReader.$(ObjSuf): \ 781 757 external/ExRootAnalysis/ExRootTreeReader.$(SrcSuf) \ 782 758 external/ExRootAnalysis/ExRootTreeReader.h 783 tmp/external/ExRootAnalysis/ExRootTreeBranch.$(ObjSuf): \784 external/ExRootAnalysis/ExRootTreeBranch.$(SrcSuf) \785 external/ExRootAnalysis/ExRootTreeBranch.h786 759 tmp/external/ExRootAnalysis/ExRootTask.$(ObjSuf): \ 787 760 external/ExRootAnalysis/ExRootTask.$(SrcSuf) \ 788 761 external/ExRootAnalysis/ExRootTask.h \ 789 762 external/ExRootAnalysis/ExRootConfReader.h 790 tmp/external/ExRootAnalysis/ExRootConfReader.$(ObjSuf): \ 791 external/ExRootAnalysis/ExRootConfReader.$(SrcSuf) \ 792 external/ExRootAnalysis/ExRootConfReader.h \ 793 external/tcl/tcl.h 794 tmp/external/ExRootAnalysis/ExRootResult.$(ObjSuf): \ 795 external/ExRootAnalysis/ExRootResult.$(SrcSuf) \ 796 external/ExRootAnalysis/ExRootResult.h \ 797 external/ExRootAnalysis/ExRootUtilities.h 763 tmp/external/ExRootAnalysis/ExRootProgressBar.$(ObjSuf): \ 764 external/ExRootAnalysis/ExRootProgressBar.$(SrcSuf) \ 765 external/ExRootAnalysis/ExRootProgressBar.h 798 766 tmp/external/ExRootAnalysis/ExRootUtilities.$(ObjSuf): \ 799 767 external/ExRootAnalysis/ExRootUtilities.$(SrcSuf) \ 800 768 external/ExRootAnalysis/ExRootUtilities.h 801 tmp/external/ExRootAnalysis/ExRootFilter.$(ObjSuf): \ 802 external/ExRootAnalysis/ExRootFilter.$(SrcSuf) \ 803 external/ExRootAnalysis/ExRootFilter.h \ 804 external/ExRootAnalysis/ExRootClassifier.h 805 tmp/external/ExRootAnalysis/ExRootTreeWriter.$(ObjSuf): \ 806 external/ExRootAnalysis/ExRootTreeWriter.$(SrcSuf) \ 807 external/ExRootAnalysis/ExRootTreeWriter.h \ 808 external/ExRootAnalysis/ExRootTreeBranch.h 809 tmp/external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(ObjSuf): \ 810 external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(SrcSuf) \ 811 external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh 812 tmp/external/fastjet/ClusterSequence_DumbN3.$(ObjSuf): \ 813 external/fastjet/ClusterSequence_DumbN3.$(SrcSuf) \ 814 external/fastjet/PseudoJet.hh \ 815 external/fastjet/ClusterSequence.hh 816 tmp/external/fastjet/Error.$(ObjSuf): \ 817 external/fastjet/Error.$(SrcSuf) \ 818 external/fastjet/Error.hh \ 819 external/fastjet/config.h 820 tmp/external/fastjet/TilingExtent.$(ObjSuf): \ 821 external/fastjet/TilingExtent.$(SrcSuf) \ 822 external/fastjet/internal/TilingExtent.hh 823 tmp/external/fastjet/ClusterSequence_CP2DChan.$(ObjSuf): \ 824 external/fastjet/ClusterSequence_CP2DChan.$(SrcSuf) \ 825 external/fastjet/ClusterSequence.hh \ 826 external/fastjet/internal/ClosestPair2D.hh 827 tmp/external/fastjet/ClusterSequence1GhostPassiveArea.$(ObjSuf): \ 828 external/fastjet/ClusterSequence1GhostPassiveArea.$(SrcSuf) \ 829 external/fastjet/ClusterSequence1GhostPassiveArea.hh 769 tmp/external/fastjet/Dnn2piCylinder.$(ObjSuf): \ 770 external/fastjet/Dnn2piCylinder.$(SrcSuf) \ 771 external/fastjet/internal/Dnn2piCylinder.hh 830 772 tmp/external/fastjet/GhostedAreaSpec.$(ObjSuf): \ 831 773 external/fastjet/GhostedAreaSpec.$(SrcSuf) \ 832 774 external/fastjet/GhostedAreaSpec.hh \ 833 775 external/fastjet/Error.hh 834 tmp/external/fastjet/Dnn4piCylinder.$(ObjSuf): \835 external/fastjet/Dnn4piCylinder.$(SrcSuf) \836 external/fastjet/internal/Dnn4piCylinder.hh837 tmp/external/fastjet/AreaDefinition.$(ObjSuf): \838 external/fastjet/AreaDefinition.$(SrcSuf) \839 external/fastjet/AreaDefinition.hh840 tmp/external/fastjet/ClusterSequenceAreaBase.$(ObjSuf): \841 external/fastjet/ClusterSequenceAreaBase.$(SrcSuf) \842 external/fastjet/ClusterSequenceAreaBase.hh843 tmp/external/fastjet/ClusterSequence.$(ObjSuf): \844 external/fastjet/ClusterSequence.$(SrcSuf) \845 external/fastjet/Error.hh \846 external/fastjet/PseudoJet.hh \847 external/fastjet/ClusterSequence.hh \848 external/fastjet/ClusterSequenceStructure.hh \849 external/fastjet/version.hh \850 external/fastjet/internal/LazyTiling9Alt.hh \851 external/fastjet/internal/LazyTiling9.hh \852 external/fastjet/internal/LazyTiling25.hh \853 external/fastjet/internal/LazyTiling9SeparateGhosts.hh854 tmp/external/fastjet/ClusterSequence_TiledN2.$(ObjSuf): \855 external/fastjet/ClusterSequence_TiledN2.$(SrcSuf) \856 external/fastjet/PseudoJet.hh \857 external/fastjet/ClusterSequence.hh \858 external/fastjet/internal/MinHeap.hh \859 external/fastjet/internal/TilingExtent.hh860 tmp/external/fastjet/Dnn3piCylinder.$(ObjSuf): \861 external/fastjet/Dnn3piCylinder.$(SrcSuf) \862 external/fastjet/internal/Dnn3piCylinder.hh863 776 tmp/external/fastjet/ClusterSequenceActiveArea.$(ObjSuf): \ 864 777 external/fastjet/ClusterSequenceActiveArea.$(SrcSuf) \ … … 867 780 external/fastjet/ClusterSequenceActiveArea.hh \ 868 781 external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh 869 tmp/external/fastjet/RangeDefinition.$(ObjSuf): \870 external/fastjet/RangeDefinition.$(SrcSuf) \871 external/fastjet/RangeDefinition.hh872 tmp/external/fastjet/Dnn2piCylinder.$(ObjSuf): \873 external/fastjet/Dnn2piCylinder.$(SrcSuf) \874 external/fastjet/internal/Dnn2piCylinder.hh875 tmp/external/fastjet/LazyTiling9SeparateGhosts.$(ObjSuf): \876 external/fastjet/LazyTiling9SeparateGhosts.$(SrcSuf) \877 external/fastjet/internal/LazyTiling9SeparateGhosts.hh \878 external/fastjet/internal/TilingExtent.hh879 tmp/external/fastjet/Selector.$(ObjSuf): \880 external/fastjet/Selector.$(SrcSuf) \881 external/fastjet/Selector.hh \882 external/fastjet/GhostedAreaSpec.hh883 tmp/external/fastjet/ClusterSequenceArea.$(ObjSuf): \884 external/fastjet/ClusterSequenceArea.$(SrcSuf) \885 external/fastjet/ClusterSequenceArea.hh886 tmp/external/fastjet/PseudoJet.$(ObjSuf): \887 external/fastjet/PseudoJet.$(SrcSuf) \888 external/fastjet/Error.hh \889 external/fastjet/PseudoJet.hh \890 external/fastjet/ClusterSequence.hh \891 external/fastjet/ClusterSequenceAreaBase.hh \892 external/fastjet/CompositeJetStructure.hh893 tmp/external/fastjet/LimitedWarning.$(ObjSuf): \894 external/fastjet/LimitedWarning.$(SrcSuf) \895 external/fastjet/LimitedWarning.hh896 tmp/external/fastjet/ClusterSequence_N2.$(ObjSuf): \897 external/fastjet/ClusterSequence_N2.$(SrcSuf)898 tmp/external/fastjet/ClusterSequenceVoronoiArea.$(ObjSuf): \899 external/fastjet/ClusterSequenceVoronoiArea.$(SrcSuf) \900 external/fastjet/ClusterSequenceVoronoiArea.hh \901 external/fastjet/internal/Voronoi.hh902 tmp/external/fastjet/FunctionOfPseudoJet.$(ObjSuf): \903 external/fastjet/FunctionOfPseudoJet.$(SrcSuf)904 tmp/external/fastjet/ClusterSequenceStructure.$(ObjSuf): \905 external/fastjet/ClusterSequenceStructure.$(SrcSuf) \906 external/fastjet/ClusterSequenceStructure.hh \907 external/fastjet/Error.hh \908 external/fastjet/PseudoJet.hh \909 external/fastjet/ClusterSequence.hh \910 external/fastjet/ClusterSequenceAreaBase.hh911 tmp/external/fastjet/PseudoJetStructureBase.$(ObjSuf): \912 external/fastjet/PseudoJetStructureBase.$(SrcSuf) \913 external/fastjet/PseudoJetStructureBase.hh \914 external/fastjet/Error.hh \915 external/fastjet/PseudoJet.hh \916 external/fastjet/ClusterSequence.hh \917 external/fastjet/ClusterSequenceAreaBase.hh918 tmp/external/fastjet/Voronoi.$(ObjSuf): \919 external/fastjet/Voronoi.$(SrcSuf) \920 external/fastjet/internal/Voronoi.hh921 tmp/external/fastjet/CompositeJetStructure.$(ObjSuf): \922 external/fastjet/CompositeJetStructure.$(SrcSuf)923 tmp/external/fastjet/ClosestPair2D.$(ObjSuf): \924 external/fastjet/ClosestPair2D.$(SrcSuf) \925 external/fastjet/internal/ClosestPair2D.hh926 tmp/external/fastjet/JetDefinition.$(ObjSuf): \927 external/fastjet/JetDefinition.$(SrcSuf) \928 external/fastjet/JetDefinition.hh \929 external/fastjet/Error.hh \930 external/fastjet/CompositeJetStructure.hh931 tmp/external/fastjet/LazyTiling9Alt.$(ObjSuf): \932 external/fastjet/LazyTiling9Alt.$(SrcSuf) \933 external/fastjet/internal/LazyTiling9Alt.hh \934 external/fastjet/internal/TilingExtent.hh935 tmp/external/fastjet/DnnPlane.$(ObjSuf): \936 external/fastjet/DnnPlane.$(SrcSuf) \937 external/fastjet/internal/DnnPlane.hh938 tmp/external/fastjet/RectangularGrid.$(ObjSuf): \939 external/fastjet/RectangularGrid.$(SrcSuf) \940 external/fastjet/RectangularGrid.hh941 tmp/external/fastjet/LazyTiling25.$(ObjSuf): \942 external/fastjet/LazyTiling25.$(SrcSuf) \943 external/fastjet/internal/LazyTiling25.hh \944 external/fastjet/internal/TilingExtent.hh945 tmp/external/fastjet/BasicRandom.$(ObjSuf): \946 external/fastjet/BasicRandom.$(SrcSuf) \947 external/fastjet/internal/BasicRandom.hh948 782 tmp/external/fastjet/ClusterSequence_Delaunay.$(ObjSuf): \ 949 783 external/fastjet/ClusterSequence_Delaunay.$(SrcSuf) \ … … 955 789 external/fastjet/internal/Dnn3piCylinder.hh \ 956 790 external/fastjet/internal/Dnn2piCylinder.hh 791 tmp/external/fastjet/ClusterSequenceArea.$(ObjSuf): \ 792 external/fastjet/ClusterSequenceArea.$(SrcSuf) \ 793 external/fastjet/ClusterSequenceArea.hh 794 tmp/external/fastjet/Voronoi.$(ObjSuf): \ 795 external/fastjet/Voronoi.$(SrcSuf) \ 796 external/fastjet/internal/Voronoi.hh 797 tmp/external/fastjet/Selector.$(ObjSuf): \ 798 external/fastjet/Selector.$(SrcSuf) \ 799 external/fastjet/Selector.hh \ 800 external/fastjet/GhostedAreaSpec.hh 801 tmp/external/fastjet/ClusterSequence_TiledN2.$(ObjSuf): \ 802 external/fastjet/ClusterSequence_TiledN2.$(SrcSuf) \ 803 external/fastjet/PseudoJet.hh \ 804 external/fastjet/ClusterSequence.hh \ 805 external/fastjet/internal/MinHeap.hh 806 tmp/external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(ObjSuf): \ 807 external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(SrcSuf) \ 808 external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh 809 tmp/external/fastjet/LimitedWarning.$(ObjSuf): \ 810 external/fastjet/LimitedWarning.$(SrcSuf) \ 811 external/fastjet/LimitedWarning.hh 812 tmp/external/fastjet/CompositeJetStructure.$(ObjSuf): \ 813 external/fastjet/CompositeJetStructure.$(SrcSuf) 814 tmp/external/fastjet/DnnPlane.$(ObjSuf): \ 815 external/fastjet/DnnPlane.$(SrcSuf) \ 816 external/fastjet/internal/DnnPlane.hh 817 tmp/external/fastjet/ClusterSequence_DumbN3.$(ObjSuf): \ 818 external/fastjet/ClusterSequence_DumbN3.$(SrcSuf) \ 819 external/fastjet/PseudoJet.hh \ 820 external/fastjet/ClusterSequence.hh 957 821 tmp/external/fastjet/ClusterSequencePassiveArea.$(ObjSuf): \ 958 822 external/fastjet/ClusterSequencePassiveArea.$(SrcSuf) \ 959 823 external/fastjet/ClusterSequencePassiveArea.hh \ 960 824 external/fastjet/ClusterSequenceVoronoiArea.hh 961 tmp/external/fastjet/LazyTiling9.$(ObjSuf): \ 962 external/fastjet/LazyTiling9.$(SrcSuf) \ 963 external/fastjet/internal/LazyTiling9.hh \ 964 external/fastjet/internal/TilingExtent.hh 825 tmp/external/fastjet/BasicRandom.$(ObjSuf): \ 826 external/fastjet/BasicRandom.$(SrcSuf) \ 827 external/fastjet/internal/BasicRandom.hh 828 tmp/external/fastjet/ClusterSequenceAreaBase.$(ObjSuf): \ 829 external/fastjet/ClusterSequenceAreaBase.$(SrcSuf) \ 830 external/fastjet/ClusterSequenceAreaBase.hh 831 tmp/external/fastjet/PseudoJetStructureBase.$(ObjSuf): \ 832 external/fastjet/PseudoJetStructureBase.$(SrcSuf) \ 833 external/fastjet/PseudoJetStructureBase.hh \ 834 external/fastjet/Error.hh \ 835 external/fastjet/PseudoJet.hh \ 836 external/fastjet/ClusterSequence.hh \ 837 external/fastjet/ClusterSequenceAreaBase.hh 838 tmp/external/fastjet/ClusterSequence.$(ObjSuf): \ 839 external/fastjet/ClusterSequence.$(SrcSuf) \ 840 external/fastjet/Error.hh \ 841 external/fastjet/PseudoJet.hh \ 842 external/fastjet/ClusterSequence.hh \ 843 external/fastjet/ClusterSequenceStructure.hh \ 844 external/fastjet/version.hh 845 tmp/external/fastjet/JetDefinition.$(ObjSuf): \ 846 external/fastjet/JetDefinition.$(SrcSuf) \ 847 external/fastjet/JetDefinition.hh \ 848 external/fastjet/Error.hh \ 849 external/fastjet/CompositeJetStructure.hh 850 tmp/external/fastjet/Error.$(ObjSuf): \ 851 external/fastjet/Error.$(SrcSuf) \ 852 external/fastjet/Error.hh \ 853 external/fastjet/config.h 854 tmp/external/fastjet/RangeDefinition.$(ObjSuf): \ 855 external/fastjet/RangeDefinition.$(SrcSuf) \ 856 external/fastjet/RangeDefinition.hh 857 tmp/external/fastjet/ClusterSequence_N2.$(ObjSuf): \ 858 external/fastjet/ClusterSequence_N2.$(SrcSuf) 859 tmp/external/fastjet/ClusterSequenceStructure.$(ObjSuf): \ 860 external/fastjet/ClusterSequenceStructure.$(SrcSuf) \ 861 external/fastjet/ClusterSequenceStructure.hh \ 862 external/fastjet/Error.hh \ 863 external/fastjet/PseudoJet.hh \ 864 external/fastjet/ClusterSequence.hh \ 865 external/fastjet/ClusterSequenceAreaBase.hh 866 tmp/external/fastjet/Dnn4piCylinder.$(ObjSuf): \ 867 external/fastjet/Dnn4piCylinder.$(SrcSuf) \ 868 external/fastjet/internal/Dnn4piCylinder.hh 869 tmp/external/fastjet/ClusterSequence1GhostPassiveArea.$(ObjSuf): \ 870 external/fastjet/ClusterSequence1GhostPassiveArea.$(SrcSuf) \ 871 external/fastjet/ClusterSequence1GhostPassiveArea.hh 965 872 tmp/external/fastjet/MinHeap.$(ObjSuf): \ 966 873 external/fastjet/MinHeap.$(SrcSuf) \ 967 874 external/fastjet/internal/MinHeap.hh 875 tmp/external/fastjet/PseudoJet.$(ObjSuf): \ 876 external/fastjet/PseudoJet.$(SrcSuf) \ 877 external/fastjet/Error.hh \ 878 external/fastjet/PseudoJet.hh \ 879 external/fastjet/ClusterSequence.hh \ 880 external/fastjet/ClusterSequenceAreaBase.hh \ 881 external/fastjet/CompositeJetStructure.hh 882 tmp/external/fastjet/Dnn3piCylinder.$(ObjSuf): \ 883 external/fastjet/Dnn3piCylinder.$(SrcSuf) \ 884 external/fastjet/internal/Dnn3piCylinder.hh 885 tmp/external/fastjet/ClusterSequence_CP2DChan.$(ObjSuf): \ 886 external/fastjet/ClusterSequence_CP2DChan.$(SrcSuf) \ 887 external/fastjet/ClusterSequence.hh \ 888 external/fastjet/internal/ClosestPair2D.hh 889 tmp/external/fastjet/ClusterSequenceVoronoiArea.$(ObjSuf): \ 890 external/fastjet/ClusterSequenceVoronoiArea.$(SrcSuf) \ 891 external/fastjet/ClusterSequenceVoronoiArea.hh \ 892 external/fastjet/internal/Voronoi.hh 893 tmp/external/fastjet/ClosestPair2D.$(ObjSuf): \ 894 external/fastjet/ClosestPair2D.$(SrcSuf) \ 895 external/fastjet/internal/ClosestPair2D.hh 896 tmp/external/fastjet/FunctionOfPseudoJet.$(ObjSuf): \ 897 external/fastjet/FunctionOfPseudoJet.$(SrcSuf) 898 tmp/external/fastjet/AreaDefinition.$(ObjSuf): \ 899 external/fastjet/AreaDefinition.$(SrcSuf) \ 900 external/fastjet/AreaDefinition.hh 901 tmp/external/fastjet/tools/CASubJetTagger.$(ObjSuf): \ 902 external/fastjet/tools/CASubJetTagger.$(SrcSuf) 903 tmp/external/fastjet/tools/TopTaggerBase.$(ObjSuf): \ 904 external/fastjet/tools/TopTaggerBase.$(SrcSuf) 905 tmp/external/fastjet/tools/BackgroundEstimatorBase.$(ObjSuf): \ 906 external/fastjet/tools/BackgroundEstimatorBase.$(SrcSuf) \ 907 external/fastjet/tools/BackgroundEstimatorBase.hh 908 tmp/external/fastjet/tools/Subtractor.$(ObjSuf): \ 909 external/fastjet/tools/Subtractor.$(SrcSuf) \ 910 external/fastjet/tools/Subtractor.hh 911 tmp/external/fastjet/tools/RestFrameNSubjettinessTagger.$(ObjSuf): \ 912 external/fastjet/tools/RestFrameNSubjettinessTagger.$(SrcSuf) 968 913 tmp/external/fastjet/tools/JetMedianBackgroundEstimator.$(ObjSuf): \ 969 914 external/fastjet/tools/JetMedianBackgroundEstimator.$(SrcSuf) \ 970 915 external/fastjet/tools/JetMedianBackgroundEstimator.hh 971 tmp/external/fastjet/tools/Filter.$(ObjSuf): \ 972 external/fastjet/tools/Filter.$(SrcSuf) \ 973 external/fastjet/tools/Filter.hh \ 974 external/fastjet/tools/Recluster.hh 916 tmp/external/fastjet/tools/MassDropTagger.$(ObjSuf): \ 917 external/fastjet/tools/MassDropTagger.$(SrcSuf) 975 918 tmp/external/fastjet/tools/JHTopTagger.$(ObjSuf): \ 976 919 external/fastjet/tools/JHTopTagger.$(SrcSuf) … … 978 921 external/fastjet/tools/GridMedianBackgroundEstimator.$(SrcSuf) \ 979 922 external/fastjet/tools/GridMedianBackgroundEstimator.hh 980 tmp/external/fastjet/tools/TopTaggerBase.$(ObjSuf): \ 981 external/fastjet/tools/TopTaggerBase.$(SrcSuf) 982 tmp/external/fastjet/tools/BackgroundEstimatorBase.$(ObjSuf): \ 983 external/fastjet/tools/BackgroundEstimatorBase.$(SrcSuf) \ 984 external/fastjet/tools/BackgroundEstimatorBase.hh 923 tmp/external/fastjet/tools/Filter.$(ObjSuf): \ 924 external/fastjet/tools/Filter.$(SrcSuf) \ 925 external/fastjet/tools/Filter.hh 985 926 tmp/external/fastjet/tools/Pruner.$(ObjSuf): \ 986 927 external/fastjet/tools/Pruner.$(SrcSuf) \ … … 988 929 external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh \ 989 930 external/fastjet/Selector.hh 990 tmp/external/fastjet/tools/RestFrameNSubjettinessTagger.$(ObjSuf): \ 991 external/fastjet/tools/RestFrameNSubjettinessTagger.$(SrcSuf) 992 tmp/external/fastjet/tools/CASubJetTagger.$(ObjSuf): \ 993 external/fastjet/tools/CASubJetTagger.$(SrcSuf) 994 tmp/external/fastjet/tools/Recluster.$(ObjSuf): \ 995 external/fastjet/tools/Recluster.$(SrcSuf) \ 996 external/fastjet/tools/Recluster.hh \ 997 external/fastjet/CompositeJetStructure.hh 998 tmp/external/fastjet/tools/MassDropTagger.$(ObjSuf): \ 999 external/fastjet/tools/MassDropTagger.$(SrcSuf) 1000 tmp/external/fastjet/tools/Subtractor.$(ObjSuf): \ 1001 external/fastjet/tools/Subtractor.$(SrcSuf) \ 1002 external/fastjet/tools/Subtractor.hh 1003 tmp/external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(ObjSuf): \ 1004 external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(SrcSuf) \ 931 tmp/external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(ObjSuf): \ 932 external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(SrcSuf) \ 1005 933 external/fastjet/ClusterSequence.hh 1006 tmp/external/fastjet/plugins/GridJet/GridJetPlugin.$(ObjSuf): \ 1007 external/fastjet/plugins/GridJet/GridJetPlugin.$(SrcSuf) \ 934 tmp/external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(ObjSuf): \ 935 external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(SrcSuf) 936 tmp/external/fastjet/plugins/ATLASCone/Jet.$(ObjSuf): \ 937 external/fastjet/plugins/ATLASCone/Jet.$(SrcSuf) 938 tmp/external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(ObjSuf): \ 939 external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(SrcSuf) 940 tmp/external/fastjet/plugins/NestedDefs/NestedDefsPlugin.$(ObjSuf): \ 941 external/fastjet/plugins/NestedDefs/NestedDefsPlugin.$(SrcSuf) \ 1008 942 external/fastjet/ClusterSequence.hh 1009 943 tmp/external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(ObjSuf): \ … … 1014 948 external/fastjet/plugins/TrackJet/TrackJetPlugin.$(SrcSuf) \ 1015 949 external/fastjet/ClusterSequence.hh 1016 tmp/external/fastjet/plugins/Jade/JadePlugin.$(ObjSuf): \1017 external/fastjet/plugins/Jade/JadePlugin.$(SrcSuf) \1018 external/fastjet/ClusterSequence.hh \1019 external/fastjet/NNH.hh1020 tmp/external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(ObjSuf): \1021 external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(SrcSuf) \1022 external/fastjet/ClusterSequence.hh1023 tmp/external/fastjet/plugins/ATLASCone/Jet.$(ObjSuf): \1024 external/fastjet/plugins/ATLASCone/Jet.$(SrcSuf)1025 tmp/external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(ObjSuf): \1026 external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(SrcSuf)1027 tmp/external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(ObjSuf): \1028 external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(SrcSuf)1029 tmp/external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(ObjSuf): \1030 external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(SrcSuf) \1031 external/fastjet/ClusterSequence.hh \1032 external/fastjet/Error.hh1033 tmp/external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(ObjSuf): \1034 external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(SrcSuf)1035 tmp/external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(ObjSuf): \1036 external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(SrcSuf) \1037 external/fastjet/ClusterSequence.hh1038 950 tmp/external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(ObjSuf): \ 1039 951 external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(SrcSuf) \ … … 1042 954 tmp/external/fastjet/plugins/CDFCones/MidPointAlgorithm.$(ObjSuf): \ 1043 955 external/fastjet/plugins/CDFCones/MidPointAlgorithm.$(SrcSuf) 1044 tmp/external/fastjet/plugins/ NestedDefs/NestedDefsPlugin.$(ObjSuf): \1045 external/fastjet/plugins/ NestedDefs/NestedDefsPlugin.$(SrcSuf) \956 tmp/external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(ObjSuf): \ 957 external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(SrcSuf) \ 1046 958 external/fastjet/ClusterSequence.hh 1047 tmp/external/fastjet/plugins/EECambridge/EECambridgePlugin.$(ObjSuf): \ 1048 external/fastjet/plugins/EECambridge/EECambridgePlugin.$(SrcSuf) \ 959 tmp/external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(ObjSuf): \ 960 external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(SrcSuf) 961 tmp/external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(ObjSuf): \ 962 external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(SrcSuf) \ 1049 963 external/fastjet/ClusterSequence.hh \ 1050 external/fastjet/NNH.hh 1051 tmp/external/fastjet/plugins/SISCone/quadtree.$(ObjSuf): \ 1052 external/fastjet/plugins/SISCone/quadtree.$(SrcSuf) 1053 tmp/external/fastjet/plugins/SISCone/split_merge.$(ObjSuf): \ 1054 external/fastjet/plugins/SISCone/split_merge.$(SrcSuf) 1055 tmp/external/fastjet/plugins/SISCone/ranlux.$(ObjSuf): \ 1056 external/fastjet/plugins/SISCone/ranlux.$(SrcSuf) 1057 tmp/external/fastjet/plugins/SISCone/momentum.$(ObjSuf): \ 1058 external/fastjet/plugins/SISCone/momentum.$(SrcSuf) 1059 tmp/external/fastjet/plugins/SISCone/reference.$(ObjSuf): \ 1060 external/fastjet/plugins/SISCone/reference.$(SrcSuf) 964 external/fastjet/Error.hh 1061 965 tmp/external/fastjet/plugins/SISCone/geom_2d.$(ObjSuf): \ 1062 966 external/fastjet/plugins/SISCone/geom_2d.$(SrcSuf) 1063 tmp/external/fastjet/plugins/SISCone/hash.$(ObjSuf): \1064 external/fastjet/plugins/SISCone/hash.$(SrcSuf)1065 tmp/external/fastjet/plugins/SISCone/protocones.$(ObjSuf): \1066 external/fastjet/plugins/SISCone/protocones.$(SrcSuf)1067 967 tmp/external/fastjet/plugins/SISCone/SISConePlugin.$(ObjSuf): \ 1068 968 external/fastjet/plugins/SISCone/SISConePlugin.$(SrcSuf) \ … … 1070 970 tmp/external/fastjet/plugins/SISCone/siscone.$(ObjSuf): \ 1071 971 external/fastjet/plugins/SISCone/siscone.$(SrcSuf) 972 tmp/external/fastjet/plugins/SISCone/hash.$(ObjSuf): \ 973 external/fastjet/plugins/SISCone/hash.$(SrcSuf) 974 tmp/external/fastjet/plugins/SISCone/quadtree.$(ObjSuf): \ 975 external/fastjet/plugins/SISCone/quadtree.$(SrcSuf) 1072 976 tmp/external/fastjet/plugins/SISCone/area.$(ObjSuf): \ 1073 977 external/fastjet/plugins/SISCone/area.$(SrcSuf) 978 tmp/external/fastjet/plugins/SISCone/momentum.$(ObjSuf): \ 979 external/fastjet/plugins/SISCone/momentum.$(SrcSuf) 980 tmp/external/fastjet/plugins/SISCone/reference.$(ObjSuf): \ 981 external/fastjet/plugins/SISCone/reference.$(SrcSuf) 982 tmp/external/fastjet/plugins/SISCone/ranlux.$(ObjSuf): \ 983 external/fastjet/plugins/SISCone/ranlux.$(SrcSuf) 984 tmp/external/fastjet/plugins/SISCone/protocones.$(ObjSuf): \ 985 external/fastjet/plugins/SISCone/protocones.$(SrcSuf) 986 tmp/external/fastjet/plugins/SISCone/split_merge.$(ObjSuf): \ 987 external/fastjet/plugins/SISCone/split_merge.$(SrcSuf) 988 tmp/external/fastjet/plugins/SISCone/vicinity.$(ObjSuf): \ 989 external/fastjet/plugins/SISCone/vicinity.$(SrcSuf) 1074 990 tmp/external/fastjet/plugins/SISCone/siscone_error.$(ObjSuf): \ 1075 991 external/fastjet/plugins/SISCone/siscone_error.$(SrcSuf) 1076 tmp/external/fastjet/plugins/SISCone/vicinity.$(ObjSuf): \ 1077 external/fastjet/plugins/SISCone/vicinity.$(SrcSuf) 1078 tmp/external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.$(ObjSuf): \ 1079 external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.$(SrcSuf) 992 tmp/external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(ObjSuf): \ 993 external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(SrcSuf) \ 994 external/fastjet/ClusterSequence.hh 995 tmp/external/fastjet/plugins/GridJet/GridJetPlugin.$(ObjSuf): \ 996 external/fastjet/plugins/GridJet/GridJetPlugin.$(SrcSuf) \ 997 external/fastjet/ClusterSequence.hh 998 tmp/external/fastjet/plugins/Jade/JadePlugin.$(ObjSuf): \ 999 external/fastjet/plugins/Jade/JadePlugin.$(SrcSuf) \ 1000 external/fastjet/ClusterSequence.hh \ 1001 external/fastjet/NNH.hh 1002 tmp/external/fastjet/plugins/EECambridge/EECambridgePlugin.$(ObjSuf): \ 1003 external/fastjet/plugins/EECambridge/EECambridgePlugin.$(SrcSuf) \ 1004 external/fastjet/ClusterSequence.hh \ 1005 external/fastjet/NNH.hh 1006 tmp/external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(ObjSuf): \ 1007 external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(SrcSuf) 1008 tmp/external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(ObjSuf): \ 1009 external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(SrcSuf) 1010 tmp/external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(ObjSuf): \ 1011 external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(SrcSuf) 1080 1012 tmp/external/fastjet/contribs/Nsubjettiness/Njettiness.$(ObjSuf): \ 1081 1013 external/fastjet/contribs/Nsubjettiness/Njettiness.$(SrcSuf) 1082 1014 tmp/external/fastjet/contribs/Nsubjettiness/AxesFinder.$(ObjSuf): \ 1083 1015 external/fastjet/contribs/Nsubjettiness/AxesFinder.$(SrcSuf) 1084 tmp/external/fastjet/contribs/Nsubjettiness/NjettinessDefinition.$(ObjSuf): \ 1085 external/fastjet/contribs/Nsubjettiness/NjettinessDefinition.$(SrcSuf) 1086 tmp/external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(ObjSuf): \ 1087 external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(SrcSuf) 1088 tmp/external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(ObjSuf): \ 1089 external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(SrcSuf) 1090 tmp/external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(ObjSuf): \ 1091 external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(SrcSuf) 1092 tmp/external/fastjet/contribs/SoftKiller/SoftKiller.$(ObjSuf): \ 1093 external/fastjet/contribs/SoftKiller/SoftKiller.$(SrcSuf) 1094 tmp/external/Hector/H_EllipticAperture.$(ObjSuf): \ 1095 external/Hector/H_EllipticAperture.$(SrcSuf) 1096 tmp/external/Hector/H_Parameters.$(ObjSuf): \ 1097 external/Hector/H_Parameters.$(SrcSuf) 1098 tmp/external/Hector/H_RectangularAperture.$(ObjSuf): \ 1099 external/Hector/H_RectangularAperture.$(SrcSuf) 1016 tmp/external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.$(ObjSuf): \ 1017 external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.$(SrcSuf) 1100 1018 tmp/external/Hector/H_Marker.$(ObjSuf): \ 1101 1019 external/Hector/H_Marker.$(SrcSuf) 1102 1020 tmp/external/Hector/H_VerticalKicker.$(ObjSuf): \ 1103 1021 external/Hector/H_VerticalKicker.$(SrcSuf) 1022 tmp/external/Hector/H_BeamLine.$(ObjSuf): \ 1023 external/Hector/H_BeamLine.$(SrcSuf) 1024 tmp/external/Hector/H_RecRPObject.$(ObjSuf): \ 1025 external/Hector/H_RecRPObject.$(SrcSuf) 1026 tmp/external/Hector/H_Quadrupole.$(ObjSuf): \ 1027 external/Hector/H_Quadrupole.$(SrcSuf) 1028 tmp/external/Hector/H_RectangularDipole.$(ObjSuf): \ 1029 external/Hector/H_RectangularDipole.$(SrcSuf) 1030 tmp/external/Hector/H_CircularAperture.$(ObjSuf): \ 1031 external/Hector/H_CircularAperture.$(SrcSuf) 1104 1032 tmp/external/Hector/H_HorizontalQuadrupole.$(ObjSuf): \ 1105 1033 external/Hector/H_HorizontalQuadrupole.$(SrcSuf) 1106 tmp/external/Hector/H_Beam.$(ObjSuf): \ 1107 external/Hector/H_Beam.$(SrcSuf) 1108 tmp/external/Hector/H_BeamLine.$(ObjSuf): \ 1109 external/Hector/H_BeamLine.$(SrcSuf) 1110 tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf): \ 1111 external/Hector/H_VerticalQuadrupole.$(SrcSuf) 1112 tmp/external/Hector/H_Quadrupole.$(ObjSuf): \ 1113 external/Hector/H_Quadrupole.$(SrcSuf) 1114 tmp/external/Hector/H_RecRPObject.$(ObjSuf): \ 1115 external/Hector/H_RecRPObject.$(SrcSuf) 1116 tmp/external/Hector/H_TransportMatrices.$(ObjSuf): \ 1117 external/Hector/H_TransportMatrices.$(SrcSuf) 1118 tmp/external/Hector/H_CircularAperture.$(ObjSuf): \ 1119 external/Hector/H_CircularAperture.$(SrcSuf) 1120 tmp/external/Hector/H_Dipole.$(ObjSuf): \ 1121 external/Hector/H_Dipole.$(SrcSuf) 1122 tmp/external/Hector/H_Drift.$(ObjSuf): \ 1123 external/Hector/H_Drift.$(SrcSuf) 1124 tmp/external/Hector/H_BeamParticle.$(ObjSuf): \ 1125 external/Hector/H_BeamParticle.$(SrcSuf) 1126 tmp/external/Hector/H_OpticalElement.$(ObjSuf): \ 1127 external/Hector/H_OpticalElement.$(SrcSuf) 1128 tmp/external/Hector/H_Kicker.$(ObjSuf): \ 1129 external/Hector/H_Kicker.$(SrcSuf) 1130 tmp/external/Hector/H_AbstractBeamLine.$(ObjSuf): \ 1131 external/Hector/H_AbstractBeamLine.$(SrcSuf) 1034 tmp/external/Hector/H_HorizontalKicker.$(ObjSuf): \ 1035 external/Hector/H_HorizontalKicker.$(SrcSuf) 1036 tmp/external/Hector/H_BeamLineParser.$(ObjSuf): \ 1037 external/Hector/H_BeamLineParser.$(SrcSuf) 1132 1038 tmp/external/Hector/H_RectEllipticAperture.$(ObjSuf): \ 1133 1039 external/Hector/H_RectEllipticAperture.$(SrcSuf) 1134 1040 tmp/external/Hector/H_RectangularCollimator.$(ObjSuf): \ 1135 1041 external/Hector/H_RectangularCollimator.$(SrcSuf) 1136 tmp/external/Hector/H_ RectangularDipole.$(ObjSuf): \1137 external/Hector/H_ RectangularDipole.$(SrcSuf)1138 tmp/external/Hector/H_ BeamLineParser.$(ObjSuf): \1139 external/Hector/H_ BeamLineParser.$(SrcSuf)1140 tmp/external/Hector/H_ HorizontalKicker.$(ObjSuf): \1141 external/Hector/H_ HorizontalKicker.$(SrcSuf)1042 tmp/external/Hector/H_SectorDipole.$(ObjSuf): \ 1043 external/Hector/H_SectorDipole.$(SrcSuf) 1044 tmp/external/Hector/H_RectangularAperture.$(ObjSuf): \ 1045 external/Hector/H_RectangularAperture.$(SrcSuf) 1046 tmp/external/Hector/H_RomanPot.$(ObjSuf): \ 1047 external/Hector/H_RomanPot.$(SrcSuf) 1142 1048 tmp/external/Hector/H_Aperture.$(ObjSuf): \ 1143 1049 external/Hector/H_Aperture.$(SrcSuf) 1144 tmp/external/Hector/H_RomanPot.$(ObjSuf): \ 1145 external/Hector/H_RomanPot.$(SrcSuf) 1146 tmp/external/Hector/H_SectorDipole.$(ObjSuf): \ 1147 external/Hector/H_SectorDipole.$(SrcSuf) 1050 tmp/external/Hector/H_BeamParticle.$(ObjSuf): \ 1051 external/Hector/H_BeamParticle.$(SrcSuf) 1052 tmp/external/Hector/H_Beam.$(ObjSuf): \ 1053 external/Hector/H_Beam.$(SrcSuf) 1054 tmp/external/Hector/H_Drift.$(ObjSuf): \ 1055 external/Hector/H_Drift.$(SrcSuf) 1056 tmp/external/Hector/H_Dipole.$(ObjSuf): \ 1057 external/Hector/H_Dipole.$(SrcSuf) 1058 tmp/external/Hector/H_OpticalElement.$(ObjSuf): \ 1059 external/Hector/H_OpticalElement.$(SrcSuf) 1060 tmp/external/Hector/H_TransportMatrices.$(ObjSuf): \ 1061 external/Hector/H_TransportMatrices.$(SrcSuf) 1062 tmp/external/Hector/H_Parameters.$(ObjSuf): \ 1063 external/Hector/H_Parameters.$(SrcSuf) 1064 tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf): \ 1065 external/Hector/H_VerticalQuadrupole.$(SrcSuf) 1066 tmp/external/Hector/H_AbstractBeamLine.$(ObjSuf): \ 1067 external/Hector/H_AbstractBeamLine.$(SrcSuf) 1068 tmp/external/Hector/H_EllipticAperture.$(ObjSuf): \ 1069 external/Hector/H_EllipticAperture.$(SrcSuf) 1070 tmp/external/Hector/H_Kicker.$(ObjSuf): \ 1071 external/Hector/H_Kicker.$(SrcSuf) 1148 1072 DELPHES_OBJ += \ 1073 tmp/classes/DelphesHepMCReader.$(ObjSuf) \ 1074 tmp/classes/DelphesLHEFReader.$(ObjSuf) \ 1075 tmp/classes/DelphesTF2.$(ObjSuf) \ 1149 1076 tmp/classes/DelphesFactory.$(ObjSuf) \ 1150 tmp/classes/DelphesLHEFReader.$(ObjSuf) \ 1077 tmp/classes/DelphesFormula.$(ObjSuf) \ 1078 tmp/classes/DelphesSTDHEPReader.$(ObjSuf) \ 1079 tmp/classes/DelphesStream.$(ObjSuf) \ 1080 tmp/classes/DelphesPileUpWriter.$(ObjSuf) \ 1151 1081 tmp/classes/DelphesModule.$(ObjSuf) \ 1152 tmp/classes/DelphesStream.$(ObjSuf) \1153 tmp/classes/DelphesHepMCReader.$(ObjSuf) \1154 1082 tmp/classes/DelphesClasses.$(ObjSuf) \ 1155 tmp/classes/DelphesFormula.$(ObjSuf) \1156 tmp/classes/DelphesPileUpWriter.$(ObjSuf) \1157 tmp/classes/DelphesTF2.$(ObjSuf) \1158 tmp/classes/DelphesSTDHEPReader.$(ObjSuf) \1159 1083 tmp/classes/DelphesPileUpReader.$(ObjSuf) \ 1160 tmp/modules/Weighter.$(ObjSuf) \ 1161 tmp/modules/Hector.$(ObjSuf) \ 1162 tmp/modules/ConstituentFilter.$(ObjSuf) \ 1163 tmp/modules/JetPileUpSubtractor.$(ObjSuf) \ 1164 tmp/modules/TrackPileUpSubtractor.$(ObjSuf) \ 1165 tmp/modules/PileUpJetID.$(ObjSuf) \ 1084 tmp/modules/SimpleCalorimeter.$(ObjSuf) \ 1085 tmp/modules/LeptonDressing.$(ObjSuf) \ 1086 tmp/modules/Efficiency.$(ObjSuf) \ 1087 tmp/modules/UniqueObjectFinder.$(ObjSuf) \ 1166 1088 tmp/modules/ExampleModule.$(ObjSuf) \ 1167 1089 tmp/modules/ParticlePropagator.$(ObjSuf) \ 1090 tmp/modules/EnergySmearing.$(ObjSuf) \ 1091 tmp/modules/FastJetFinder.$(ObjSuf) \ 1092 tmp/modules/StatusPidFilter.$(ObjSuf) \ 1093 tmp/modules/ConstituentFilter.$(ObjSuf) \ 1168 1094 tmp/modules/EnergyScale.$(ObjSuf) \ 1095 tmp/modules/TrackCountingBTagging.$(ObjSuf) \ 1096 tmp/modules/TauTagging.$(ObjSuf) \ 1169 1097 tmp/modules/TimeSmearing.$(ObjSuf) \ 1098 tmp/modules/Merger.$(ObjSuf) \ 1099 tmp/modules/BTagging.$(ObjSuf) \ 1100 tmp/modules/TreeWriter.$(ObjSuf) \ 1101 tmp/modules/Weighter.$(ObjSuf) \ 1102 tmp/modules/PileUpJetID.$(ObjSuf) \ 1103 tmp/modules/Delphes.$(ObjSuf) \ 1104 tmp/modules/ImpactParameterSmearing.$(ObjSuf) \ 1170 1105 tmp/modules/Calorimeter.$(ObjSuf) \ 1171 tmp/modules/UniqueObjectFinder.$(ObjSuf) \ 1172 tmp/modules/TrackCountingBTagging.$(ObjSuf) \ 1173 tmp/modules/StatusPidFilter.$(ObjSuf) \ 1174 tmp/modules/FastJetGridMedianEstimator.$(ObjSuf) \ 1175 tmp/modules/AngularSmearing.$(ObjSuf) \ 1106 tmp/modules/Isolation.$(ObjSuf) \ 1176 1107 tmp/modules/PileUpMerger.$(ObjSuf) \ 1177 tmp/modules/TreeWriter.$(ObjSuf) \ 1178 tmp/modules/SimpleCalorimeter.$(ObjSuf) \ 1179 tmp/modules/FastJetFinder.$(ObjSuf) \ 1108 tmp/modules/TrackPileUpSubtractor.$(ObjSuf) \ 1180 1109 tmp/modules/Cloner.$(ObjSuf) \ 1181 tmp/modules/Efficiency.$(ObjSuf) \ 1182 tmp/modules/ImpactParameterSmearing.$(ObjSuf) \ 1183 tmp/modules/Merger.$(ObjSuf) \ 1184 tmp/modules/Isolation.$(ObjSuf) \ 1185 tmp/modules/Delphes.$(ObjSuf) \ 1186 tmp/modules/IdentificationMap.$(ObjSuf) \ 1110 tmp/modules/JetPileUpSubtractor.$(ObjSuf) \ 1111 tmp/modules/Hector.$(ObjSuf) \ 1187 1112 tmp/modules/MomentumSmearing.$(ObjSuf) \ 1188 tmp/modules/BTagging.$(ObjSuf) \ 1189 tmp/modules/PdgCodeFilter.$(ObjSuf) \ 1190 tmp/modules/TauTagging.$(ObjSuf) \ 1191 tmp/modules/EnergySmearing.$(ObjSuf) \ 1192 tmp/modules/LeptonDressing.$(ObjSuf) \ 1113 tmp/external/ExRootAnalysis/ExRootFilter.$(ObjSuf) \ 1114 tmp/external/ExRootAnalysis/ExRootConfReader.$(ObjSuf) \ 1115 tmp/external/ExRootAnalysis/ExRootTreeWriter.$(ObjSuf) \ 1116 tmp/external/ExRootAnalysis/ExRootResult.$(ObjSuf) \ 1117 tmp/external/ExRootAnalysis/ExRootTreeBranch.$(ObjSuf) \ 1118 tmp/external/ExRootAnalysis/ExRootTreeReader.$(ObjSuf) \ 1119 tmp/external/ExRootAnalysis/ExRootTask.$(ObjSuf) \ 1193 1120 tmp/external/ExRootAnalysis/ExRootProgressBar.$(ObjSuf) \ 1194 tmp/external/ExRootAnalysis/ExRootTreeReader.$(ObjSuf) \1195 tmp/external/ExRootAnalysis/ExRootTreeBranch.$(ObjSuf) \1196 tmp/external/ExRootAnalysis/ExRootTask.$(ObjSuf) \1197 tmp/external/ExRootAnalysis/ExRootConfReader.$(ObjSuf) \1198 tmp/external/ExRootAnalysis/ExRootResult.$(ObjSuf) \1199 1121 tmp/external/ExRootAnalysis/ExRootUtilities.$(ObjSuf) \ 1200 tmp/external/ExRootAnalysis/ExRootFilter.$(ObjSuf) \ 1201 tmp/external/ExRootAnalysis/ExRootTreeWriter.$(ObjSuf) \ 1122 tmp/external/fastjet/Dnn2piCylinder.$(ObjSuf) \ 1123 tmp/external/fastjet/GhostedAreaSpec.$(ObjSuf) \ 1124 tmp/external/fastjet/ClusterSequenceActiveArea.$(ObjSuf) \ 1125 tmp/external/fastjet/ClusterSequence_Delaunay.$(ObjSuf) \ 1126 tmp/external/fastjet/ClusterSequenceArea.$(ObjSuf) \ 1127 tmp/external/fastjet/Voronoi.$(ObjSuf) \ 1128 tmp/external/fastjet/Selector.$(ObjSuf) \ 1129 tmp/external/fastjet/ClusterSequence_TiledN2.$(ObjSuf) \ 1202 1130 tmp/external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.$(ObjSuf) \ 1131 tmp/external/fastjet/LimitedWarning.$(ObjSuf) \ 1132 tmp/external/fastjet/CompositeJetStructure.$(ObjSuf) \ 1133 tmp/external/fastjet/DnnPlane.$(ObjSuf) \ 1203 1134 tmp/external/fastjet/ClusterSequence_DumbN3.$(ObjSuf) \ 1135 tmp/external/fastjet/ClusterSequencePassiveArea.$(ObjSuf) \ 1136 tmp/external/fastjet/BasicRandom.$(ObjSuf) \ 1137 tmp/external/fastjet/ClusterSequenceAreaBase.$(ObjSuf) \ 1138 tmp/external/fastjet/PseudoJetStructureBase.$(ObjSuf) \ 1139 tmp/external/fastjet/ClusterSequence.$(ObjSuf) \ 1140 tmp/external/fastjet/JetDefinition.$(ObjSuf) \ 1204 1141 tmp/external/fastjet/Error.$(ObjSuf) \ 1205 tmp/external/fastjet/TilingExtent.$(ObjSuf) \ 1142 tmp/external/fastjet/RangeDefinition.$(ObjSuf) \ 1143 tmp/external/fastjet/ClusterSequence_N2.$(ObjSuf) \ 1144 tmp/external/fastjet/ClusterSequenceStructure.$(ObjSuf) \ 1145 tmp/external/fastjet/Dnn4piCylinder.$(ObjSuf) \ 1146 tmp/external/fastjet/ClusterSequence1GhostPassiveArea.$(ObjSuf) \ 1147 tmp/external/fastjet/MinHeap.$(ObjSuf) \ 1148 tmp/external/fastjet/PseudoJet.$(ObjSuf) \ 1149 tmp/external/fastjet/Dnn3piCylinder.$(ObjSuf) \ 1206 1150 tmp/external/fastjet/ClusterSequence_CP2DChan.$(ObjSuf) \ 1207 tmp/external/fastjet/ClusterSequence 1GhostPassiveArea.$(ObjSuf) \1208 tmp/external/fastjet/ GhostedAreaSpec.$(ObjSuf) \1209 tmp/external/fastjet/ Dnn4piCylinder.$(ObjSuf) \1151 tmp/external/fastjet/ClusterSequenceVoronoiArea.$(ObjSuf) \ 1152 tmp/external/fastjet/ClosestPair2D.$(ObjSuf) \ 1153 tmp/external/fastjet/FunctionOfPseudoJet.$(ObjSuf) \ 1210 1154 tmp/external/fastjet/AreaDefinition.$(ObjSuf) \ 1211 tmp/external/fastjet/ClusterSequenceAreaBase.$(ObjSuf) \ 1212 tmp/external/fastjet/ClusterSequence.$(ObjSuf) \ 1213 tmp/external/fastjet/ClusterSequence_TiledN2.$(ObjSuf) \ 1214 tmp/external/fastjet/Dnn3piCylinder.$(ObjSuf) \ 1215 tmp/external/fastjet/ClusterSequenceActiveArea.$(ObjSuf) \ 1216 tmp/external/fastjet/RangeDefinition.$(ObjSuf) \ 1217 tmp/external/fastjet/Dnn2piCylinder.$(ObjSuf) \ 1218 tmp/external/fastjet/LazyTiling9SeparateGhosts.$(ObjSuf) \ 1219 tmp/external/fastjet/Selector.$(ObjSuf) \ 1220 tmp/external/fastjet/ClusterSequenceArea.$(ObjSuf) \ 1221 tmp/external/fastjet/PseudoJet.$(ObjSuf) \ 1222 tmp/external/fastjet/LimitedWarning.$(ObjSuf) \ 1223 tmp/external/fastjet/ClusterSequence_N2.$(ObjSuf) \ 1224 tmp/external/fastjet/ClusterSequenceVoronoiArea.$(ObjSuf) \ 1225 tmp/external/fastjet/FunctionOfPseudoJet.$(ObjSuf) \ 1226 tmp/external/fastjet/ClusterSequenceStructure.$(ObjSuf) \ 1227 tmp/external/fastjet/PseudoJetStructureBase.$(ObjSuf) \ 1228 tmp/external/fastjet/Voronoi.$(ObjSuf) \ 1229 tmp/external/fastjet/CompositeJetStructure.$(ObjSuf) \ 1230 tmp/external/fastjet/ClosestPair2D.$(ObjSuf) \ 1231 tmp/external/fastjet/JetDefinition.$(ObjSuf) \ 1232 tmp/external/fastjet/LazyTiling9Alt.$(ObjSuf) \ 1233 tmp/external/fastjet/DnnPlane.$(ObjSuf) \ 1234 tmp/external/fastjet/RectangularGrid.$(ObjSuf) \ 1235 tmp/external/fastjet/LazyTiling25.$(ObjSuf) \ 1236 tmp/external/fastjet/BasicRandom.$(ObjSuf) \ 1237 tmp/external/fastjet/ClusterSequence_Delaunay.$(ObjSuf) \ 1238 tmp/external/fastjet/ClusterSequencePassiveArea.$(ObjSuf) \ 1239 tmp/external/fastjet/LazyTiling9.$(ObjSuf) \ 1240 tmp/external/fastjet/MinHeap.$(ObjSuf) \ 1155 tmp/external/fastjet/tools/CASubJetTagger.$(ObjSuf) \ 1156 tmp/external/fastjet/tools/TopTaggerBase.$(ObjSuf) \ 1157 tmp/external/fastjet/tools/BackgroundEstimatorBase.$(ObjSuf) \ 1158 tmp/external/fastjet/tools/Subtractor.$(ObjSuf) \ 1159 tmp/external/fastjet/tools/RestFrameNSubjettinessTagger.$(ObjSuf) \ 1241 1160 tmp/external/fastjet/tools/JetMedianBackgroundEstimator.$(ObjSuf) \ 1242 tmp/external/fastjet/tools/ Filter.$(ObjSuf) \1161 tmp/external/fastjet/tools/MassDropTagger.$(ObjSuf) \ 1243 1162 tmp/external/fastjet/tools/JHTopTagger.$(ObjSuf) \ 1244 1163 tmp/external/fastjet/tools/GridMedianBackgroundEstimator.$(ObjSuf) \ 1245 tmp/external/fastjet/tools/TopTaggerBase.$(ObjSuf) \ 1246 tmp/external/fastjet/tools/BackgroundEstimatorBase.$(ObjSuf) \ 1164 tmp/external/fastjet/tools/Filter.$(ObjSuf) \ 1247 1165 tmp/external/fastjet/tools/Pruner.$(ObjSuf) \ 1248 tmp/external/fastjet/tools/RestFrameNSubjettinessTagger.$(ObjSuf) \ 1249 tmp/external/fastjet/tools/CASubJetTagger.$(ObjSuf) \ 1250 tmp/external/fastjet/tools/Recluster.$(ObjSuf) \ 1251 tmp/external/fastjet/tools/MassDropTagger.$(ObjSuf) \ 1252 tmp/external/fastjet/tools/Subtractor.$(ObjSuf) \ 1166 tmp/external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(ObjSuf) \ 1167 tmp/external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(ObjSuf) \ 1168 tmp/external/fastjet/plugins/ATLASCone/Jet.$(ObjSuf) \ 1169 tmp/external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(ObjSuf) \ 1170 tmp/external/fastjet/plugins/NestedDefs/NestedDefsPlugin.$(ObjSuf) \ 1171 tmp/external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(ObjSuf) \ 1172 tmp/external/fastjet/plugins/TrackJet/TrackJetPlugin.$(ObjSuf) \ 1173 tmp/external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(ObjSuf) \ 1174 tmp/external/fastjet/plugins/CDFCones/MidPointAlgorithm.$(ObjSuf) \ 1175 tmp/external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(ObjSuf) \ 1176 tmp/external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(ObjSuf) \ 1177 tmp/external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(ObjSuf) \ 1178 tmp/external/fastjet/plugins/SISCone/geom_2d.$(ObjSuf) \ 1179 tmp/external/fastjet/plugins/SISCone/SISConePlugin.$(ObjSuf) \ 1180 tmp/external/fastjet/plugins/SISCone/siscone.$(ObjSuf) \ 1181 tmp/external/fastjet/plugins/SISCone/hash.$(ObjSuf) \ 1182 tmp/external/fastjet/plugins/SISCone/quadtree.$(ObjSuf) \ 1183 tmp/external/fastjet/plugins/SISCone/area.$(ObjSuf) \ 1184 tmp/external/fastjet/plugins/SISCone/momentum.$(ObjSuf) \ 1185 tmp/external/fastjet/plugins/SISCone/reference.$(ObjSuf) \ 1186 tmp/external/fastjet/plugins/SISCone/ranlux.$(ObjSuf) \ 1187 tmp/external/fastjet/plugins/SISCone/protocones.$(ObjSuf) \ 1188 tmp/external/fastjet/plugins/SISCone/split_merge.$(ObjSuf) \ 1189 tmp/external/fastjet/plugins/SISCone/vicinity.$(ObjSuf) \ 1190 tmp/external/fastjet/plugins/SISCone/siscone_error.$(ObjSuf) \ 1253 1191 tmp/external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.$(ObjSuf) \ 1254 1192 tmp/external/fastjet/plugins/GridJet/GridJetPlugin.$(ObjSuf) \ 1255 tmp/external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.$(ObjSuf) \1256 tmp/external/fastjet/plugins/TrackJet/TrackJetPlugin.$(ObjSuf) \1257 1193 tmp/external/fastjet/plugins/Jade/JadePlugin.$(ObjSuf) \ 1258 tmp/external/fastjet/plugins/ATLASCone/ATLASConePlugin.$(ObjSuf) \1259 tmp/external/fastjet/plugins/ATLASCone/Jet.$(ObjSuf) \1260 tmp/external/fastjet/plugins/ATLASCone/JetSplitMergeTool.$(ObjSuf) \1261 tmp/external/fastjet/plugins/ATLASCone/JetConeFinderTool.$(ObjSuf) \1262 tmp/external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.$(ObjSuf) \1263 tmp/external/fastjet/plugins/CDFCones/JetCluAlgorithm.$(ObjSuf) \1264 tmp/external/fastjet/plugins/CDFCones/CDFJetCluPlugin.$(ObjSuf) \1265 tmp/external/fastjet/plugins/CDFCones/CDFMidPointPlugin.$(ObjSuf) \1266 tmp/external/fastjet/plugins/CDFCones/MidPointAlgorithm.$(ObjSuf) \1267 tmp/external/fastjet/plugins/NestedDefs/NestedDefsPlugin.$(ObjSuf) \1268 1194 tmp/external/fastjet/plugins/EECambridge/EECambridgePlugin.$(ObjSuf) \ 1269 tmp/external/fastjet/plugins/SISCone/quadtree.$(ObjSuf) \ 1270 tmp/external/fastjet/plugins/SISCone/split_merge.$(ObjSuf) \ 1271 tmp/external/fastjet/plugins/SISCone/ranlux.$(ObjSuf) \ 1272 tmp/external/fastjet/plugins/SISCone/momentum.$(ObjSuf) \ 1273 tmp/external/fastjet/plugins/SISCone/reference.$(ObjSuf) \ 1274 tmp/external/fastjet/plugins/SISCone/geom_2d.$(ObjSuf) \ 1275 tmp/external/fastjet/plugins/SISCone/hash.$(ObjSuf) \ 1276 tmp/external/fastjet/plugins/SISCone/protocones.$(ObjSuf) \ 1277 tmp/external/fastjet/plugins/SISCone/SISConePlugin.$(ObjSuf) \ 1278 tmp/external/fastjet/plugins/SISCone/siscone.$(ObjSuf) \ 1279 tmp/external/fastjet/plugins/SISCone/area.$(ObjSuf) \ 1280 tmp/external/fastjet/plugins/SISCone/siscone_error.$(ObjSuf) \ 1281 tmp/external/fastjet/plugins/SISCone/vicinity.$(ObjSuf) \ 1282 tmp/external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.$(ObjSuf) \ 1195 tmp/external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(ObjSuf) \ 1196 tmp/external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(ObjSuf) \ 1197 tmp/external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(ObjSuf) \ 1283 1198 tmp/external/fastjet/contribs/Nsubjettiness/Njettiness.$(ObjSuf) \ 1284 1199 tmp/external/fastjet/contribs/Nsubjettiness/AxesFinder.$(ObjSuf) \ 1285 tmp/external/fastjet/contribs/Nsubjettiness/NjettinessDefinition.$(ObjSuf) \ 1286 tmp/external/fastjet/contribs/Nsubjettiness/Nsubjettiness.$(ObjSuf) \ 1287 tmp/external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.$(ObjSuf) \ 1288 tmp/external/fastjet/contribs/Nsubjettiness/MeasureFunction.$(ObjSuf) \ 1289 tmp/external/fastjet/contribs/SoftKiller/SoftKiller.$(ObjSuf) \ 1290 tmp/external/Hector/H_EllipticAperture.$(ObjSuf) \ 1291 tmp/external/Hector/H_Parameters.$(ObjSuf) \ 1292 tmp/external/Hector/H_RectangularAperture.$(ObjSuf) \ 1200 tmp/external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.$(ObjSuf) \ 1293 1201 tmp/external/Hector/H_Marker.$(ObjSuf) \ 1294 1202 tmp/external/Hector/H_VerticalKicker.$(ObjSuf) \ 1203 tmp/external/Hector/H_BeamLine.$(ObjSuf) \ 1204 tmp/external/Hector/H_RecRPObject.$(ObjSuf) \ 1205 tmp/external/Hector/H_Quadrupole.$(ObjSuf) \ 1206 tmp/external/Hector/H_RectangularDipole.$(ObjSuf) \ 1207 tmp/external/Hector/H_CircularAperture.$(ObjSuf) \ 1295 1208 tmp/external/Hector/H_HorizontalQuadrupole.$(ObjSuf) \ 1296 tmp/external/Hector/H_Beam.$(ObjSuf) \ 1297 tmp/external/Hector/H_BeamLine.$(ObjSuf) \ 1298 tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf) \ 1299 tmp/external/Hector/H_Quadrupole.$(ObjSuf) \ 1300 tmp/external/Hector/H_RecRPObject.$(ObjSuf) \ 1301 tmp/external/Hector/H_TransportMatrices.$(ObjSuf) \ 1302 tmp/external/Hector/H_CircularAperture.$(ObjSuf) \ 1303 tmp/external/Hector/H_Dipole.$(ObjSuf) \ 1304 tmp/external/Hector/H_Drift.$(ObjSuf) \ 1305 tmp/external/Hector/H_BeamParticle.$(ObjSuf) \ 1306 tmp/external/Hector/H_OpticalElement.$(ObjSuf) \ 1307 tmp/external/Hector/H_Kicker.$(ObjSuf) \ 1308 tmp/external/Hector/H_AbstractBeamLine.$(ObjSuf) \ 1209 tmp/external/Hector/H_HorizontalKicker.$(ObjSuf) \ 1210 tmp/external/Hector/H_BeamLineParser.$(ObjSuf) \ 1309 1211 tmp/external/Hector/H_RectEllipticAperture.$(ObjSuf) \ 1310 1212 tmp/external/Hector/H_RectangularCollimator.$(ObjSuf) \ 1311 tmp/external/Hector/H_ RectangularDipole.$(ObjSuf) \1312 tmp/external/Hector/H_ BeamLineParser.$(ObjSuf) \1313 tmp/external/Hector/H_ HorizontalKicker.$(ObjSuf) \1213 tmp/external/Hector/H_SectorDipole.$(ObjSuf) \ 1214 tmp/external/Hector/H_RectangularAperture.$(ObjSuf) \ 1215 tmp/external/Hector/H_RomanPot.$(ObjSuf) \ 1314 1216 tmp/external/Hector/H_Aperture.$(ObjSuf) \ 1315 tmp/external/Hector/H_RomanPot.$(ObjSuf) \ 1316 tmp/external/Hector/H_SectorDipole.$(ObjSuf) 1217 tmp/external/Hector/H_BeamParticle.$(ObjSuf) \ 1218 tmp/external/Hector/H_Beam.$(ObjSuf) \ 1219 tmp/external/Hector/H_Drift.$(ObjSuf) \ 1220 tmp/external/Hector/H_Dipole.$(ObjSuf) \ 1221 tmp/external/Hector/H_OpticalElement.$(ObjSuf) \ 1222 tmp/external/Hector/H_TransportMatrices.$(ObjSuf) \ 1223 tmp/external/Hector/H_Parameters.$(ObjSuf) \ 1224 tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf) \ 1225 tmp/external/Hector/H_AbstractBeamLine.$(ObjSuf) \ 1226 tmp/external/Hector/H_EllipticAperture.$(ObjSuf) \ 1227 tmp/external/Hector/H_Kicker.$(ObjSuf) 1317 1228 1318 1229 ifeq ($(HAS_PYTHIA8),true) … … 1321 1232 endif 1322 1233 1323 tmp/display/DelphesEventDisplay.$(ObjSuf): \1324 display/DelphesEventDisplay.$(SrcSuf) \1325 external/ExRootAnalysis/ExRootConfReader.h \1326 external/ExRootAnalysis/ExRootTreeReader.h \1327 display/DelphesCaloData.h \1328 display/DelphesBranchElement.h \1329 display/Delphes3DGeometry.h \1330 display/DelphesEventDisplay.h \1331 classes/DelphesClasses.h1332 1234 tmp/display/DelphesDisplay.$(ObjSuf): \ 1333 1235 display/DelphesDisplay.$(SrcSuf) \ 1334 1236 display/DelphesDisplay.h 1335 tmp/display/DelphesBranchElement.$(ObjSuf): \1336 display/DelphesBranchElement.$(SrcSuf) \1337 display/DelphesBranchElement.h \1338 classes/DelphesClasses.h1339 1237 tmp/display/DelphesCaloData.$(ObjSuf): \ 1340 1238 display/DelphesCaloData.$(SrcSuf) \ 1341 1239 display/DelphesCaloData.h 1342 tmp/display/DelphesPlotSummary.$(ObjSuf): \1343 display/DelphesPlotSummary.$(SrcSuf) \1344 display/DelphesPlotSummary.h1345 tmp/display/Delphes3DGeometry.$(ObjSuf): \1346 display/Delphes3DGeometry.$(SrcSuf) \1347 display/Delphes3DGeometry.h \1348 external/ExRootAnalysis/ExRootConfReader.h \1349 classes/DelphesClasses.h1350 tmp/display/DelphesHtmlSummary.$(ObjSuf): \1351 display/DelphesHtmlSummary.$(SrcSuf) \1352 display/DelphesHtmlSummary.h1353 1240 DISPLAY_OBJ += \ 1354 tmp/display/DelphesEventDisplay.$(ObjSuf) \1355 1241 tmp/display/DelphesDisplay.$(ObjSuf) \ 1356 tmp/display/DelphesBranchElement.$(ObjSuf) \ 1357 tmp/display/DelphesCaloData.$(ObjSuf) \ 1358 tmp/display/DelphesPlotSummary.$(ObjSuf) \ 1359 tmp/display/Delphes3DGeometry.$(ObjSuf) \ 1360 tmp/display/DelphesHtmlSummary.$(ObjSuf) 1242 tmp/display/DelphesCaloData.$(ObjSuf) 1361 1243 1362 1244 ifeq ($(HAS_PYTHIA8),true) … … 1365 1247 endif 1366 1248 1249 tmp/external/tcl/tclObj.$(ObjSuf): \ 1250 external/tcl/tclObj.c 1251 tmp/external/tcl/tclUtil.$(ObjSuf): \ 1252 external/tcl/tclUtil.c 1253 tmp/external/tcl/tclAsync.$(ObjSuf): \ 1254 external/tcl/tclAsync.c 1255 tmp/external/tcl/tclPosixStr.$(ObjSuf): \ 1256 external/tcl/tclPosixStr.c 1257 tmp/external/tcl/tclCompile.$(ObjSuf): \ 1258 external/tcl/tclCompile.c 1367 1259 tmp/external/tcl/tclHistory.$(ObjSuf): \ 1368 1260 external/tcl/tclHistory.c 1369 tmp/external/tcl/tclAlloc.$(ObjSuf): \1370 external/tcl/tclAlloc.c1371 tmp/external/tcl/tclListObj.$(ObjSuf): \1372 external/tcl/tclListObj.c1373 tmp/external/tcl/tclObj.$(ObjSuf): \1374 external/tcl/tclObj.c1375 1261 tmp/external/tcl/tclResolve.$(ObjSuf): \ 1376 1262 external/tcl/tclResolve.c 1377 1263 tmp/external/tcl/tclParse.$(ObjSuf): \ 1378 1264 external/tcl/tclParse.c 1379 tmp/external/tcl/tclUtil.$(ObjSuf): \1380 external/tcl/tclUtil.c1381 1265 tmp/external/tcl/tclVar.$(ObjSuf): \ 1382 1266 external/tcl/tclVar.c 1267 tmp/external/tcl/tclIndexObj.$(ObjSuf): \ 1268 external/tcl/tclIndexObj.c 1269 tmp/external/tcl/tclCkalloc.$(ObjSuf): \ 1270 external/tcl/tclCkalloc.c 1271 tmp/external/tcl/tclListObj.$(ObjSuf): \ 1272 external/tcl/tclListObj.c 1273 tmp/external/tcl/tclHash.$(ObjSuf): \ 1274 external/tcl/tclHash.c 1275 tmp/external/tcl/tclCmdIL.$(ObjSuf): \ 1276 external/tcl/tclCmdIL.c 1277 tmp/external/tcl/tclStringObj.$(ObjSuf): \ 1278 external/tcl/tclStringObj.c 1279 tmp/external/tcl/tclAlloc.$(ObjSuf): \ 1280 external/tcl/tclAlloc.c 1281 tmp/external/tcl/tclCompExpr.$(ObjSuf): \ 1282 external/tcl/tclCompExpr.c 1283 tmp/external/tcl/tclLink.$(ObjSuf): \ 1284 external/tcl/tclLink.c 1285 tmp/external/tcl/tclCmdAH.$(ObjSuf): \ 1286 external/tcl/tclCmdAH.c 1287 tmp/external/tcl/panic.$(ObjSuf): \ 1288 external/tcl/panic.c 1289 tmp/external/tcl/tclBasic.$(ObjSuf): \ 1290 external/tcl/tclBasic.c 1291 tmp/external/tcl/tclPreserve.$(ObjSuf): \ 1292 external/tcl/tclPreserve.c 1383 1293 tmp/external/tcl/tclGet.$(ObjSuf): \ 1384 1294 external/tcl/tclGet.c 1385 1295 tmp/external/tcl/tclNamesp.$(ObjSuf): \ 1386 1296 external/tcl/tclNamesp.c 1387 tmp/external/tcl/tclCmdIL.$(ObjSuf): \ 1388 external/tcl/tclCmdIL.c 1389 tmp/external/tcl/panic.$(ObjSuf): \ 1390 external/tcl/panic.c 1391 tmp/external/tcl/tclCmdAH.$(ObjSuf): \ 1392 external/tcl/tclCmdAH.c 1393 tmp/external/tcl/tclHash.$(ObjSuf): \ 1394 external/tcl/tclHash.c 1395 tmp/external/tcl/tclIndexObj.$(ObjSuf): \ 1396 external/tcl/tclIndexObj.c 1297 tmp/external/tcl/tclProc.$(ObjSuf): \ 1298 external/tcl/tclProc.c 1299 tmp/external/tcl/tclExecute.$(ObjSuf): \ 1300 external/tcl/tclExecute.c 1397 1301 tmp/external/tcl/tclCmdMZ.$(ObjSuf): \ 1398 1302 external/tcl/tclCmdMZ.c 1399 tmp/external/tcl/tclBasic.$(ObjSuf): \1400 external/tcl/tclBasic.c1401 tmp/external/tcl/tclProc.$(ObjSuf): \1402 external/tcl/tclProc.c1403 tmp/external/tcl/tclLink.$(ObjSuf): \1404 external/tcl/tclLink.c1405 tmp/external/tcl/tclPosixStr.$(ObjSuf): \1406 external/tcl/tclPosixStr.c1407 tmp/external/tcl/tclPreserve.$(ObjSuf): \1408 external/tcl/tclPreserve.c1409 tmp/external/tcl/tclCkalloc.$(ObjSuf): \1410 external/tcl/tclCkalloc.c1411 tmp/external/tcl/tclStringObj.$(ObjSuf): \1412 external/tcl/tclStringObj.c1413 tmp/external/tcl/tclAsync.$(ObjSuf): \1414 external/tcl/tclAsync.c1415 tmp/external/tcl/tclExecute.$(ObjSuf): \1416 external/tcl/tclExecute.c1417 tmp/external/tcl/tclCompile.$(ObjSuf): \1418 external/tcl/tclCompile.c1419 tmp/external/tcl/tclCompExpr.$(ObjSuf): \1420 external/tcl/tclCompExpr.c1421 1303 TCL_OBJ += \ 1304 tmp/external/tcl/tclObj.$(ObjSuf) \ 1305 tmp/external/tcl/tclUtil.$(ObjSuf) \ 1306 tmp/external/tcl/tclAsync.$(ObjSuf) \ 1307 tmp/external/tcl/tclPosixStr.$(ObjSuf) \ 1308 tmp/external/tcl/tclCompile.$(ObjSuf) \ 1422 1309 tmp/external/tcl/tclHistory.$(ObjSuf) \ 1423 tmp/external/tcl/tclAlloc.$(ObjSuf) \1424 tmp/external/tcl/tclListObj.$(ObjSuf) \1425 tmp/external/tcl/tclObj.$(ObjSuf) \1426 1310 tmp/external/tcl/tclResolve.$(ObjSuf) \ 1427 1311 tmp/external/tcl/tclParse.$(ObjSuf) \ 1428 tmp/external/tcl/tclUtil.$(ObjSuf) \1429 1312 tmp/external/tcl/tclVar.$(ObjSuf) \ 1313 tmp/external/tcl/tclIndexObj.$(ObjSuf) \ 1314 tmp/external/tcl/tclCkalloc.$(ObjSuf) \ 1315 tmp/external/tcl/tclListObj.$(ObjSuf) \ 1316 tmp/external/tcl/tclHash.$(ObjSuf) \ 1317 tmp/external/tcl/tclCmdIL.$(ObjSuf) \ 1318 tmp/external/tcl/tclStringObj.$(ObjSuf) \ 1319 tmp/external/tcl/tclAlloc.$(ObjSuf) \ 1320 tmp/external/tcl/tclCompExpr.$(ObjSuf) \ 1321 tmp/external/tcl/tclLink.$(ObjSuf) \ 1322 tmp/external/tcl/tclCmdAH.$(ObjSuf) \ 1323 tmp/external/tcl/panic.$(ObjSuf) \ 1324 tmp/external/tcl/tclBasic.$(ObjSuf) \ 1325 tmp/external/tcl/tclPreserve.$(ObjSuf) \ 1430 1326 tmp/external/tcl/tclGet.$(ObjSuf) \ 1431 1327 tmp/external/tcl/tclNamesp.$(ObjSuf) \ 1432 tmp/external/tcl/tclCmdIL.$(ObjSuf) \1433 tmp/external/tcl/panic.$(ObjSuf) \1434 tmp/external/tcl/tclCmdAH.$(ObjSuf) \1435 tmp/external/tcl/tclHash.$(ObjSuf) \1436 tmp/external/tcl/tclIndexObj.$(ObjSuf) \1437 tmp/external/tcl/tclCmdMZ.$(ObjSuf) \1438 tmp/external/tcl/tclBasic.$(ObjSuf) \1439 1328 tmp/external/tcl/tclProc.$(ObjSuf) \ 1440 tmp/external/tcl/tclLink.$(ObjSuf) \1441 tmp/external/tcl/tclPosixStr.$(ObjSuf) \1442 tmp/external/tcl/tclPreserve.$(ObjSuf) \1443 tmp/external/tcl/tclCkalloc.$(ObjSuf) \1444 tmp/external/tcl/tclStringObj.$(ObjSuf) \1445 tmp/external/tcl/tclAsync.$(ObjSuf) \1446 1329 tmp/external/tcl/tclExecute.$(ObjSuf) \ 1447 tmp/external/tcl/tclCompile.$(ObjSuf) \ 1448 tmp/external/tcl/tclCompExpr.$(ObjSuf) 1330 tmp/external/tcl/tclCmdMZ.$(ObjSuf) 1449 1331 1450 1332 external/fastjet/internal/ClosestPair2D.hh: \ … … 1464 1346 @touch $@ 1465 1347 1466 modules/FastJetGridMedianEstimator.h: \1467 classes/DelphesModule.h1468 @touch $@1469 1470 1348 external/fastjet/internal/MinHeap.hh: \ 1471 1349 external/fastjet/internal/base.hh … … 1493 1371 external/fastjet/JetDefinition.hh: \ 1494 1372 external/fastjet/internal/numconsts.hh \ 1495 external/fastjet/PseudoJet.hh \ 1496 external/fastjet/ClusterSequence.hh 1373 external/fastjet/PseudoJet.hh 1497 1374 @touch $@ 1498 1375 … … 1509 1386 @touch $@ 1510 1387 1511 modules/AngularSmearing.h: \ 1512 classes/DelphesModule.h 1513 @touch $@ 1514 1515 modules/IdentificationMap.h: \ 1388 modules/Isolation.h: \ 1389 classes/DelphesModule.h 1390 @touch $@ 1391 1392 modules/EnergyScale.h: \ 1393 classes/DelphesModule.h 1394 @touch $@ 1395 1396 modules/Merger.h: \ 1516 1397 classes/DelphesModule.h 1517 1398 @touch $@ 1518 1399 1519 1400 modules/ExampleModule.h: \ 1520 classes/DelphesModule.h1521 @touch $@1522 1523 modules/Isolation.h: \1524 classes/DelphesModule.h1525 @touch $@1526 1527 modules/EnergyScale.h: \1528 classes/DelphesModule.h1529 @touch $@1530 1531 modules/Merger.h: \1532 1401 classes/DelphesModule.h 1533 1402 @touch $@ … … 1548 1417 @touch $@ 1549 1418 1550 external/fastjet/internal/LazyTiling25.hh: \1551 external/fastjet/internal/MinHeap.hh \1552 external/fastjet/ClusterSequence.hh \1553 external/fastjet/internal/LazyTiling9Alt.hh \1554 external/fastjet/internal/LazyTiling9.hh1555 @touch $@1556 1557 1419 external/fastjet/Error.hh: \ 1558 external/fastjet/internal/base.hh \ 1559 external/fastjet/config.h \ 1560 external/fastjet/LimitedWarning.hh 1420 external/fastjet/internal/base.hh 1561 1421 @touch $@ 1562 1422 1563 1423 external/fastjet/contribs/Nsubjettiness/Njettiness.hh: \ 1564 external/fastjet/PseudoJet.hh \ 1565 external/fastjet/SharedPtr.hh 1566 @touch $@ 1567 1568 external/fastjet/internal/TilingExtent.hh: \ 1569 external/fastjet/ClusterSequence.hh 1424 external/fastjet/PseudoJet.hh 1570 1425 @touch $@ 1571 1426 … … 1576 1431 modules/TrackPileUpSubtractor.h: \ 1577 1432 classes/DelphesModule.h 1433 @touch $@ 1434 1435 external/fastjet/tools/GridMedianBackgroundEstimator.hh: \ 1436 external/fastjet/tools/BackgroundEstimatorBase.hh 1578 1437 @touch $@ 1579 1438 … … 1581 1440 external/fastjet/internal/Triangulation.hh \ 1582 1441 external/fastjet/internal/DynamicNearestNeighbours.hh 1583 @touch $@1584 1585 external/fastjet/tools/GridMedianBackgroundEstimator.hh: \1586 external/fastjet/tools/BackgroundEstimatorBase.hh \1587 external/fastjet/RectangularGrid.hh1588 1442 @touch $@ 1589 1443 … … 1597 1451 @touch $@ 1598 1452 1599 external/fastjet/internal/LazyTiling9Alt.hh: \1600 external/fastjet/internal/MinHeap.hh \1601 external/fastjet/ClusterSequence.hh1602 @touch $@1603 1604 1453 external/fastjet/ClusterSequence1GhostPassiveArea.hh: \ 1605 1454 external/fastjet/PseudoJet.hh \ … … 1608 1457 @touch $@ 1609 1458 1610 external/fastjet/RectangularGrid.hh: \1611 external/fastjet/PseudoJet.hh \1612 external/fastjet/Selector.hh1613 @touch $@1614 1615 1459 modules/PileUpMerger.h: \ 1616 1460 classes/DelphesModule.h 1617 1461 @touch $@ 1618 1462 1619 display/DelphesBranchElement.h: \1620 display/DelphesCaloData.h1621 @touch $@1622 1623 1463 external/fastjet/internal/DynamicNearestNeighbours.hh: \ 1624 external/fastjet/internal/numconsts.hh \ 1625 external/fastjet/Error.hh 1464 external/fastjet/internal/numconsts.hh 1626 1465 @touch $@ 1627 1466 … … 1649 1488 @touch $@ 1650 1489 1651 external/fastjet/internal/LazyTiling9.hh: \1652 external/fastjet/internal/MinHeap.hh \1653 external/fastjet/ClusterSequence.hh \1654 external/fastjet/internal/LazyTiling9Alt.hh1655 @touch $@1656 1657 1490 modules/PileUpJetID.h: \ 1658 1491 classes/DelphesModule.h … … 1665 1498 modules/MomentumSmearing.h: \ 1666 1499 classes/DelphesModule.h 1667 @touch $@1668 1669 display/DelphesEventDisplay.h: \1670 external/ExRootAnalysis/ExRootTreeReader.h \1671 display/DelphesDisplay.h \1672 display/Delphes3DGeometry.h \1673 display/DelphesHtmlSummary.h \1674 display/DelphesPlotSummary.h1675 1500 @touch $@ 1676 1501 … … 1718 1543 @touch $@ 1719 1544 1720 modules/PdgCodeFilter.h: \1721 classes/DelphesModule.h1722 @touch $@1723 1724 1545 external/fastjet/plugins/CDFCones/fastjet/CDFMidPointPlugin.hh: \ 1725 1546 external/fastjet/JetDefinition.hh … … 1757 1578 @touch $@ 1758 1579 1580 modules/ImpactParameterSmearing.h: \ 1581 classes/DelphesModule.h 1582 @touch $@ 1583 1759 1584 modules/Hector.h: \ 1760 1585 classes/DelphesModule.h 1761 @touch $@1762 1763 modules/ImpactParameterSmearing.h: \1764 classes/DelphesModule.h1765 @touch $@1766 1767 display/DelphesPlotSummary.h: \1768 external/ExRootAnalysis/ExRootTreeReader.h1769 1586 @touch $@ 1770 1587 … … 1791 1608 1792 1609 external/fastjet/tools/Subtractor.hh: \ 1793 external/fastjet/internal/base.hh \1794 1610 external/fastjet/tools/Transformer.hh \ 1795 1611 external/fastjet/tools/BackgroundEstimatorBase.hh 1796 1612 @touch $@ 1797 1613 1798 external/fastjet/internal/LazyTiling9SeparateGhosts.hh: \ 1799 external/fastjet/internal/MinHeap.hh \ 1800 external/fastjet/ClusterSequence.hh \ 1801 external/fastjet/internal/LazyTiling9Alt.hh 1614 external/fastjet/AreaDefinition.hh: \ 1615 external/fastjet/GhostedAreaSpec.hh 1802 1616 @touch $@ 1803 1617 … … 1808 1622 @touch $@ 1809 1623 1810 external/fastjet/AreaDefinition.hh: \1811 external/fastjet/GhostedAreaSpec.hh1812 @touch $@1813 1814 1624 modules/TimeSmearing.h: \ 1815 1625 classes/DelphesModule.h … … 1834 1644 @touch $@ 1835 1645 1646 external/fastjet/config.h: \ 1647 external/fastjet/config_win.h 1648 @touch $@ 1649 1836 1650 external/fastjet/LimitedWarning.hh: \ 1837 1651 external/fastjet/internal/base.hh 1838 @touch $@1839 1840 external/fastjet/config.h: \1841 external/fastjet/config_win.h1842 1652 @touch $@ 1843 1653 -
display/DelphesHtmlSummary.cc
racf622f r2e8de36 1 /*2 * Delphes: a framework for fast simulation of a generic collider experiment3 * Copyright (C) 2012-2014 Universite catholique de Louvain (UCL), Belgium4 *5 * This program is free software: you can redistribute it and/or modify6 * it under the terms of the GNU General Public License as published by7 * the Free Software Foundation, either version 3 of the License, or8 * (at your option) any later version.9 *10 * This program is distributed in the hope that it will be useful,11 * but WITHOUT ANY WARRANTY; without even the implied warranty of12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the13 * GNU General Public License for more details.14 *15 * You should have received a copy of the GNU General Public License16 * along with this program. If not, see <http://www.gnu.org/licenses/>.17 */18 19 1 #include "display/DelphesHtmlSummary.h" 20 2 #include "TGHtml.h" -
display/DelphesHtmlSummary.h
racf622f r2e8de36 1 /*2 * Delphes: a framework for fast simulation of a generic collider experiment3 * Copyright (C) 2012-2014 Universite catholique de Louvain (UCL), Belgium4 *5 * This program is free software: you can redistribute it and/or modify6 * it under the terms of the GNU General Public License as published by7 * the Free Software Foundation, either version 3 of the License, or8 * (at your option) any later version.9 *10 * This program is distributed in the hope that it will be useful,11 * but WITHOUT ANY WARRANTY; without even the implied warranty of12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the13 * GNU General Public License for more details.14 *15 * You should have received a copy of the GNU General Public License16 * along with this program. If not, see <http://www.gnu.org/licenses/>.17 */18 19 1 // Delphes HTML table for the event display. 20 2 // Based on the ROOT example "alice_esd_html_summary.C" -
display/DelphesPlotSummary.cc
racf622f r2e8de36 1 /*2 * Delphes: a framework for fast simulation of a generic collider experiment3 * Copyright (C) 2012-2014 Universite catholique de Louvain (UCL), Belgium4 *5 * This program is free software: you can redistribute it and/or modify6 * it under the terms of the GNU General Public License as published by7 * the Free Software Foundation, either version 3 of the License, or8 * (at your option) any later version.9 *10 * This program is distributed in the hope that it will be useful,11 * but WITHOUT ANY WARRANTY; without even the implied warranty of12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the13 * GNU General Public License for more details.14 *15 * You should have received a copy of the GNU General Public License16 * along with this program. If not, see <http://www.gnu.org/licenses/>.17 */18 19 1 #include "display/DelphesPlotSummary.h" 20 2 #include "TRootEmbeddedCanvas.h" -
display/DelphesPlotSummary.h
racf622f r2e8de36 1 /*2 * Delphes: a framework for fast simulation of a generic collider experiment3 * Copyright (C) 2012-2014 Universite catholique de Louvain (UCL), Belgium4 *5 * This program is free software: you can redistribute it and/or modify6 * it under the terms of the GNU General Public License as published by7 * the Free Software Foundation, either version 3 of the License, or8 * (at your option) any later version.9 *10 * This program is distributed in the hope that it will be useful,11 * but WITHOUT ANY WARRANTY; without even the implied warranty of12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the13 * GNU General Public License for more details.14 *15 * You should have received a copy of the GNU General Public License16 * along with this program. If not, see <http://www.gnu.org/licenses/>.17 */18 19 1 #ifndef DelphesPlotSummary_h 20 2 #define DelphesPlotSummary_h -
doc/genMakefile.tcl
racf622f r2e8de36 208 208 CXXFLAGS += $(ROOTCFLAGS) -Wno-write-strings -D_FILE_OFFSET_BITS=64 -DDROP_CGAL -I. -Iexternal -Iexternal/tcl 209 209 DELPHES_LIBS = $(shell $(RC) --libs) -lEG $(SYSLIBS) 210 DISPLAY_LIBS = $(shell $(RC) --evelibs) -lGuiHtml$(SYSLIBS)210 DISPLAY_LIBS = $(shell $(RC) --evelibs) $(SYSLIBS) 211 211 212 212 ifneq ($(CMSSW_FWLITE_INCLUDE_PATH),) 213 213 HAS_CMSSW = true 214 214 CXXFLAGS += -std=c++0x -I$(subst :, -I,$(CMSSW_FWLITE_INCLUDE_PATH)) 215 OPT_LIBS += -L$(subst include,lib,$(subst :, -L,$(CMSSW_FWLITE_INCLUDE_PATH)))215 DELPHES_LIBS += -L$(subst include,lib,$(subst :, -L,$(CMSSW_FWLITE_INCLUDE_PATH))) 216 216 ifneq ($(CMSSW_RELEASE_BASE),) 217 217 CXXFLAGS += -I$(CMSSW_RELEASE_BASE)/src 218 218 endif 219 219 ifneq ($(LD_LIBRARY_PATH),) 220 OPT_LIBS += -L$(subst include,lib,$(subst :, -L,$(LD_LIBRARY_PATH)))221 endif 222 OPT_LIBS += -lGenVector -lFWCoreFWLite -lDataFormatsFWLite -lDataFormatsPatCandidates -lDataFormatsLuminosity -lSimDataFormatsGeneratorProducts -lCommonToolsUtils220 DELPHES_LIBS += -L$(subst include,lib,$(subst :, -L,$(LD_LIBRARY_PATH))) 221 endif 222 DELPHES_LIBS += -lGenVector -lFWCoreFWLite -lDataFormatsFWLite -lDataFormatsPatCandidates -lDataFormatsLuminosity -lSimDataFormatsGeneratorProducts -lCommonToolsUtils 223 223 endif 224 224 225 225 ifneq ($(PROMC),) 226 226 HAS_PROMC = true 227 CXXFLAGS += -I$(PROMC)/include -I$(PROMC)/src228 OPT_LIBS += -L$(PROMC)/lib -lpromc-lprotoc -lprotobuf -lprotobuf-lite -lcbook -lz227 CXXFLAGS += -I$(PROMC)/include 228 DELPHES_LIBS += -L$(PROMC)/lib -lprotoc -lprotobuf -lprotobuf-lite -lcbook -lz 229 229 endif 230 230 … … 232 232 HAS_PYTHIA8 = true 233 233 CXXFLAGS += -I$(PYTHIA8)/include 234 OPT_LIBS += -L$(PYTHIA8)/lib -lpythia8 -lLHAPDF -lgfortran -lz234 DELPHES_LIBS += -L$(PYTHIA8)/lib -lpythia8 -lLHAPDF -lgfortran -lz 235 235 else 236 236 ifneq ($(PYTHIA8DATA),) 237 237 HAS_PYTHIA8 = true 238 238 CXXFLAGS += -I$(PYTHIA8DATA)/../include 239 OPT_LIBS += -L$(PYTHIA8DATA)/../lib -lpythia8 -lLHAPDF -lgfortran -lz 240 endif 241 endif 242 243 DELPHES_LIBS += $(OPT_LIBS) 244 DISPLAY_LIBS += $(OPT_LIBS) 239 DELPHES_LIBS += -L$(PYTHIA8DATA)/../lib -lpythia8 -lLHAPDF -lgfortran -lz 240 endif 241 endif 245 242 246 243 ### … … 271 268 puts {ifeq ($(HAS_PROMC),true)} 272 269 executableDeps {readers/DelphesProMC.cpp} 270 sourceDeps {DELPHES} {external/ProMC/*.cc} 273 271 puts {endif} 274 272 puts {} -
doc/update_fastjet.sh
racf622f r2e8de36 1 version=3. 1.01 version=3.0.6 2 2 3 3 #wget http://fastjet.fr/repo/fastjet-${version}.tar.gz … … 90 90 cp -a ../../fastjet-${version}/plugins/TrackJet/fastjet/*.hh TrackJet/fastjet 91 91 92 sed -i 's/#include "fastjet\//#include "/' D0RunICone/fastjet/D0RunIpre96ConePlugin.hh93 sed -i 's/#include "fastjet\//#include "/' D0RunICone/fastjet/D0RunIConePlugin.hh94 95 sed -i 's/#include "siscone\//#include "/' SISCone/SISConePlugin.cc96 97 92 cd - -
examples/Example1.C
racf622f r2e8de36 1 1 /* 2 Simple macro showing how to access branches from the delphes output root file,3 loop over events, and plot simple quantities such as the jet pt and the di-electron invariant4 mass.5 6 2 root -l examples/Example1.C'("delphes_output.root")' 7 3 */ … … 45 41 46 42 // Print jet transverse momentum 47 cout << "Jet pt: "<<jet->PT << endl;43 cout << jet->PT << endl; 48 44 } 49 45 … … 66 62 histMass->Draw(); 67 63 } 68 -
examples/Example2.C
racf622f r2e8de36 1 1 /* 2 Simple macro showing how to access branches from the delphes output root file,3 loop over events, store histograms in a root file and print them as image files.4 5 2 root -l examples/Example2.C'("delphes_output.root")' 6 3 */ -
examples/Example3.C
racf622f r2e8de36 1 1 /* 2 This macro shows how to access the particle-level reference for reconstructed objects.3 It is also shown how to loop over the jet constituents.4 5 2 root -l examples/Example3.C'("delphes_output.root")' 6 3 */ … … 39 36 40 37 plots->fElectronDeltaPT = result->AddHist1D( 41 "electron _delta_pt", "(p_{T}^{particle} - p_{T}^{electron})/p_{T}^{particle}",38 "electron delta pt", "(p_{T}^{particle} - p_{T}^{electron})/p_{T}^{particle}", 42 39 "(p_{T}^{particle} - p_{T}^{electron})/p_{T}^{particle}", "number of electrons", 43 40 100, -0.1, 0.1); 44 41 45 42 plots->fElectronDeltaEta = result->AddHist1D( 46 "electron _delta_eta", "(#eta^{particle} - #eta^{electron})/#eta^{particle}",43 "electron delta eta", "(#eta^{particle} - #eta^{electron})/#eta^{particle}", 47 44 "(#eta^{particle} - #eta^{electron})/#eta^{particle}", "number of electrons", 48 45 100, -0.1, 0.1); 49 46 50 47 plots->fPhotonDeltaPT = result->AddHist1D( 51 "photon _delta_pt", "(p_{T}^{particle} - p_{T}^{photon})/p_{T}^{particle}",48 "photon delta pt", "(p_{T}^{particle} - p_{T}^{photon})/p_{T}^{particle}", 52 49 "(p_{T}^{particle} - p_{T}^{photon})/p_{T}^{particle}", "number of photons", 53 50 100, -0.1, 0.1); 54 51 55 52 plots->fPhotonDeltaEta = result->AddHist1D( 56 "photon _delta_eta", "(#eta^{particle} - #eta^{photon})/#eta^{particle}",53 "photon delta eta", "(#eta^{particle} - #eta^{photon})/#eta^{particle}", 57 54 "(#eta^{particle} - #eta^{photon})/#eta^{particle}", "number of photons", 58 55 100, -0.1, 0.1); 59 56 60 57 plots->fPhotonDeltaE = result->AddHist1D( 61 "photon _delta_energy", "(E^{particle} - E^{photon})/E^{particle}",58 "photon delta energy", "(E^{particle} - E^{photon})/E^{particle}", 62 59 "(E^{particle} - E^{photon})/E^{particle}", "number of photons", 63 60 100, -0.1, 0.1); 64 61 65 62 plots->fMuonDeltaPT = result->AddHist1D( 66 "muon _delta_pt", "(p_{T}^{particle} - p_{T}^{muon})/p_{T}^{particle}",63 "muon delta pt", "(p_{T}^{particle} - p_{T}^{muon})/p_{T}^{particle}", 67 64 "(p_{T}^{particle} - p_{T}^{muon})/p_{T}^{particle}", "number of muons", 68 65 100, -0.1, 0.1); 69 66 70 67 plots->fMuonDeltaEta = result->AddHist1D( 71 "muon _delta_eta", "(#eta^{particle} - #eta^{muon})/#eta^{particle}",68 "muon delta eta", "(#eta^{particle} - #eta^{muon})/#eta^{particle}", 72 69 "(#eta^{particle} - #eta^{muon})/#eta^{particle}", "number of muons", 73 70 100, -0.1, 0.1); 74 71 75 72 plots->fTrackDeltaPT = result->AddHist1D( 76 "track _delta_pt", "(p_{T}^{particle} - p_{T}^{track})/p_{T}^{particle}",73 "track delta pt", "(p_{T}^{particle} - p_{T}^{track})/p_{T}^{particle}", 77 74 "(p_{T}^{particle} - p_{T}^{track})/p_{T}^{particle}", "number of tracks", 78 75 100, -0.1, 0.1); 79 76 80 77 plots->fTrackDeltaEta = result->AddHist1D( 81 "track _delta_eta", "(#eta^{particle} - #eta^{track})/#eta^{particle}",78 "track delta eta", "(#eta^{particle} - #eta^{track})/#eta^{particle}", 82 79 "(#eta^{particle} - #eta^{track})/#eta^{particle}", "number of tracks", 83 80 100, -0.1, 0.1); 84 81 85 82 plots->fJetDeltaPT = result->AddHist1D( 86 "jet _delta_pt", "(p_{T}^{jet} - p_{T}^{constituents})/p_{T}^{jet}",83 "jet delta pt", "(p_{T}^{jet} - p_{T}^{constituents})/p_{T}^{jet}", 87 84 "(p_{T}^{jet} - p_{T}^{constituents})/p_{T}^{jet}", "number of jets", 88 85 100, -1.0e-1, 1.0e-1); … … 182 179 } 183 180 184 //cout<<"-- New event -- "<<endl;181 cout<<"-- New event -- "<<endl; 185 182 186 183 // Loop over all jets in event … … 191 188 momentum.SetPxPyPzE(0.0, 0.0, 0.0, 0.0); 192 189 193 //cout<<"Looping over jet constituents. Jet pt: "<<jet->PT<<", eta: "<<jet->Eta<<", phi: "<<jet->Phi<<endl;190 cout<<"Looping over jet constituents. Jet pt: "<<jet->PT<<", eta: "<<jet->Eta<<", phi: "<<jet->Phi<<endl; 194 191 195 192 // Loop over all jet's constituents … … 204 201 { 205 202 particle = (GenParticle*) object; 206 //cout << " GenPart pt: " << particle->PT << ", eta: " << particle->Eta << ", phi: " << particle->Phi << endl;203 cout << " GenPart pt: " << particle->PT << ", eta: " << particle->Eta << ", phi: " << particle->Phi << endl; 207 204 momentum += particle->P4(); 208 205 } … … 210 207 { 211 208 track = (Track*) object; 212 //cout << " Track pt: " << track->PT << ", eta: " << track->Eta << ", phi: " << track->Phi << endl;209 cout << " Track pt: " << track->PT << ", eta: " << track->Eta << ", phi: " << track->Phi << endl; 213 210 momentum += track->P4(); 214 211 } … … 216 213 { 217 214 tower = (Tower*) object; 218 //cout << " Tower pt: " << tower->ET << ", eta: " << tower->Eta << ", phi: " << tower->Phi << endl;215 cout << " Tower pt: " << tower->ET << ", eta: " << tower->Eta << ", phi: " << tower->Phi << endl; 219 216 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(); 220 223 } 221 224 } -
examples/delphes_card_ATLAS.tcl
racf622f r2e8de36 29 29 MissingET 30 30 31 NeutrinoFilter32 31 GenJetFinder 33 32 FastJetFinder … … 207 206 set PhotonOutputArray photons 208 207 209 set EcalTowerMinEnergy 0.50210 set HcalTowerMinEnergy 1.00211 212 set EcalTowerMinSignificance 1.0213 set HcalTowerMinSignificance 1.0214 215 208 set EFlowTrackOutputArray eflowTracks 216 209 set EFlowPhotonOutputArray eflowPhotons … … 273 266 set HCalResolutionFormula { (abs(eta) <= 1.7) * sqrt(energy^2*0.0302^2 + energy*0.5205^2 + 1.59^2) + \ 274 267 (abs(eta) > 1.7 && abs(eta) <= 3.2) * sqrt(energy^2*0.0500^2 + energy*0.706^2) + \ 275 (abs(eta) > 3.2 && abs(eta) <= 4.9) * sqrt(energy^2*0. 09420^2 + energy*1.00^2)}268 (abs(eta) > 3.2 && abs(eta) <= 4.9) * sqrt(energy^2*0.9420^2 + energy*0.075^2)} 276 269 } 277 270 … … 413 406 } 414 407 415 416 #####################417 # Neutrino Filter418 #####################419 420 module PdgCodeFilter NeutrinoFilter {421 422 set InputArray Delphes/stableParticles423 set OutputArray filteredParticles424 425 set PTMin 0.0426 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 436 408 ##################### 437 409 # MC truth jet finder … … 439 411 440 412 module FastJetFinder GenJetFinder { 441 set InputArray NeutrinoFilter/filteredParticles413 set InputArray Delphes/stableParticles 442 414 443 415 set OutputArray jets … … 450 422 } 451 423 452 453 424 ############ 454 425 # Jet finder … … 475 446 set OutputArray jets 476 447 477 # scale formula for jets478 set ScaleFormula { sqrt( (3.0 - 0.2*(abs(eta)))^2 / pt + 1.0 )}448 # scale formula for jets 449 set ScaleFormula {1.00} 479 450 } 480 451 -
examples/delphes_card_ATLAS_PileUp.tcl
racf622f r2e8de36 20 20 TrackPileUpSubtractor 21 21 NeutralTowerMerger 22 EFlowMergerAllTracks23 22 EFlowMerger 24 25 NeutrinoFilter 23 26 24 GenJetFinder 27 25 … … 248 246 set TowerOutputArray towers 249 247 set PhotonOutputArray photons 250 251 set EcalTowerMinEnergy 0.50252 set HcalTowerMinEnergy 1.00253 254 set EcalTowerMinSignificance 1.0255 set HcalTowerMinSignificance 1.0256 248 257 249 set EFlowTrackOutputArray eflowTracks … … 315 307 set HCalResolutionFormula { (abs(eta) <= 1.7) * sqrt(energy^2*0.0302^2 + energy*0.5205^2 + 1.59^2) + \ 316 308 (abs(eta) > 1.7 && abs(eta) <= 3.2) * sqrt(energy^2*0.0500^2 + energy*0.706^2) + \ 317 (abs(eta) > 3.2 && abs(eta) <= 4.9) * sqrt(energy^2*0. 09420^2 + energy*1.00^2)}309 (abs(eta) > 3.2 && abs(eta) <= 4.9) * sqrt(energy^2*0.9420^2 + energy*0.075^2)} 318 310 } 319 311 … … 342 334 add InputArray Calorimeter/eflowNeutralHadrons 343 335 set OutputArray eflowTowers 344 }345 346 ##################################347 # Energy flow merger (all tracks)348 ##################################349 350 module Merger EFlowMergerAllTracks {351 # add InputArray InputArray352 add InputArray TrackMerger/tracks353 add InputArray Calorimeter/eflowPhotons354 add InputArray Calorimeter/eflowNeutralHadrons355 set OutputArray eflow356 336 } 357 337 … … 369 349 } 370 350 351 371 352 ############# 372 353 # Rho pile-up 373 354 ############# 374 355 375 module FastJetGridMedianEstimator Rho { 376 356 module FastJetFinder Rho { 377 357 set InputArray Calorimeter/towers 358 359 set ComputeRho true 378 360 set RhoOutputArray rho 379 361 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 392 module 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 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 406 374 } 407 375 … … 411 379 412 380 module FastJetFinder GenJetFinder { 413 set InputArray NeutrinoFilter/filteredParticles381 set InputArray Delphes/stableParticles 414 382 415 383 set OutputArray jets … … 577 545 module Merger MissingET { 578 546 # add InputArray InputArray 579 add InputArray EFlowMerger AllTracks/eflow547 add InputArray EFlowMerger/eflow 580 548 set MomentumOutputArray momentum 581 549 } … … 676 644 677 645 # add Branch TrackMerger/tracks Track Track 678 add Branch Calorimeter/towers Tower Tower646 # add Branch Calorimeter/towers Tower Tower 679 647 680 648 # add Branch Calorimeter/eflowTracks EFlowTrack Track -
examples/delphes_card_CMS.tcl
racf622f r2e8de36 29 29 MissingET 30 30 31 NeutrinoFilter32 31 GenJetFinder 33 32 FastJetFinder … … 212 211 set PhotonOutputArray photons 213 212 214 set EcalTowerMinEnergy 0.5215 set HcalTowerMinEnergy 1.0216 217 set EcalTowerMinSignificance 1.0218 set HcalTowerMinSignificance 1.0219 220 213 set EFlowTrackOutputArray eflowTracks 221 214 set EFlowPhotonOutputArray eflowPhotons … … 423 416 } 424 417 425 426 #####################427 # Neutrino Filter428 #####################429 430 module PdgCodeFilter NeutrinoFilter {431 432 set InputArray Delphes/stableParticles433 set OutputArray filteredParticles434 435 set PTMin 0.0436 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 447 418 ##################### 448 419 # MC truth jet finder … … 450 421 451 422 module FastJetFinder GenJetFinder { 452 set InputArray NeutrinoFilter/filteredParticles423 set InputArray Delphes/stableParticles 453 424 454 425 set OutputArray jets … … 461 432 } 462 433 463 464 465 466 434 ############ 467 435 # Jet finder … … 489 457 set OutputArray jets 490 458 491 492 set ScaleFormula { sqrt( (2.5 - 0.15*(abs(eta)))^2 / pt + 1.0 )}459 # scale formula for jets 460 set ScaleFormula {1.00} 493 461 } 494 462 -
examples/delphes_card_CMS_PileUp.tcl
racf622f r2e8de36 1 1 2 ####################################### 2 3 # Order of execution of various modules … … 20 21 TrackPileUpSubtractor 21 22 NeutralTowerMerger 22 EFlowMergerAllTracks23 23 EFlowMerger 24 25 NeutrinoFilter 24 26 25 GenJetFinder 27 26 … … 68 67 69 68 # average expected pile up 70 set MeanPileUp 5069 set MeanPileUp 10 71 70 72 71 # maximum spread in the beam direction in m … … 254 253 set TowerOutputArray towers 255 254 set PhotonOutputArray photons 256 257 set EcalTowerMinEnergy 0.5258 set HcalTowerMinEnergy 1.0259 260 set EcalTowerMinSignificance 1.0261 set HcalTowerMinSignificance 1.0262 255 263 256 set EFlowTrackOutputArray eflowTracks … … 354 347 } 355 348 356 ##################################357 # Energy flow merger (all tracks)358 ##################################359 360 module Merger EFlowMergerAllTracks {361 # add InputArray InputArray362 add InputArray TrackMerger/tracks363 add InputArray Calorimeter/eflowPhotons364 add InputArray Calorimeter/eflowNeutralHadrons365 set OutputArray eflow366 }367 368 349 369 350 #################### … … 380 361 381 362 382 383 363 ############# 384 364 # Rho pile-up 385 365 ############# 386 366 387 module FastJet GridMedianEstimator Rho {388 367 module FastJetFinder Rho { 368 # set InputArray Calorimeter/towers 389 369 set InputArray EFlowMerger/eflow 370 371 set ComputeRho true 390 372 set RhoOutputArray rho 391 373 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 403 module 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 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 } 420 387 421 388 ##################### … … 424 391 425 392 module FastJetFinder GenJetFinder { 426 set InputArray NeutrinoFilter/filteredParticles393 set InputArray Delphes/stableParticles 427 394 428 395 set OutputArray jets … … 616 583 module Merger MissingET { 617 584 # add InputArray InputArray 618 add InputArray EFlowMerger AllTracks/eflow585 add InputArray EFlowMerger/eflow 619 586 set MomentumOutputArray momentum 620 587 } -
examples/delphes_card_FCC_basic.tcl
racf622f r2e8de36 15 15 16 16 TrackMerger 17 AngularSmearing18 17 ImpactParameterSmearing 19 18 … … 25 24 26 25 MissingET 27 28 NeutrinoFilter 26 29 27 GenJetFinder 30 28 FastJetFinder … … 53 51 54 52 # radius of the magnetic field coverage, in m 55 set Radius 2.6053 set Radius 5.00 56 54 # half-length of the magnetic field coverage, in m 57 set HalfLength 6.0055 set HalfLength 12.00 58 56 59 57 # magnetic field 60 set Bz 6.058 set Bz 5.0 61 59 } 62 60 … … 74 72 set EfficiencyFormula { (pt <= 0.1) * (0.00) + \ 75 73 (abs(eta) <= 1.5) * (pt > 0.1 && pt <= 1.0) * (0.75) + \ 76 (abs(eta) <= 1.5) * (pt > 1.0) * (0.9 5) + \77 (abs(eta) > 1.5 && abs(eta) <= 4.0) * (pt > 0.1 && pt <= 1.0) * (0. 60) + \78 (abs(eta) > 1.5 && abs(eta) <= 4.0) * (pt > 1.0) * (0.9 0) + \74 (abs(eta) <= 1.5) * (pt > 1.0) * (0.99) + \ 75 (abs(eta) > 1.5 && abs(eta) <= 4.0) * (pt > 0.1 && pt <= 1.0) * (0.70) + \ 76 (abs(eta) > 1.5 && abs(eta) <= 4.0) * (pt > 1.0) * (0.98) + \ 79 77 (abs(eta) > 4.0) * (0.00)} 80 78 … … 130 128 131 129 # resolution formula for charged hadrons 132 set ResolutionFormula { (abs(eta) <= 1.5) * (pt > 0.1) * (0.01 + pt*2.e-5) + \ 133 (abs(eta) > 1.5 && abs(eta) <= 4.0) * (pt > 0.1) * (0.02 + pt*3.e-5)} 134 135 130 set ResolutionFormula { (abs(eta) <= 1.5) * (pt > 0.1 && pt <= 1.0) * (0.02) + \ 131 (abs(eta) <= 1.5) * (pt > 1.0 && pt <= 1.0e1) * (0.01) + \ 132 (abs(eta) <= 1.5) * (pt > 1.0e1 && pt <= 2.0e2) * (0.03) + \ 133 (abs(eta) <= 1.5) * (pt > 2.0e2) * (0.05) + \ 134 (abs(eta) > 1.5 && abs(eta) <= 4.0) * (pt > 0.1 && pt <= 1.0) * (0.03) + \ 135 (abs(eta) > 1.5 && abs(eta) <= 4.0) * (pt > 1.0 && pt <= 1.0e1) * (0.02) + \ 136 (abs(eta) > 1.5 && abs(eta) <= 4.0) * (pt > 1.0e1 && pt <= 2.0e2) * (0.04) + \ 137 (abs(eta) > 1.5 && abs(eta) <= 4.0) * (pt > 2.0e2) * (0.05)} 136 138 } 137 139 … … 164 166 165 167 # resolution formula for muons 166 set ResolutionFormula { (abs(eta) <= 1.5) * (pt > 0.1) * (0.01 + pt*5.e-6) + \ 167 (abs(eta) > 1.5 && abs(eta) <= 4.0) * (pt > 0.1) * (0.02 + pt*1.e-5)} 168 169 168 set ResolutionFormula { (abs(eta) <= 0.5) * (pt > 0.1 && pt <= 5.0) * (0.02) + \ 169 (abs(eta) <= 0.5) * (pt > 5.0 && pt <= 1.0e2) * (0.015) + \ 170 (abs(eta) <= 0.5) * (pt > 1.0e2 && pt <= 2.0e2) * (0.03) + \ 171 (abs(eta) <= 0.5) * (pt > 2.0e2) * (0.05 + pt*1.e-4) + \ 172 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 0.1 && pt <= 5.0) * (0.03) + \ 173 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 5.0 && pt <= 1.0e2) * (0.02) + \ 174 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 1.0e2 && pt <= 2.0e2) * (0.04) + \ 175 (abs(eta) > 0.5 && abs(eta) <= 1.5) * (pt > 2.0e2) * (0.05 + pt*1.e-4) + \ 176 (abs(eta) > 1.5 && abs(eta) <= 4.0) * (pt > 0.1 && pt <= 5.0) * (0.04) + \ 177 (abs(eta) > 1.5 && abs(eta) <= 4.0) * (pt > 5.0 && pt <= 1.0e2) * (0.035) + \ 178 (abs(eta) > 1.5 && abs(eta) <= 4.0) * (pt > 1.0e2 && pt <= 2.0e2) * (0.05) + \ 179 (abs(eta) > 1.5 && abs(eta) <= 4.0) * (pt > 2.0e2) * (0.05 + pt*1.e-4)} 170 180 } 171 181 … … 182 192 } 183 193 184 185 ################################186 # Track angular smearing187 ################################188 189 module AngularSmearing AngularSmearing {190 set InputArray TrackMerger/tracks191 set OutputArray tracks192 193 194 # angular smearing in eta formula as a function of pt and eta195 set EtaResolutionFormula { 0.001 }196 197 # angular smearing in phi formula as a function of pt and eta198 set PhiResolutionFormula { 0.001 }199 200 }201 202 194 ################################ 203 195 # Track impact parameter smearing … … 205 197 206 198 module ImpactParameterSmearing ImpactParameterSmearing { 207 set InputArray AngularSmearing/tracks199 set InputArray TrackMerger/tracks 208 200 set OutputArray tracks 209 201 210 202 211 212 213 203 # absolute impact parameter smearing formula (in mm) as a function of pt and eta 204 set ResolutionFormula {(pt > 0.1 && pt <= 5.0) * (0.010) + \ 205 (pt > 5.0) * (0.005)} 214 206 215 207 } … … 226 218 set EFlowTowerOutputArray eflowPhotons 227 219 228 set TowerMinEnergy 0.5229 set TowerMinSignificance 1.0230 231 220 set pi [expr {acos(-1)}] 232 221 … … 234 223 # each list starts with the lower edge of the first tower 235 224 # the list ends with the higher edged of the last tower 236 237 # 0.5 degreetowers225 226 # 5 degrees towers 238 227 set PhiBins {} 239 for {set i -360} {$i <= 360} {incr i} { 240 add PhiBins [expr {$i * $pi/360.0}] 241 } 242 243 # 0.01 unit in eta up to eta = 3 244 for {set i -300} {$i <= 300} {incr i} { 245 set eta [expr {$i * 0.01}] 228 for {set i -36} {$i <= 36} {incr i} { 229 add PhiBins [expr {$i * $pi/36.0}] 230 } 231 foreach eta {-1.566 -1.479 -1.392 -1.305 -1.218 -1.131 -1.044 -0.957 -0.87 -0.783 -0.696 -0.609 -0.522 -0.435 -0.348 -0.261 -0.174 -0.087 0 0.087 0.174 0.261 0.348 0.435 0.522 0.609 0.696 0.783 0.87 0.957 1.044 1.131 1.218 1.305 1.392 1.479 1.566 1.653} { 246 232 add EtaPhiBins $eta $PhiBins 247 233 } 248 234 235 # 10 degrees towers 236 set PhiBins {} 237 for {set i -18} {$i <= 18} {incr i} { 238 add PhiBins [expr {$i * $pi/18.0}] 239 } 240 foreach eta {-4.35 -4.175 -4 -3.825 -3.65 -3.475 -3.3 -3.125 -2.95 -2.868 -2.65 -2.5 -2.322 -2.172 -2.043 -1.93 -1.83 -1.74 -1.653 1.74 1.83 1.93 2.043 2.172 2.322 2.5 2.65 2.868 2.95 3.125 3.3 3.475 3.65 3.825 4 4.175 4.35 4.525} { 241 add EtaPhiBins $eta $PhiBins 242 } 243 244 # 20 degrees towers 245 set PhiBins {} 246 for {set i -9} {$i <= 9} {incr i} { 247 add PhiBins [expr {$i * $pi/9.0}] 248 } 249 foreach eta {6 -5.6 -5.3 -5 -4.7 -4.525 4.7 5 5.3 5.6 6} { 250 add EtaPhiBins $eta $PhiBins 251 } 249 252 # default energy fractions {abs(PDG code)} {fraction of energy deposited in ECAL} 250 253 … … 269 272 270 273 # set ECalResolutionFormula {resolution formula as a function of eta and energy} 271 272 # This is the CMS ECAL resolution, extended up eta = 6.0 273 set ResolutionFormula { (abs(eta) <= 3.0) * sqrt(energy^2*0.003^2 + energy*0.029^2 + 0.125^2) + \ 274 (abs(eta) > 3.0 && abs(eta) <= 5.0) * sqrt(energy^2*0.107^2 + energy*2.08^2)} 274 set ResolutionFormula { (abs(eta) <= 4.0) * sqrt(energy^2*0.005^2 + energy*0.02^2) + \ 275 (abs(eta) > 4.0 && abs(eta) <= 6.0) * sqrt(energy^2*0.05^2 + energy*1.00^2)} 275 276 276 277 … … 288 289 set EFlowTowerOutputArray eflowNeutralHadrons 289 290 290 set TowerMinEnergy 1.0291 set TowerMinSignificance 1.0292 293 291 set pi [expr {acos(-1)}] 294 292 … … 296 294 # each list starts with the lower edge of the first tower 297 295 # the list ends with the higher edged of the last tower 298 299 300 # 5 degree towers 296 297 # 5 degrees towers 301 298 set PhiBins {} 302 for {set i -72} {$i <= 72} {incr i} { 303 add PhiBins [expr {$i * $pi/75.0}] 304 } 305 306 # 0.05 unit in eta up to eta = 3 307 for {set i -60} {$i <= 60} {incr i} { 308 set eta [expr {$i * 0.05}] 299 for {set i -36} {$i <= 36} {incr i} { 300 add PhiBins [expr {$i * $pi/36.0}] 301 } 302 foreach eta {-1.566 -1.479 -1.392 -1.305 -1.218 -1.131 -1.044 -0.957 -0.87 -0.783 -0.696 -0.609 -0.522 -0.435 -0.348 -0.261 -0.174 -0.087 0 0.087 0.174 0.261 0.348 0.435 0.522 0.609 0.696 0.783 0.87 0.957 1.044 1.131 1.218 1.305 1.392 1.479 1.566 1.653} { 309 303 add EtaPhiBins $eta $PhiBins 310 304 } 311 312 305 306 # 10 degrees towers 307 set PhiBins {} 308 for {set i -18} {$i <= 18} {incr i} { 309 add PhiBins [expr {$i * $pi/18.0}] 310 } 311 foreach eta {-4.35 -4.175 -4 -3.825 -3.65 -3.475 -3.3 -3.125 -2.95 -2.868 -2.65 -2.5 -2.322 -2.172 -2.043 -1.93 -1.83 -1.74 -1.653 1.74 1.83 1.93 2.043 2.172 2.322 2.5 2.65 2.868 2.95 3.125 3.3 3.475 3.65 3.825 4 4.175 4.35 4.525} { 312 add EtaPhiBins $eta $PhiBins 313 } 314 315 # 20 degrees towers 316 set PhiBins {} 317 for {set i -9} {$i <= 9} {incr i} { 318 add PhiBins [expr {$i * $pi/9.0}] 319 } 320 foreach eta {6 -5.6 -5.3 -5 -4.7 -4.525 4.7 5 5.3 5.6 6} { 321 add EtaPhiBins $eta $PhiBins 322 } 323 313 324 # default energy fractions {abs(PDG code)} {Fecal Fhcal} 314 325 add EnergyFraction {0} {1.0} … … 331 342 add EnergyFraction {3122} {0.7} 332 343 333 # set HCalResolutionFormula {resolution formula as a function of eta and energy} 334 335 # This is the ATLAS HCAL resolution, extended up eta = 6.0 336 set HCalResolutionFormula { (abs(eta) <= 1.7) * sqrt(energy^2*0.0302^2 + energy*0.5205^2 + 1.59^2) + \ 337 (abs(eta) > 1.7 && abs(eta) <= 3.2) * sqrt(energy^2*0.0500^2 + energy*0.706^2) + \ 338 (abs(eta) > 3.2 && abs(eta) <= 6.0) * sqrt(energy^2*0.09420^2 + energy*1.00^2)} 339 340 } 344 # set HCalResolutionFormula {resolution formula as a function of eta and energy} 345 set ResolutionFormula { (abs(eta) <= 4.0) * sqrt(energy^2*0.03^2 + energy*0.50^2) + \ 346 (abs(eta) > 4.0 && abs(eta) <= 6.0) * sqrt(energy^2*0.05^2 + energy*1.00^2)} 347 } 348 341 349 342 350 #################### … … 386 394 387 395 ##################### 388 # Neutrino Filter389 #####################390 391 module PdgCodeFilter NeutrinoFilter {392 393 set InputArray Delphes/stableParticles394 set OutputArray filteredParticles395 396 set PTMin 0.0397 398 add PdgCode {12}399 add PdgCode {14}400 add PdgCode {16}401 add PdgCode {-12}402 add PdgCode {-14}403 add PdgCode {-16}404 405 }406 407 408 #####################409 396 # MC truth jet finder 410 397 ##################### 411 398 412 399 module FastJetFinder GenJetFinder { 413 set InputArray NeutrinoFilter/filteredParticles400 set InputArray Delphes/stableParticles 414 401 415 402 set OutputArray jets … … 419 406 set ParameterR 0.5 420 407 421 set JetPTMin 100.0408 set JetPTMin 5.0 422 409 } 423 410 … … 436 423 set ParameterR 0.5 437 424 438 set JetPTMin 100.0425 set JetPTMin 5.0 439 426 } 440 427 -
external/fastjet/AUTHORS
racf622f r2e8de36 10 10 ---------------------------------------------------------------------- 11 11 12 Many people have provided bug reports, suggestions for development ,13 documentation and in some cases explicit code for plugin14 algorithms. We would inparticular like to thank12 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 15 15 16 16 Vanya Belyaev … … 32 32 Hartmut Stadie 33 33 Mark Sutton 34 Jesse Thaler35 34 Chris Vermilion 36 35 Markus Wobisch 37 Christopher Young38 36 39 37 ---------------------------------------------------------------------- -
external/fastjet/ActiveAreaSpec.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: ActiveAreaSpec.hh 3433 2014-07-23 08:17:03Z salam $1 //STARTHEADER 2 // $Id: ActiveAreaSpec.hh 2577 2011-09-13 15:11:38Z salam $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 -
external/fastjet/AreaDefinition.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : AreaDefinition.cc 3619 2014-08-13 14:17:19Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/AreaDefinition.hh" … … 70 68 break; 71 69 default: 72 ostr << "Error: unrecognized area_type in AreaDefinition::description():"70 cerr << "Error: unrecognized area_type in AreaDefinition::description():" 73 71 << area_type() << endl; 74 throw Error(ostr.str());72 exit(-1); 75 73 } 76 74 return ostr.str(); -
external/fastjet/AreaDefinition.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: AreaDefinition.hh 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id: AreaDefinition.hh 2687 2011-11-14 11:17:51Z soyez $ 3 3 // 4 // Copyright (c) 2006-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2006-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 -
external/fastjet/BasicRandom.cc
racf622f r2e8de36 1 //FJSTARTHEADER 2 // $Id: BasicRandom.cc 3433 2014-07-23 08:17:03Z salam $ 1 //STARTHEADER 2 // simple random number generator class taken from nlojet++. 3 // $Id$ 3 4 // 4 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez5 // Copyright (C) 2002 Zoltan Nagy 5 6 // 6 //---------------------------------------------------------------------- 7 // This file is part of FastJet. 8 // 9 // FastJet is free software; you can redistribute it and/or modify 7 // This program is free software; you can redistribute it and/or modify 10 8 // it under the terms of the GNU General Public License as published by 11 9 // the Free Software Foundation; either version 2 of the License, or 12 10 // (at your option) any later version. 13 11 // 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, 12 // This program is distributed in the hope that it will be useful, 22 13 // but WITHOUT ANY WARRANTY; without even the implied warranty of 23 14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the … … 25 16 // 26 17 // 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 // FJENDHEADER18 // 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 30 21 31 22 // nlo includes -
external/fastjet/CMakeLists.txt
racf622f r2e8de36 1 1 include_directories(${CMAKE_SOURCE_DIR}/external) 2 2 3 file(GLOB sources *.cc plugins/*/*.cc contribs/ */*.cc tools/*.cc)3 file(GLOB sources *.cc plugins/*/*.cc contribs/Nsubjettiness/*.cc tools/*cc) 4 4 5 5 add_library(fastjet OBJECT ${sources}) -
external/fastjet/CircularRange.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: CircularRange.hh 3433 2014-07-23 08:17:03Z salam $1 //STARTHEADER 2 // $Id: CircularRange.hh 2577 2011-09-13 15:11:38Z salam $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 -
external/fastjet/ClosestPair2D.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : ClosestPair2D.cc 3433 2014-07-23 08:17:03Z salam$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //STARTHEADER 2 // $Id$ 3 // 4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/internal/ClosestPair2D.hh" … … 38 36 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh 39 37 38 const unsigned int huge_unsigned = 4294967295U; 40 39 const unsigned int twopow31 = 2147483648U; 41 40 … … 184 183 ID2 = _ID(_points[ID1].neighbour); 185 184 distance2 = _points[ID1].neighbour_dist2; 186 // we make the swap explicitly in the std namespace to avoid187 // potential conflict with the fastjet::swap introduced by188 // SharedPtr.189 // This is only an issue because we are in the fastjet namespace190 185 if (ID1 > ID2) std::swap(ID1,ID2); 191 186 } -
external/fastjet/ClusterSequence.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : ClusterSequence.cc 3685 2014-09-11 20:15:00Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2013, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/Error.hh" … … 34 32 #include "fastjet/ClusterSequenceStructure.hh" 35 33 #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__42 34 #include<iostream> 43 35 #include<sstream> … … 195 187 //DEP //---------------------------------------------------------------------- 196 188 //DEP void ClusterSequence::_initialise_and_run ( 197 //DEP const double R,189 //DEP const double & R, 198 190 //DEP const Strategy & strategy, 199 191 //DEP const bool & writeout_combinations) { … … 281 273 // ./fastjet_timing_plugins -kt -nhardest 30 -repeat 50000 -strategy -3 -R 0.5 -nev 1 < ../../data/Pythia-PtMin1000-LHC-1000ev.dat 282 274 if (_strategy == Best) { 283 _strategy = _best_strategy();284 #ifdef DROP_CGAL285 // fall back strategy for large N when CGAL is missing286 if (_strategy == NlnN) _strategy = N2MHTLazy25;287 #endif // DROP_CGAL288 } else if (_strategy == BestFJ30) {289 275 int N = _jets.size(); 290 276 //if (N <= 55*max(0.5,min(1.0,_Rparam))) {// old empirical scaling with R … … 338 324 // run the code containing the selected strategy 339 325 // 340 // We order the strategies st arting from the ones used by the Best326 // We order the strategies stqrting from the ones used by the Best 341 327 // strategy in the order of increasing N, then the remaining ones 342 328 // again in the order of increasing N. … … 348 334 } else if (_strategy == N2MinHeapTiled) { 349 335 this->_minheap_faster_tiled_N2_cluster(); 350 } else if (_strategy == N2MHTLazy9Alt) {351 // attempt to use an external tiling routine -- it manipulates352 // the CS history via the plugin mechanism353 _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 manipulates360 // the CS history via the plugin mechanism361 _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 manipulates368 // the CS history via the plugin mechanism369 _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 manipulates377 // the CS history via the plugin mechanism378 _plugin_activated = true;379 LazyTiling9SeparateGhosts tiling(*this);380 tiling.run();381 _plugin_activated = false;382 #else383 throw Error("N2MHTLazy9AntiKtSeparateGhosts strategy not supported with FJCORE");384 #endif // __FJCORE__385 386 336 } else if (_strategy == NlnN) { 387 337 this->_delaunay_cluster(); … … 409 359 // these needs to be defined outside the class definition. 410 360 bool ClusterSequence::_first_time = true; 411 LimitedWarning ClusterSequence::_exclusive_warnings;361 int ClusterSequence::_n_exclusive_warnings = 0; 412 362 413 363 … … 523 473 524 474 //---------------------------------------------------------------------- 475 // Return the component corresponding to the specified index. 476 // taken from CLHEP 525 477 string ClusterSequence::strategy_string (Strategy strategy_in) const { 526 478 string strategy; … … 540 492 case N2PoorTiled: 541 493 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;550 494 case N3Dumb: 551 495 strategy = "N3Dumb"; break; … … 584 528 } else {return 1.0;} 585 529 } else {throw Error("Unrecognised jet algorithm");} 586 }587 588 //----------------------------------------------------------------------589 // returns a suggestion for the best strategy to use on event590 // multiplicity, algorithm, R, etc.591 //592 // Some of the work to establish the best strategy is collected in593 // issue-tracker/2014-07-auto-strategy-selection;594 // transition_fit_v2.fit indicates the results of the fits that we're595 // using here. (Automatically generated by transition_fit_v2.gp).596 //597 // The transition to NlnN is always present, and it is the the598 // caller's responsibility to drop back down to N2MHTLazy25 if NlnN599 // isn't available.600 //601 // This routine should be called only if the jet alg is one of kt,602 // antikt, cam or genkt.603 Strategy ClusterSequence::_best_strategy() const {604 int N = _jets.size();605 // define bounded R, always above 0.1, because we don't trust any606 // of our parametrizations below R = 0.1607 double bounded_R = max(_Rparam, 0.1);608 609 // the very first test thing is a quick hard-coded test to decide610 // if we immediately opt for N2Plain611 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 overhead619 // in creating them; collecting them in one place should620 // 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 other648 // algorithms we set the local jet_algorithm variable to the one of649 // kt,cam,antikt that we think will be closest in behaviour to the650 // other alg.651 JetAlgorithm jet_algorithm;652 if (_jet_algorithm == genkt_algorithm) {653 // for genkt, then we set the local jet_algorithm variable (used654 // only for strategy choice) to be either kt or antikt, depending on655 // 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 timing661 // transitions should be adequate for cambridge_for_passive_algorithm662 jet_algorithm = kt_algorithm;663 } else {664 jet_algorithm = _jet_algorithm;665 }666 667 if (bounded_R < 0.65) {668 // low R case669 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 case689 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 730 530 } 731 531 … … 862 662 //---------------------------------------------------------------------- 863 663 // return all inclusive jets with pt > ptmin 864 vector<PseudoJet> ClusterSequence::inclusive_jets (const double ptmin) const{664 vector<PseudoJet> ClusterSequence::inclusive_jets (const double & ptmin) const{ 865 665 double dcut = ptmin*ptmin; 866 666 int i = _history.size() - 1; // last jet … … 914 714 // return the number of exclusive jets that would have been obtained 915 715 // running the algorithm in exclusive mode with the given dcut 916 int ClusterSequence::n_exclusive_jets (const double dcut) const {716 int ClusterSequence::n_exclusive_jets (const double & dcut) const { 917 717 918 718 // first locate the point where clustering would have stopped (i.e. the … … 933 733 // return all exclusive jets that would have been obtained running 934 734 // the algorithm in exclusive mode with the given dcut 935 vector<PseudoJet> ClusterSequence::exclusive_jets (const double dcut) const {735 vector<PseudoJet> ClusterSequence::exclusive_jets (const double & dcut) const { 936 736 int njets = n_exclusive_jets(dcut); 937 737 return exclusive_jets(njets); … … 942 742 // return the jets obtained by clustering the event to n jets. 943 743 // Throw an error if there are fewer than n particles. 944 vector<PseudoJet> ClusterSequence::exclusive_jets (const int njets) const {744 vector<PseudoJet> ClusterSequence::exclusive_jets (const int & njets) const { 945 745 946 746 // make sure the user does not ask for more than jets than there … … 959 759 // return the jets obtained by clustering the event to n jets. 960 760 // If there are fewer than n particles, simply return all particles 961 vector<PseudoJet> ClusterSequence::exclusive_jets_up_to (const int njets) const {761 vector<PseudoJet> ClusterSequence::exclusive_jets_up_to (const int & njets) const { 962 762 963 763 // provide a warning when extracting exclusive jets for algorithms 964 764 // that does not support it explicitly. 965 // Native algorithm that support it are: kt, ee_kt, Cambridge/Aachen,765 // Native algorithm that support it are: kt, ee_kt, cambridge, 966 766 // genkt and ee_genkt (both with p>=0) 967 767 // For plugins, we check Plugin::exclusive_sequence_meaningful() … … 973 773 (_jet_def.extra_param() <0)) && 974 774 ((_jet_def.jet_algorithm() != plugin_algorithm) || 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."); 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; 977 779 } 978 780 … … 1027 829 /// return the dmin corresponding to the recombination that went from 1028 830 /// n+1 to n jets 1029 double ClusterSequence::exclusive_dmerge (const int njets) const {831 double ClusterSequence::exclusive_dmerge (const int & njets) const { 1030 832 assert(njets >= 0); 1031 833 if (njets >= _initial_n) {return 0.0;} … … 1039 841 /// exclusive_dmerge, except in cases where the dmin do not increase 1040 842 /// monotonically. 1041 double ClusterSequence::exclusive_dmerge_max (const int njets) const {843 double ClusterSequence::exclusive_dmerge_max (const int & njets) const { 1042 844 assert(njets >= 0); 1043 845 if (njets >= _initial_n) {return 0.0;} … … 1051 853 /// the algorithm with the given dcut. 1052 854 std::vector<PseudoJet> ClusterSequence::exclusive_subjets 1053 (const PseudoJet & jet, const double dcut) const {855 (const PseudoJet & jet, const double & dcut) const { 1054 856 1055 857 set<const history_element*> subhist; … … 1074 876 /// exclusive_subjets.size() 1075 877 int ClusterSequence::n_exclusive_subjets(const PseudoJet & jet, 1076 const double dcut) const {878 const double & dcut) const { 1077 879 set<const history_element*> subhist; 1078 880 // get the set of history elements that correspond to subjets at … … 1379 1181 // //---------------------------------------------------------------------- 1380 1182 // // print out all inclusive jets with pt > ptmin 1381 // void ClusterSequence::print_jets (const double ptmin) const{1183 // void ClusterSequence::print_jets (const double & ptmin) const{ 1382 1184 // vector<PseudoJet> jets = sorted_by_pt(inclusive_jets(ptmin)); 1383 1185 // … … 1455 1257 // initialise the history in a standard way 1456 1258 void ClusterSequence::_add_step_to_history ( 1457 const int step_number, const intparent1,1458 const int parent2, const intjetp_index,1459 const double dij) {1259 const int & step_number, const int & parent1, 1260 const int & parent2, const int & jetp_index, 1261 const double & dij) { 1460 1262 1461 1263 history_element element; … … 1627 1429 /// of the recombined jet, newjet_k. 1628 1430 void ClusterSequence::_do_ij_recombination_step( 1629 const int jet_i, const intjet_j,1630 const double dij,1431 const int & jet_i, const int & jet_j, 1432 const double & dij, 1631 1433 int & newjet_k) { 1632 1434 … … 1664 1466 /// jet_i with the beam 1665 1467 void ClusterSequence::_do_iB_recombination_step( 1666 const int jet_i, const doublediB) {1468 const int & jet_i, const double & diB) { 1667 1469 // get history index 1668 1470 int newstep_k = _history.size(); -
external/fastjet/ClusterSequence.hh
racf622f r2e8de36 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 $ 1 //STARTHEADER 2 // $Id: ClusterSequence.hh 3114 2013-05-04 08:46:00Z salam $ 6 3 // 7 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 8 5 // 9 6 //---------------------------------------------------------------------- … … 16 13 // 17 14 // 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 15 // development and are described in hep-ph/0512210. If you use 20 16 // 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. 17 // include a citation to the FastJet paper. 23 18 // 24 19 // FastJet is distributed in the hope that it will be useful, … … 30 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 26 //---------------------------------------------------------------------- 32 //FJENDHEADER 33 27 //ENDHEADER 28 29 30 #ifndef __FASTJET_CLUSTERSEQUENCE_HH__ 31 #define __FASTJET_CLUSTERSEQUENCE_HH__ 34 32 35 33 #include<vector> … … 67 65 ClusterSequence () : _deletes_self_when_unused(false) {} 68 66 69 /// create a ClusterSequence, starting from the supplied set 70 /// of PseudoJets and clustering them with jet definition specified 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 71 84 /// by jet_def (which also specifies the clustering strategy) 72 85 template<class L> ClusterSequence ( … … 91 104 /// algorithm) with pt >= ptmin. Time taken should be of the order 92 105 /// of the number of jets returned. 93 std::vector<PseudoJet> inclusive_jets (const double ptmin = 0.0) const;106 std::vector<PseudoJet> inclusive_jets (const double & ptmin = 0.0) const; 94 107 95 108 /// return the number of jets (in the sense of the exclusive 96 109 /// algorithm) that would be obtained when running the algorithm 97 110 /// with the given dcut. 98 int n_exclusive_jets (const double dcut) const;111 int n_exclusive_jets (const double & dcut) const; 99 112 100 113 /// return a vector of all jets (in the sense of the exclusive 101 114 /// algorithm) that would be obtained when running the algorithm 102 115 /// with the given dcut. 103 std::vector<PseudoJet> exclusive_jets (const double dcut) const;116 std::vector<PseudoJet> exclusive_jets (const double & dcut) const; 104 117 105 118 /// return a vector of all jets when the event is clustered (in the … … 108 121 /// If there are fewer than njets particles in the ClusterSequence 109 122 /// an error is thrown 110 std::vector<PseudoJet> exclusive_jets (const int njets) const;123 std::vector<PseudoJet> exclusive_jets (const int & njets) const; 111 124 112 125 /// return a vector of all jets when the event is clustered (in the … … 115 128 /// If there are fewer than njets particles in the ClusterSequence 116 129 /// the function just returns however many particles there were. 117 std::vector<PseudoJet> exclusive_jets_up_to (const int njets) const;130 std::vector<PseudoJet> exclusive_jets_up_to (const int & njets) const; 118 131 119 132 /// return the dmin corresponding to the recombination that went 120 133 /// from n+1 to n jets (sometimes known as d_{n n+1}). If the number 121 134 /// of particles in the event is <= njets, the function returns 0. 122 double exclusive_dmerge (const int njets) const;135 double exclusive_dmerge (const int & njets) const; 123 136 124 137 /// return the maximum of the dmin encountered during all recombinations … … 126 139 /// exclusive_dmerge, except in cases where the dmin do not increase 127 140 /// monotonically. 128 double exclusive_dmerge_max (const int njets) const;141 double exclusive_dmerge_max (const int & njets) const; 129 142 130 143 /// return the ymin corresponding to the recombination that went from … … 145 158 146 159 147 //int n_exclusive_jets (const PseudoJet & jet, const double dcut) const;160 //int n_exclusive_jets (const PseudoJet & jet, const double & dcut) const; 148 161 149 162 /// return a vector of all subjets of the current jet (in the sense … … 156 169 /// just getting that list of constituents. 157 170 std::vector<PseudoJet> exclusive_subjets (const PseudoJet & jet, 158 const double dcut) const;171 const double & dcut) const; 159 172 160 173 /// return the size of exclusive_subjets(...); still n ln n with same … … 162 175 /// exclusive_subjets.size() 163 176 int n_exclusive_subjets(const PseudoJet & jet, 164 const double dcut) const;177 const double & dcut) const; 165 178 166 179 /// return the list of subjets obtained by unclustering the supplied … … 180 193 int nsub) const; 181 194 182 /// return sthe dij that was present in the merging nsub+1 -> nsub195 /// return the dij that was present in the merging nsub+1 -> nsub 183 196 /// subjets inside this jet. 184 197 /// … … 186 199 double exclusive_subdmerge(const PseudoJet & jet, int nsub) const; 187 200 188 /// return sthe maximum dij that occurred in the whole event at the201 /// return the maximum dij that occurred in the whole event at the 189 202 /// stage that the nsub+1 -> nsub merge of subjets occurred inside 190 203 /// this jet. … … 194 207 195 208 //std::vector<PseudoJet> exclusive_jets (const PseudoJet & jet, 196 // const int njets) const;197 //double exclusive_dmerge (const PseudoJet & jet, const int njets) const;209 // const int & njets) const; 210 //double exclusive_dmerge (const PseudoJet & jet, const int & njets) const; 198 211 199 212 /// returns the sum of all energies in the event (relevant mainly for e+e-) … … 259 272 // Not yet. Perhaps in a future release. 260 273 // /// print out all inclusive jets with pt > ptmin 261 // virtual void print_jets (const double ptmin=0.0) const;274 // virtual void print_jets (const double & ptmin=0.0) const; 262 275 263 276 /// add on to subjet_vector the constituents of jet (for internal use mainly) … … 287 300 /// 288 301 /// NB: after having made this call, the user is still allowed to 289 /// delete the CS. Jets associated with it will then simply not be 290 /// able to access their substructure after that point. 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. 291 305 void delete_self_when_unused(); 292 306 … … 299 313 300 314 /// returns the scale associated with a jet as required for this 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. 315 /// clustering algorithm (kt^2 for the kt-algorithm, 1 for the 316 /// Cambridge algorithm). [May become virtual at some point] 304 317 double jet_scale_for_algorithm(const PseudoJet & jet) const; 305 318 … … 350 363 351 364 /// the plugin can associate some extra information with the 352 /// ClusterSequence object by calling this function. The353 /// ClusterSequence takes ownership of the pointer (and354 /// 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 the360 365 /// ClusterSequence object by calling this function 361 ///362 /// As of FJ v3.1, this is deprecated, in line with the deprecation363 /// of auto_ptr in C++11364 366 inline void plugin_associate_extras(std::auto_ptr<Extras> extras_in) { 367 //_extras = extras_in; 365 368 _extras.reset(extras_in.release()); 366 369 } … … 596 599 //DEP /// clustering, provided for legacy purposes. The jet finder is that 597 600 //DEP /// specified in the static member _default_jet_algorithm. 598 //DEP void _initialise_and_run (const double R,601 //DEP void _initialise_and_run (const double & R, 599 602 //DEP const Strategy & strategy, 600 603 //DEP const bool & writeout_combinations); … … 619 622 /// jet_j, at distance scale dij; return the index newjet_k of the 620 623 /// result of the recombination of i and j. 621 void _do_ij_recombination_step(const int jet_i, const intjet_j,622 const double dij, int & newjet_k);624 void _do_ij_recombination_step(const int & jet_i, const int & jet_j, 625 const double & dij, int & newjet_k); 623 626 624 627 /// carry out an recombination step in which _jets[jet_i] merges with 625 628 /// the beam, 626 void _do_iB_recombination_step(const int jet_i, const doublediB);629 void _do_iB_recombination_step(const int & jet_i, const double & diB); 627 630 628 631 /// every time a jet is added internally during clustering, this … … 637 640 void _update_structure_use_count(); 638 641 639 /// returns a suggestion for the best strategy to use on event640 /// multiplicity, algorithm, R, etc.641 Strategy _best_strategy() const;642 643 /// \if internal_doc644 /// \class _Parabola645 /// returns c*(a*R**2 + b*R + 1);646 /// Written as a class in case we want to give names to different647 /// parabolas648 /// \endif649 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_doc658 /// \class _Line659 /// operator()(R) returns a*R+b;660 /// \endif661 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 };668 642 669 643 /// This contains the physical PseudoJets; for each PseudoJet one … … 707 681 708 682 bool _plugin_activated; 683 //std::auto_ptr<Extras> _extras; // things the plugin might want to add 709 684 SharedPtr<Extras> _extras; // things the plugin might want to add 710 685 … … 730 705 void _fast_NsqrtN_cluster(); 731 706 732 void _add_step_to_history(const int step_number, const intparent1,733 const int parent2, const intjetp_index,734 const double dij);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); 735 710 736 711 /// internal routine associated with the construction of the unique … … 751 726 752 727 /// currently used only in the Voronoi based code 753 void _add_ktdistance_to_map(const int ii,728 void _add_ktdistance_to_map(const int & ii, 754 729 DistMap & DijMap, 755 730 const DynamicNearestNeighbours * DNN); … … 759 734 static bool _first_time; 760 735 761 /// manage warnings related to exclusive jets access 762 static LimitedWarning _exclusive_warnings; 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; 763 740 764 741 /// the limited warning member for notification of user that … … 777 754 int _jets_index; 778 755 }; 756 779 757 780 758 /// structure analogous to BriefJet, but with the extra information … … 884 862 // routines for tiled case, including some overloads of the plain 885 863 // BriefJet cases 886 int _tile_index(const double eta, const doublephi) const;864 int _tile_index(const double & eta, const double & phi) const; 887 865 void _tj_set_jetinfo ( TiledJet * const jet, const int _jets_index); 888 866 void _bj_remove_from_tiles(TiledJet * const jet); … … 893 871 void _add_untagged_neighbours_to_tile_union(const int tile_index, 894 872 std::vector<int> & tile_union, int & n_near_tiles); 873 895 874 896 875 //---------------------------------------------------------------------- … … 944 923 // template<class L> ClusterSequence::ClusterSequence ( 945 924 // const std::vector<L> & pseudojets, 946 // const double R,925 // const double & R, 947 926 // const Strategy & strategy, 948 927 // const bool & writeout_combinations) { … … 987 966 988 967 inline unsigned int ClusterSequence::n_particles() const {return _initial_n;} 989 990 //----------------------------------------------------------------------991 // implementation of JetDefinition::operator() is here to avoid nasty992 // issues of order of implementations and includes993 template<class L>994 std::vector<PseudoJet> JetDefinition::operator()(const std::vector<L> & particles) const {995 // create a new cluster sequence996 ClusterSequence * cs = new ClusterSequence(particles, *this);997 998 // get the jets, and sort them according to whether the algorithm999 // is spherical or not1000 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 longer1008 // needed1009 if (jets.size() != 0) {1010 cs->delete_self_when_unused();1011 } else {1012 delete cs;1013 }1014 1015 return jets;1016 }1017 968 1018 969 -
external/fastjet/ClusterSequence1GhostPassiveArea.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : ClusterSequence1GhostPassiveArea.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/ClusterSequence1GhostPassiveArea.hh" -
external/fastjet/ClusterSequence1GhostPassiveArea.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: ClusterSequence1GhostPassiveArea.hh 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id: ClusterSequence1GhostPassiveArea.hh 2687 2011-11-14 11:17:51Z soyez $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __FASTJET_CLUSTERSEQUENCE1GHOSTPASSIVEAREA_HH__ -
external/fastjet/ClusterSequenceActiveArea.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : ClusterSequenceActiveArea.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/PseudoJet.hh" -
external/fastjet/ClusterSequenceActiveArea.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: ClusterSequenceActiveArea.hh 3619 2014-08-13 14:17:19Z salam$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //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 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __FASTJET_CLUSTERSEQUENCEACTIVEAREA_HH__ … … 85 83 /// the background (e.g. non-jet) activity in a highly populated event; the 86 84 /// one that has been most extensively tested is median. 87 ///88 /// These strategies are OBSOLETE and deprecated (see comment89 /// for pt_per_unit_area).90 85 enum mean_pt_strategies{median=0, non_ghost_median, pttot_over_areatot, 91 86 pttot_over_areatot_cut, mean_ratio_cut, play, … … 98 93 /// have pt/area > median(pt/area)*range. 99 94 /// 100 /// NB: This call is OBSOLETE and deprecated; use a 101 /// JetMedianBackgroundEstimator or GridMedianBackgroundEstimator 102 /// instead. 95 /// NB: This call is OBSOLETE; use media_pt_per_unit_area from the 96 // ClusterSequenceAreaBase class instead 103 97 double pt_per_unit_area(mean_pt_strategies strat=median, 104 98 double range=2.0 ) const; 105 99 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 // 106 109 /// rewrite the empty area from the parent class, so as to use 107 110 /// all info at our disposal -
external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : ClusterSequenceActiveAreaExplicitGhosts.cc 3433 2014-07-23 08:17:03Z salam$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //STARTHEADER 2 // $Id$ 3 // 4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh" -
external/fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: ClusterSequenceActiveAreaExplicitGhosts.hh 3433 2014-07-23 08:17:03Z salam$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //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 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __FASTJET_CLUSTERSEQUENCEACTIVEAREAEXPLICITGHOSTS_HH_ -
external/fastjet/ClusterSequenceArea.cc
racf622f r2e8de36 1 //FJSTARTHEADER2 // $Id: ClusterSequenceArea.cc 3433 2014-07-23 08:17:03Z salam $3 //4 // Copyright (c) 2006-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez5 //6 //----------------------------------------------------------------------7 // This file is part of FastJet.8 //9 // FastJet is free software; you can redistribute it and/or modify10 // it under the terms of the GNU General Public License as published by11 // the Free Software Foundation; either version 2 of the License, or12 // (at your option) any later version.13 //14 // The algorithms that underlie FastJet have required considerable15 // development. They are described in the original FastJet paper,16 // hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use17 // FastJet as part of work towards a scientific publication, please18 // quote the version you use and include a citation to the manual and19 // 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 of23 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the24 // GNU General Public License for more details.25 //26 // You should have received a copy of the GNU General Public License27 // along with FastJet. If not, see <http://www.gnu.org/licenses/>.28 //----------------------------------------------------------------------29 //FJENDHEADER30 31 1 #include "fastjet/ClusterSequenceArea.hh" 32 2 -
external/fastjet/ClusterSequenceArea.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: ClusterSequenceArea.hh 3484 2014-07-29 21:39:39Z soyez $3 // 4 // Copyright (c) 2006-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //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 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __FASTJET_CLUSTERSEQUENCEAREA_HH__ … … 247 245 break; 248 246 default: 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); 247 std::cerr << "Error: unrecognized area_type in ClusterSequenceArea:" 248 << _area_def.area_type() << std::endl; 249 exit(-1); 254 250 } 255 251 // now copy across the information from the area base class -
external/fastjet/ClusterSequenceAreaBase.cc
racf622f r2e8de36 1 1 2 // FJSTARTHEADER3 // $Id : ClusterSequenceAreaBase.cc 3433 2014-07-23 08:17:03Z salam$4 // 5 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez2 //STARTHEADER 3 // $Id$ 4 // 5 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 6 6 // 7 7 //---------------------------------------------------------------------- … … 14 14 // 15 15 // The algorithms that underlie FastJet have required considerable 16 // development. They are described in the original FastJet paper, 17 // hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use 16 // development and are described in hep-ph/0512210. If you use 18 17 // FastJet as part of work towards a scientific publication, please 19 // quote the version you use and include a citation to the manual and 20 // optionally also to hep-ph/0512210. 18 // include a citation to the FastJet paper. 21 19 // 22 20 // FastJet is distributed in the hope that it will be useful, … … 28 26 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 29 27 //---------------------------------------------------------------------- 30 // FJENDHEADER28 //ENDHEADER 31 29 32 30 -
external/fastjet/ClusterSequenceAreaBase.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: ClusterSequenceAreaBase.hh 3433 2014-07-23 08:17:03Z salam$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //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 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __FASTJET_CLUSTERSEQUENCEAREABASE_HH__ -
external/fastjet/ClusterSequencePassiveArea.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : ClusterSequencePassiveArea.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/ClusterSequencePassiveArea.hh" -
external/fastjet/ClusterSequencePassiveArea.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: ClusterSequencePassiveArea.hh 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id: ClusterSequencePassiveArea.hh 2687 2011-11-14 11:17:51Z soyez $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __FASTJET_CLUSTERSEQUENCEPASSIVEAREA_HH__ -
external/fastjet/ClusterSequenceStructure.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : ClusterSequenceStructure.cc 3433 2014-07-23 08:17:03Z salam$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //STARTHEADER 2 // $Id$ 3 // 4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/ClusterSequenceStructure.hh" -
external/fastjet/ClusterSequenceStructure.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: ClusterSequenceStructure.hh 3 433 2014-07-23 08:17:03Z salam$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //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 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 -
external/fastjet/ClusterSequenceVoronoiArea.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : ClusterSequenceVoronoiArea.cc 3433 2014-07-23 08:17:03Z salam$3 // 4 // Copyright (c) 2006-20 14, Matteo Cacciari, Gavin P.Salam and Gregory Soyez5 // 6 //---------------------------------------------------------------------- 7 // This file is part of FastJet.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 8 8 // 9 9 // FastJet is free software; you can redistribute it and/or modify … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/ClusterSequenceVoronoiArea.hh" … … 278 276 // -- first the initial ones 279 277 _voronoi_area.reserve(2*n_particles()); 280 _voronoi_area_4vector.reserve(2*n_particles());281 278 for (unsigned int i=0; i<n_particles(); i++) { 282 279 _voronoi_area.push_back(_pa_calc->area(i)); -
external/fastjet/ClusterSequenceVoronoiArea.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: ClusterSequenceVoronoiArea.hh 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id: ClusterSequenceVoronoiArea.hh 2687 2011-11-14 11:17:51Z soyez $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __FASTJET_CLUSTERSEQUENCEVORONOIAREA_HH__ … … 68 66 return _voronoi_area[jet.cluster_hist_index()];} 69 67 70 /// return a 4-vector area associated with the given jet -- stric tly68 /// return a 4-vector area associated with the given jet -- stricly 71 69 /// this is not the exact 4-vector area, but rather an approximation 72 70 /// made of sums of centres of all Voronoi cells in jet, each -
external/fastjet/ClusterSequenceWithArea.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: ClusterSequenceWithArea.hh 3433 2014-07-23 08:17:03Z salam $1 //STARTHEADER 2 // $Id: ClusterSequenceWithArea.hh 2577 2011-09-13 15:11:38Z salam $ 3 3 // 4 // Copyright (c) 2006-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2006-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __FASTJET_CLUSTERSEQUENCEWITHAREA_HH__ -
external/fastjet/ClusterSequence_CP2DChan.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : ClusterSequence_CP2DChan.cc 3433 2014-07-23 08:17:03Z salam$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //STARTHEADER 2 // $Id$ 3 // 4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/ClusterSequence.hh" -
external/fastjet/ClusterSequence_Delaunay.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : ClusterSequence_Delaunay.cc 3475 2014-07-29 11:57:23Z salam$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //STARTHEADER 2 // $Id$ 3 // 4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 … … 87 85 throw Error(err.str()); 88 86 //assert(false); 89 } else87 } 90 88 #endif // DROP_CGAL 91 89 { 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 90 ostringstream err; 91 err << "ERROR: Unrecognized value for strategy: "<<_strategy<<endl; 99 92 assert(false); 93 throw Error(err.str()); 100 94 } 101 95 … … 223 217 /// 224 218 void ClusterSequence::_add_ktdistance_to_map( 225 const int ii,219 const int & ii, 226 220 DistMap & DijMap, 227 221 const DynamicNearestNeighbours * DNN) { -
external/fastjet/ClusterSequence_DumbN3.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : ClusterSequence_DumbN3.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 -
external/fastjet/ClusterSequence_N2.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : ClusterSequence_N2.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 -
external/fastjet/ClusterSequence_TiledN2.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : ClusterSequence_TiledN2.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER30 31 32 // The tiledN^2 part of the ClusterSequence class -- separated out27 //ENDHEADER 28 29 30 // The plain N^2 part of the ClusterSequence class -- separated out 33 31 // from the rest of the class implementation so as to speed up 34 32 // compilation of this particular part while it is under test. … … 41 39 #include "fastjet/ClusterSequence.hh" 42 40 #include "fastjet/internal/MinHeap.hh" 43 #include "fastjet/internal/TilingExtent.hh"44 41 45 42 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh … … 97 94 _tile_size_phi = twopi / _n_tiles_phi; // >= _Rparam and fits in 2pi 98 95 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 // } 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 } 119 112 120 113 // now adjust the values … … 174 167 //---------------------------------------------------------------------- 175 168 /// return the tile index corresponding to the given eta,phi point 176 int ClusterSequence::_tile_index(const double eta, const doublephi) const {169 int ClusterSequence::_tile_index(const double & eta, const double & phi) const { 177 170 int ieta, iphi; 178 171 if (eta <= _tiles_eta_min) {ieta = 0;} … … 256 249 /// their "tagged" status is false; when a neighbour is added its 257 250 /// 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 for261 /// oldB in ClusterSequence::_minheap_faster_tiled_N2_cluster(). We262 /// have explicitly checked that it was harmless so we could disable263 /// the gcc warning by hand using the construct below264 ///265 /// #pragma GCC diagnostic push266 /// #pragma GCC diagnostic ignored "-Wpragmas"267 /// #pragma GCC diagnostic ignored "-Wuninitialized"268 /// #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"269 /// ...270 /// #pragma GCC diagnostic pop271 ///272 /// the @GCC diagnostic push/pop directive was only introduced in273 /// gcc-4.6, so for broader usage, we'd need to insert #pragma GCC274 /// diagnostic ignored "-Wpragmas" at the top of this file275 251 inline void ClusterSequence::_add_untagged_neighbours_to_tile_union( 276 252 const int tile_index, … … 298 274 TiledJet * jetA = briefjets, * jetB; 299 275 TiledJet oldB; 300 oldB.tile_index=0; // prevents a gcc warning 276 oldB.tile_index=0; // prevents a gcc warning 301 277 302 278 // will be used quite deep inside loops, but declare it here so that … … 541 517 TiledJet * jetA = briefjets, * jetB; 542 518 TiledJet oldB; 543 oldB.tile_index=0; // prevents a gcc warning 519 oldB.tile_index=0; // prevents a gcc warning 544 520 545 521 // will be used quite deep inside loops, but declare it here so that … … 579 555 // when we set NN for both jetA and jetB on the RH tiles. 580 556 } 557 581 558 582 559 // now create the diJ (where J is i's NN) table -- remember that … … 744 721 } 745 722 723 724 746 725 //---------------------------------------------------------------------- 747 726 /// run a tiled clustering, with our minheap for keeping track of the … … 756 735 TiledJet oldB; 757 736 oldB.tile_index=0; // prevents a gcc warning 737 758 738 759 739 // will be used quite deep inside loops, but declare it here so that -
external/fastjet/CompositeJetStructure.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : CompositeJetStructure.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include <fastjet/CompositeJetStructure.hh> … … 153 151 double a_err=0; 154 152 for (unsigned i = 0; i < _pieces.size(); i++) 155 a_err += _pieces[i].area _error();153 a_err += _pieces[i].area(); 156 154 157 155 return a_err; -
external/fastjet/CompositeJetStructure.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: CompositeJetStructure.hh 3 652 2014-09-03 13:31:13Z salam$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //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 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 … … 112 110 virtual bool is_pure_ghost(const PseudoJet &reference) const; 113 111 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; 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; 135 117 } 136 118 … … 244 226 const JetDefinition::Recombiner & recombiner){ 245 227 std::vector<PseudoJet> pieces; 246 pieces.reserve(2);247 228 pieces.push_back(j1); 248 229 pieces.push_back(j2); … … 256 237 const JetDefinition::Recombiner & recombiner){ 257 238 std::vector<PseudoJet> pieces; 258 pieces.reserve(3);259 239 pieces.push_back(j1); 260 240 pieces.push_back(j2); … … 269 249 const JetDefinition::Recombiner & recombiner){ 270 250 std::vector<PseudoJet> pieces; 271 pieces.reserve(4);272 251 pieces.push_back(j1); 273 252 pieces.push_back(j2); -
external/fastjet/Dnn2piCylinder.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : Dnn2piCylinder.cc 3433 2014-07-23 08:17:03Z salam$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //STARTHEADER 2 // $Id$ 3 // 4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 -
external/fastjet/Dnn3piCylinder.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : Dnn3piCylinder.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 -
external/fastjet/Dnn4piCylinder.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : Dnn4piCylinder.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 -
external/fastjet/DnnPlane.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : DnnPlane.cc 3442 2014-07-24 07:20:49Z salam$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //STARTHEADER 2 // $Id$ 3 // 4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 … … 35 33 #include<list> 36 34 #include "fastjet/internal/DnnPlane.hh" 37 38 35 using namespace std; 39 36 40 37 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh 41 42 const double DnnPlane::DISTANCE_FOR_CGAL_CHECKS=1.0e-12;43 38 44 39 … … 58 53 _TR.insert(Point(input_points[i].first, input_points[i].second)); 59 54 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 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; 94 63 _supervertex.push_back(sv); 95 64 } … … 107 76 /// Crashes if the given vertex handle already exists. Otherwise 108 77 /// it does the bookkeeping for future such tests 109 int DnnPlane::_CheckIfVertexPresent( 110 const Vertex_handle & vertex, const int its_index) { 78 void DnnPlane::_CrashIfVertexPresent( 79 const Vertex_handle & vertex, const int & its_index) { 80 if (!_crash_on_coincidence) return; 81 111 82 // vertices that do not have the same geometric position as any 112 83 // other vertex so far added have info().val() == NEW_VERTEX -- this … … 119 90 // DNN:DNN) to be equal to a vertex "index". 120 91 if (vertex->info().val() != NEW_VERTEX) { 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; 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 } 132 98 } 133 99 … … 150 116 vector<int> & indices_of_updated_neighbours) { 151 117 152 if (_verbose) cout << "Starting DnnPlane::RemoveAndAddPoints" << endl;153 118 154 119 // build set of UNION of Voronoi neighbours of a pair of nearest … … 159 124 set<int> indices_removed; 160 125 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. 126 // for each of the indices to be removed add the voronoi neighbourhood to 127 // the NeighbourUnion set. 164 128 for (size_t ir = 0; ir < indices_to_remove.size(); ir++) { 165 129 int index = indices_to_remove[ir]; 166 130 indices_removed.insert(index); 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 131 if (_verbose) cout << " Starting RemoveAndAddPoints" << endl; 132 if (_verbose) cout << " point " << index << endl; 187 133 // have a circulators that will go round the Voronoi neighbours of 188 134 // _supervertex[index1].vertex 189 135 Vertex_circulator vc = _TR.incident_vertices(_supervertex[index].vertex); 190 136 Vertex_circulator done = vc; 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 } 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); 207 149 } 208 150 … … 218 160 for (size_t ir = 0; ir < indices_to_remove.size(); ir++) { 219 161 int index = indices_to_remove[ir]; 220 if (_verbose) cout << " removing " << index << endl;221 162 222 163 // NeighbourUnion should not contain the points to be removed 223 164 // (because later we will assume they still exist). 224 165 NeighbourUnion.erase(indices_to_remove[ir]); 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 166 258 167 // points to be removed should also be eliminated from the 259 168 // triangulation and the supervertex structure should be updated … … 283 192 // of the neighbour union happens to be on the wrong side. 284 193 Face_handle face; 285 //if (indices_to_remove.size() > 0) { // GS: use NeighbourUnion instead 286 // (safe also in case of coincidences) 287 if (NeighbourUnion.size() > 0) { 194 if (indices_to_remove.size() > 0) { 288 195 // face can only be found if there were points to remove in first place 289 196 face = _TR.incident_faces( … … 297 204 int index = _supervertex.size()-1; 298 205 indices_added.push_back(index); 299 if (_verbose) cout << " adding " << index << endl; 300 301 //if (indices_to_remove.size() > 0) { 302 if (NeighbourUnion.size() > 0) { 206 207 if (indices_to_remove.size() > 0) { 303 208 // be careful of using face (for location hinting) only when it exists 304 209 _supervertex[index].vertex = _TR.insert(Point(points_to_add[ia].first, … … 308 213 points_to_add[ia].second)); 309 214 } 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 } 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; 340 219 341 220 // first find nearest neighbour of "newpoint" (shorthand for … … 348 227 indices_of_updated_neighbours.push_back(index); 349 228 _SetAndUpdateNearest(index, indices_of_updated_neighbours); 350 351 //cout << "Added: " << setprecision(20) << " ("352 // << points_to_add[ia].first << "," << points_to_add[ia].second353 // << ") with index " << index << endl;354 229 } 355 230 … … 376 251 } 377 252 378 if (_verbose) cout << "Leaving DnnPlane::RemoveAndAddPoints" << endl; 379 } 253 } 254 380 255 381 256 //---------------------------------------------------------------------- 382 257 /// Determines the index and distance of the nearest neighbour to 383 258 /// point j and puts the information into the _supervertex entry for j. 384 void 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 259 void DnnPlane::_SetNearest (const int & j) { 451 260 Vertex_handle current = _supervertex[j].vertex; 452 261 Vertex_circulator vc = _TR.incident_vertices(current); … … 455 264 double mindist = HUGE_DOUBLE; // change this to "HUGE" or max_double? 456 265 Vertex_handle nearest = _TR.infinite_vertex(); 457 266 458 267 // when there is only one finite point left in the triangulation, 459 268 // there are no triangles. Presumably this is why voronoi returns … … 465 274 // find distance between j and its Voronoi neighbour (vc) 466 275 if (_verbose) cout << current->info().val() << " " << vc->info().val() << endl; 467 276 dist = _euclid_distance(current->point(), vc->point()); 468 277 // check if j is closer to vc than vc's currently registered 469 278 // nearest neighbour (and update things if it is) 470 if ( _is_closer_to(current->point(), vc->point(), nearest, dist, mindist)){471 nearest = vc;472 279 if (dist < mindist) { 280 mindist = dist; nearest = vc; 281 if (_verbose) cout << "nearer "; 473 282 } 474 283 if (_verbose) cout << vc->point() << "; "<< dist << endl; 475 284 } 476 285 } while (++vc != done); // move on to next Voronoi neighbour 477 478 286 // set j's supervertex info about nearest neighbour 479 287 _supervertex[j].NNindex = nearest->info().val(); … … 483 291 //---------------------------------------------------------------------- 484 292 /// Determines and stores the nearest neighbour of j, and where 485 /// necessary update sthe nearest-neighbour info of Voronoi neighbours293 /// necessary update the nearest-neighbour info of Voronoi neighbours 486 294 /// of j; 487 295 /// … … 496 304 /// NB: note that we have _SetAndUpdateNearest as a completely 497 305 /// separate routine from _SetNearest because we want to 498 /// use one single cir culation over voronoi neighbours to find the306 /// use one single ciruclation over voronoi neighbours to find the 499 307 /// nearest neighbour and to update the voronoi neighbours if need 500 308 /// be. 501 309 void DnnPlane::_SetAndUpdateNearest( 502 const int j,310 const int & j, 503 311 vector<int> & indices_of_updated_neighbours) { 504 //cout << "SetAndUpdateNearest for point " << j << endl;505 // first deal with coincidences506 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 }512 312 513 313 Vertex_handle current = _supervertex[j].vertex; … … 526 326 if (vc->info().val() != INFINITE_VERTEX) { 527 327 if (_verbose) cout << current->info().val() << " " << vc->info().val() << endl; 528 328 // find distance between j and its Voronoi neighbour (vc) 329 dist = _euclid_distance(current->point(), vc->point()); 529 330 // update the mindist if we are closer than anything found so far 530 if ( _is_closer_to(current->point(), vc->point(), nearest, dist, mindist)){531 nearest = vc;532 331 if (dist < mindist) { 332 mindist = dist; nearest = vc; 333 if (_verbose) cout << "nearer "; 533 334 } 534 535 335 // find index corresponding to vc for easy manipulation 536 336 int vcindx = vc->info().val(); 537 337 if (_verbose) cout << vc->point() << "; "<< dist << endl; 538 539 if (_is_closer_to_with_hint(vc->point(), current->point(), 540 _supervertex[_supervertex[vcindx].NNindex].vertex, 541 dist, _supervertex[vcindx].NNdistance)){ 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) { 542 341 if (_verbose) cout << vcindx << "'s NN becomes " << current->info().val() << endl; 342 _supervertex[vcindx].NNdistance = dist; 543 343 _supervertex[vcindx].NNindex = j; 544 344 indices_of_updated_neighbours.push_back(vcindx); 545 345 } 546 547 // original code without the use of CGAL distance in potentially548 // dangerous cases549 //550 // // check if j is closer to vc than vc's currently registered551 // // nearest neighbour (and update things if it is)552 // //553 // // GS: originally, the distance test below was a strict <. It554 // // has to be <= because if the two distances are ==, it is555 // // possible that the old NN is no longer connected to vc in556 // // the triangulation, and we are sure that the newly557 // // inserted point (j) is (since we loop over j's558 // // 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 // }565 346 } 566 347 } while (++vc != done); // move on to next Voronoi neighbour 567 348 // set j's supervertex info about nearest neighbour 568 //cout << " set to point " << nearest->info().val() << endl;569 349 _supervertex[j].NNindex = nearest->info().val(); 570 350 _supervertex[j].NNdistance = mindist; -
external/fastjet/Error.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : Error.cc 3695 2014-09-18 13:57:56Z cacciari$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/Error.hh" … … 33 31 #include <sstream> 34 32 35 #ifndef __FJCORE__36 33 // printing the stack would need execinfo 37 34 #ifdef FASTJET_HAVE_EXECINFO_H 38 35 #include <execinfo.h> 39 36 #include <cstdlib> 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__ 37 #endif 46 38 47 39 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh … … 52 44 bool Error::_print_backtrace = false; 53 45 ostream * Error::_default_ostr = & cerr; 54 #if (!defined(FASTJET_HAVE_EXECINFO_H)) || defined(__FJCORE__)55 LimitedWarning Error::_execinfo_undefined;56 #endif57 46 58 //----------------------------------------------------------------------59 #ifndef __FJCORE__60 61 // demangling only is included, i.e. --enable-demangling is specified62 // at configure time, execinfo.h is present and the GNU C++ ABI is63 // supported64 #if defined(FASTJET_HAVE_EXECINFO_H) && defined(FASTJET_HAVE_DEMANGLING_SUPPORT)65 // demangle a given backtrace symbol66 //67 // Notes:68 // - at the moment, only the symbol is parsed.69 // - one can get the offset by using70 // "%*[^(]%*[^_]%127[^+)]%64[+x0123456789abcdef]", symbol, offset71 // and checking if sscanf returns 0, 1 or 272 // (offset includes the leading +)73 // - Similarly one could exctract the address and try to convert it74 // into a filename+line number like addr2line does but this seems75 // to require exteral dependencies. If we want to go down that76 // route, one could look into the inplementation o faddr2line(.c)77 // and/or dladdr.78 string 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++ name84 // decryption:85 // %*[^(] matches any number of characters different from "("86 // the * tells not to store in input var87 // %*[^_] matches any number of characters different from "_"88 // the * tells not to store in input var89 // %127[^)+] matches at most 127 characters different from "+"90 // match is stored91 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 symbol100 if (1 == sscanf(symbol, "%127s", temp)) {101 return temp;102 }103 104 //if all else fails, just return the symbol105 return symbol;106 }107 #endif // FASTJET_HAVE_DEMANGLING_SUPPORT && FASTJET_HAVE_EXECINFO_H108 #endif // __FJCORE__109 110 111 //----------------------------------------------------------------------112 47 Error::Error(const std::string & message_in) { 113 48 _message = message_in; 114 115 49 if (_print_errors && _default_ostr){ 116 50 ostringstream oss; 117 51 oss << "fastjet::Error: "<< message_in << endl; 118 52 119 #ifndef __FJCORE__120 53 // only print the stack if execinfo is available and stack enabled 121 54 #ifdef FASTJET_HAVE_EXECINFO_H … … 129 62 oss << "stack:" << endl; 130 63 for (int i = 1; i < size && messages != NULL; ++i){ 131 #ifdef FASTJET_HAVE_DEMANGLING_SUPPORT132 oss << " #" << i << ": " << _demangle(messages[i])133 << " [" << messages[i] << "]" << endl;134 #else135 64 oss << " #" << i << ": " << messages[i] << endl; 136 #endif137 65 } 138 66 free(messages); 139 67 } 140 #endif // FASTJET_HAVE_EXECINFO_H 141 #endif // __FJCORE__ 68 #endif 142 69 143 70 *_default_ostr << oss.str(); … … 156 83 } 157 84 158 //----------------------------------------------------------------------159 void 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 #endif165 _print_backtrace = enabled;166 }167 168 85 FASTJET_END_NAMESPACE 169 86 -
external/fastjet/Error.hh
racf622f r2e8de36 2 2 #define __FASTJET_ERROR_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: Error.hh 3694 2014-09-18 13:21:54Z soyez$4 //STARTHEADER 5 // $Id: Error.hh 2577 2011-09-13 15:11:38Z salam $ 6 6 // 7 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 #include<iostream> 35 33 #include<string> 36 34 #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 #endif41 35 42 36 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh … … 69 63 /// controls whether the backtrace is printed out with the error message or not. 70 64 /// The default is "false". 71 static void set_print_backtrace(bool enabled) ;65 static void set_print_backtrace(bool enabled) {_print_backtrace = enabled;} 72 66 73 67 /// sets the default output stream for all errors; by default … … 78 72 79 73 private: 80 81 #ifndef __FJCORE__82 #if defined(FASTJET_HAVE_EXECINFO_H) && defined(FASTJET_HAVE_DEMANGLING_SUPPORT)83 /// demangle a given backtrace symbol84 std::string _demangle(const char* symbol);85 #endif86 #endif87 88 74 std::string _message; ///< error message 89 75 static bool _print_errors; ///< do we print anything? 90 76 static bool _print_backtrace; ///< do we print the backtrace? 91 77 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 #endif95 78 }; 96 79 -
external/fastjet/FunctionOfPseudoJet.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : FunctionOfPseudoJet.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include <fastjet/FunctionOfPseudoJet.hh> -
external/fastjet/FunctionOfPseudoJet.hh
racf622f r2e8de36 2 2 #define __FASTJET_FUNCTION_OF_PSEUDOJET_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: FunctionOfPseudoJet.hh 3433 2014-07-23 08:17:03Z salam $4 //STARTHEADER 5 // $Id: FunctionOfPseudoJet.hh 2577 2011-09-13 15:11:38Z salam $ 6 6 // 7 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 #include <fastjet/PseudoJet.hh> … … 51 49 FunctionOfPseudoJet(){} 52 50 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); 51 /// ctor that creates a constant function 52 FunctionOfPseudoJet(const TOut &constant_value); 59 53 60 54 /// default dtor (virtual to allow safe polymorphism) -
external/fastjet/GhostedAreaSpec.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : GhostedAreaSpec.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/GhostedAreaSpec.hh" -
external/fastjet/GhostedAreaSpec.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: GhostedAreaSpec.hh 3433 2014-07-23 08:17:03Z salam $3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //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 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 … … 124 122 125 123 // for accessing values set by the user 126 inline double ghost_ rapmax () const {return _ghost_maxrap;}124 inline double ghost_etamax () const {return _ghost_maxrap;} 127 125 inline double ghost_maxrap () const {return _ghost_maxrap;} 128 inline double ghost_etamax () const {return _ghost_maxrap;}129 inline double ghost_maxeta () const {return _ghost_maxrap;}130 126 inline double ghost_area () const {return _ghost_area ;} 131 127 inline double grid_scatter () const {return _grid_scatter;} … … 144 140 // when explicitly modifying values, sometimes call the initializer 145 141 inline void set_ghost_area (double val) {_ghost_area = val; _initialize();} 146 inline void set_ghost_ rapmax (double val) {_ghost_maxrap = val; _initialize();}142 inline void set_ghost_etamax (double val) {_ghost_maxrap = val; _initialize();} 147 143 inline void set_ghost_maxrap (double val) {_ghost_maxrap = val; _initialize();} 148 inline void set_ghost_etamax (double val) {_ghost_maxrap = val; _initialize();}149 inline void set_ghost_maxeta (double val) {_ghost_maxrap = val; _initialize();}150 144 inline void set_grid_scatter (double val) {_grid_scatter = val; } 151 145 inline void set_pt_scatter (double val) {_pt_scatter = val; } -
external/fastjet/JetDefinition.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : JetDefinition.cc 3677 2014-09-09 22:45:25Z soyez$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //STARTHEADER 2 // $Id$ 3 // 4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/JetDefinition.hh" … … 70 68 // cross-check the number of parameters that were declared in setting up the 71 69 // algorithm (passed internally from the public constructors) 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()); 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 } 79 96 } 80 97 … … 89 106 90 107 //---------------------------------------------------------------------- 91 // returns true if the jet definition involves an algorithm92 // 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).95 bool 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 two100 jet_algorithm() == ee_genkt_algorithm // native spherical algorithms101 );102 }103 }104 105 //----------------------------------------------------------------------106 108 string 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 else118 name << " and ";119 name << recombiner()->description();120 121 return name.str();122 }123 124 //----------------------------------------------------------------------125 string JetDefinition::description_no_recombiner() const {126 127 109 ostringstream name; 128 110 if (jet_algorithm() == plugin_algorithm) { 129 111 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(); 130 138 } else if (jet_algorithm() == undefined_jet_algorithm) { 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 139 name << "uninitialised JetDefinition (jet_algorithm=undefined_jet_algorithm)" ; 140 } else { 141 throw Error("JetDefinition::description(): unrecognized jet_algorithm"); 142 } 150 143 return name.str(); 151 144 } 152 145 153 //---------------------------------------------------------------------- 154 string 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 //---------------------------------------------------------------------- 172 unsigned 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 //---------------------------------------------------------------------- 146 182 147 void JetDefinition::set_recombination_scheme( 183 148 RecombinationScheme recomb_scheme) { … … 185 150 186 151 // do not forget to delete the existing recombiner if needed 187 if (_ shared_recombiner()) _shared_recombiner.reset();152 if (_recombiner_shared()) _recombiner_shared.reset(); 188 153 189 154 _recombiner = 0; 190 }191 192 void JetDefinition::set_recombiner(const JetDefinition &other_jet_def){193 // make sure the "invariants" of the other jet def are sensible194 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 recombiner198 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 recombiner204 _recombiner = other_jet_def._recombiner;205 // set the default recombiner appropriately206 _default_recombiner = DefaultRecombiner(external_scheme);207 // and set the _shared_recombiner to the same state208 // as in the other_jet_def, whatever that was209 _shared_recombiner.reset(other_jet_def._shared_recombiner);210 211 // NB: it is tempting to go via set_recombiner and then to sort212 // out the shared part, but this would be dangerous in the213 // specific (rare?) case where other_jet_def is the same as this214 // it deletes_recombiner_when_unused. In that case the shared215 // pointer reset would delete the recombiner.216 155 } 217 156 … … 224 163 if (other_jd.recombination_scheme() != scheme) return false; 225 164 226 // if the scheme is "external", also check that they have the same165 // if the scheme is "external", also check that they ahve the same 227 166 // recombiner 228 167 return (scheme != external_scheme) … … 230 169 } 231 170 232 /// causes the JetDefinition tohandle the deletion of the171 /// allows to let the JetDefinition handle the deletion of the 233 172 /// recombiner when it is no longer used 234 173 void JetDefinition::delete_recombiner_when_unused(){ 235 174 if (_recombiner == 0){ 236 175 throw Error("tried to call JetDefinition::delete_recombiner_when_unused() for a JetDefinition without a user-defined recombination scheme"); 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); 176 } 177 178 _recombiner_shared.reset(_recombiner); 242 179 } 243 180 … … 270 207 case BIpt2_scheme: 271 208 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 at275 // rest. We instead implement the WTA_modp_scheme276 //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";281 209 default: 282 210 ostringstream err; … … 318 246 weightb = pb.perp2(); 319 247 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 pt323 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 at327 // rest. We instead implement the WTA_modp_scheme328 //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 energies332 // ///333 // /// If the particle with the largest energy is at rest, the sum334 // /// remains at rest, implying that the mass of the sum is larger335 // /// than the mass of pa.336 // double Eab = pa.E() + pb.E();337 // double scale = (phard.modp2()==0.0)338 // ? 0.0339 // : 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 pthard344 // and its modp. If we want to avoid repeating the test and do345 // only 2 modp calculations, we'd have to duplicate the code (or346 // use a pair<const PJ&>). An alternative is to write modp_soft as347 // modp_ab-modp_hard but this could suffer from larger rounding348 // errors349 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 modp353 ///354 /// If the hardest particle is at rest, the sum remains at rest355 /// (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;}366 248 default: 367 249 ostringstream err; … … 399 281 case BIpt_scheme: 400 282 case BIpt2_scheme: 401 case WTA_pt_scheme:402 //case WTA_E_scheme:403 case WTA_modp_scheme:404 283 break; 405 284 case pt_scheme: -
external/fastjet/JetDefinition.hh
racf622f r2e8de36 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 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 8 5 // 9 6 //---------------------------------------------------------------------- … … 16 13 // 17 14 // 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 15 // development and are described in hep-ph/0512210. If you use 20 16 // 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. 17 // include a citation to the FastJet paper. 23 18 // 24 19 // FastJet is distributed in the hope that it will be useful, … … 30 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 26 //---------------------------------------------------------------------- 32 //FJENDHEADER 27 //ENDHEADER 28 29 #ifndef __FASTJET_JETDEFINITION_HH__ 30 #define __FASTJET_JETDEFINITION_HH__ 33 31 34 32 #include<cassert> … … 49 47 /// clustering events with kt and cambridge style algorithms. 50 48 enum Strategy { 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. 49 /// fastest form about 500..10^4 90 50 N2MinHeapTiled = -4, 91 51 /// fastest from about 50..500 … … 97 57 /// worse even than the usual N^3 algorithms 98 58 N3Dumb = 0, 99 /// automatic selection of the best (based on N), including 100 /// the LazyTiled strategies that are new to FJ3.1 59 /// automatic selection of the best (based on N) 101 60 Best = 1, 102 61 /// best of the NlnN variants -- best overall for N>10^4. … … 120 79 /// (Does not work for R>=2pi) 121 80 NlnNCam = 12, // 2piMultD 122 /// the automatic strategy choice that was being made in FJ 3.0123 /// (restricted to strategies that were present in FJ 3.0)124 BestFJ30 = 21,125 81 /// the plugin has been used... 126 82 plugin_strategy = 999 … … 131 87 /// \enum JetAlgorithm 132 88 /// the various families of jet-clustering algorithm 133 //134 // [Remember to update the "is_spherical()" routine if any further135 // spherical algorithms are added to the list below]136 89 enum JetAlgorithm { 137 90 /// the longitudinally invariant kt algorithm … … 149 102 /// where p = extra_param() 150 103 genkt_algorithm=3, 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. 104 /// a version of cambridge with a special distance measure for particles 105 /// whose pt is < extra_param() 155 106 cambridge_for_passive_algorithm=11, 156 107 /// a version of genkt with a special distance measure for particles 157 108 /// whose pt is < extra_param() [relevant for passive areas when p<=0] 158 /// ***** NB: THERE IS CURRENTLY NO IMPLEMENTATION FOR THIS ALG *******159 109 genkt_for_passive_algorithm=13, 160 110 //................................................................. … … 181 131 182 132 //====================================================================== 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 /// 133 /// the various recombination schemes 192 134 enum RecombinationScheme { 193 135 /// summing the 4-momenta … … 211 153 /// no preprocessing 212 154 BIpt2_scheme=6, 213 /// pt-based Winner-Takes-All (WTA) recombination: the214 /// result of the recombination has the rapidity, azimuth and mass215 /// of the the PseudoJet with the larger pt, and a pt equal to the216 /// sum of the two pt's217 WTA_pt_scheme=7,218 /// mod-p-based Winner-Takes-All (WTA) recombination: the result of219 /// the recombination gets the 3-vector direction and mass of the220 /// PseudoJet with the larger |3-momentum| (modp), and a221 /// |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 at224 // rest. We instead implement the WTA_modp_scheme225 //226 // // energy-based Winner-Takes-All (WTA) recombination: the result of227 // // the recombination gets the 3-vector direction and mass of the228 // // PseudoJet with the larger energy, and an energy equal to the229 // // to the sum of the two energies230 // WTA_E_scheme=8,231 155 /// for the user's external scheme 232 156 external_scheme = 99 … … 320 244 const Recombiner * recombiner_in, 321 245 Strategy strategy_in = Best) { 322 *this = JetDefinition(jet_algorithm_in, R_in, xtra_param_in,external_scheme, strategy_in);246 *this = JetDefinition(jet_algorithm_in, R_in, external_scheme, strategy_in); 323 247 _recombiner = recombiner_in; 248 set_extra_param(xtra_param_in); 324 249 } 325 250 … … 359 284 RecombinationScheme recomb_scheme_in = E_scheme, 360 285 int nparameters_in = 1); 361 362 /// cluster the supplied particles and returns a vector of resulting363 /// jets, sorted by pt (or energy in the case of spherical,364 /// i.e. e+e-, algorithms). This routine currently only makes365 /// sense for "inclusive" type algorithms.366 template <class L>367 std::vector<PseudoJet> operator()(const std::vector<L> & particles) const;368 286 369 287 /// R values larger than max_allowable_R are not allowed. … … 379 297 380 298 /// set the recombiner class to the one provided 381 ///382 /// Note that in order to associate to a jet definition a recombiner383 /// from another jet definition, it is strongly recommended to use384 /// the set_recombiner(const JetDefinition &) method below. The385 /// latter correctly handles the situations where the jet definition386 /// owns the recombiner (i.e. where delete_recombiner_when_unused387 /// has been called). In such cases, using set_recombiner(const388 /// Recombiner *) may lead to memory corruption.389 299 void set_recombiner(const Recombiner * recomb) { 390 if (_ shared_recombiner()) _shared_recombiner.reset(recomb);300 if (_recombiner_shared()) _recombiner_shared.reset(recomb); 391 301 _recombiner = recomb; 392 302 _default_recombiner = DefaultRecombiner(external_scheme); 393 303 } 394 304 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 jet398 /// definition the recombiner from another jet definition. Compared399 /// to the set_recombiner(const Recombiner *) above, it correctly400 /// handles the case where the jet definition owns the recombiner401 /// (i.e. where delete_recombiner_when_unused has been called)402 void set_recombiner(const JetDefinition &other_jet_def);403 404 305 /// calling this tells the JetDefinition to handle the deletion of 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). 306 /// the recombiner when it is no longer used 409 307 void delete_recombiner_when_unused(); 410 308 … … 412 310 const Plugin * plugin() const {return _plugin;}; 413 311 414 /// calling this causes the JetDefinition tohandle the deletion of the312 /// allows to let the JetDefinition handle the deletion of the 415 313 /// plugin when it is no longer used 416 314 void delete_plugin_when_unused(); … … 435 333 void set_extra_param(double xtra_param) {_extra_param = xtra_param;} 436 334 437 /// return sa pointer to the currently defined recombiner.335 /// return a pointer to the currently defined recombiner. 438 336 /// 439 337 /// Warning: the pointer may be to an internal recombiner (for … … 449 347 450 348 /// returns true if the current jet definitions shares the same 451 /// recombiner as t heone passed as an argument349 /// recombiner as teh one passed as an argument 452 350 bool has_same_recombiner(const JetDefinition &other_jd) const; 453 454 /// returns true if the jet definition involves an algorithm455 /// 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;459 351 460 352 /// return a textual description of the current jet definition 461 353 std::string description() const; 462 354 463 /// returns a description not including the recombiner information464 std::string description_no_recombiner() const;465 466 /// a short textual description of the algorithm jet_alg467 static std::string algorithm_description(const JetAlgorithm jet_alg);468 469 /// the number of parameters associated to a given jet algorithm470 static unsigned int n_parameters_for_algorithm(const JetAlgorithm jet_alg);471 355 472 356 public: … … 578 462 virtual bool exclusive_sequence_meaningful() const {return false;} 579 463 580 /// returns true if the plugin implements an algorithm intended581 /// for use on a spherical geometry (e.g. e+e- algorithms, as582 /// opposed to most pp algorithms, which use a cylindrical,583 /// rapidity-phi geometry).584 virtual bool is_spherical() const {return false;}585 586 464 /// a destructor to be replaced if necessary in derived classes... 587 465 virtual ~Plugin() {}; … … 603 481 DefaultRecombiner _default_recombiner; 604 482 const Recombiner * _recombiner; 605 SharedPtr<const Recombiner> _ shared_recombiner;483 SharedPtr<const Recombiner> _recombiner_shared; 606 484 607 485 }; … … 638 516 639 517 518 519 520 640 521 FASTJET_END_NAMESPACE 641 522 642 // include ClusterSequence which includes the implementation of the643 // templated JetDefinition::operator()(...) member644 #include "fastjet/ClusterSequence.hh"645 646 647 523 #endif // __FASTJET_JETDEFINITION_HH__ -
external/fastjet/LimitedWarning.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : LimitedWarning.cc 3619 2014-08-13 14:17:19Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/LimitedWarning.hh" … … 42 40 43 41 44 // /// output a warning to ostr45 //void LimitedWarning::warn(const std::string & warning) {46 //warn(warning, _default_ostr);47 //}42 /// output a warning to ostr 43 void LimitedWarning::warn(const std::string & warning) { 44 warn(warning, _default_ostr); 45 } 48 46 49 void LimitedWarning::warn(const char *warning, std::ostream * ostr) {47 void LimitedWarning::warn(const std::string & warning, std::ostream * ostr) { 50 48 if (_this_warning_summary == 0) { 51 49 // prepare the information for the summary … … 56 54 // prepare the warning within a string stream 57 55 ostringstream warnstr; 58 warnstr << "WARNING from FastJet: ";56 warnstr << "WARNING: "; 59 57 warnstr << warning; 60 58 _n_warn_so_far++; -
external/fastjet/LimitedWarning.hh
racf622f r2e8de36 2 2 #define __FASTJET_LIMITEDWARNING_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: LimitedWarning.hh 3622 2014-08-13 14:45:45Z salam $4 //STARTHEADER 5 // $Id: LimitedWarning.hh 2577 2011-09-13 15:11:38Z salam $ 6 6 // 7 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 … … 52 50 53 51 /// constructor that provides a user-set max number of warnings 54 LimitedWarning(int max_warn _in) : _max_warn(max_warn_in), _n_warn_so_far(0), _this_warning_summary(0) {}52 LimitedWarning(int max_warn) : _max_warn(max_warn), _n_warn_so_far(0), _this_warning_summary(0) {} 55 53 56 54 /// outputs a warning to standard error (or the user's default 57 55 /// warning stream if set) 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);} 56 void warn(const std::string & warning); 63 57 64 58 /// outputs a warning to the specified stream 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);} 59 void warn(const std::string & warning, std::ostream * ostr); 69 60 70 61 /// sets the default output stream for all warnings (by default … … 79 70 _max_warn_default = max_warn; 80 71 } 81 82 /// the maximum number of warning messages that will be printed83 /// by this instance of the class84 int max_warn() const {return _max_warn;}85 86 /// the number of times so far that a warning has been registered87 /// with this instance of the class.88 int n_warn_so_far() const {return _n_warn_so_far;}89 72 90 73 /// returns a summary of all the warnings that came through the -
external/fastjet/MinHeap.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : MinHeap.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/internal/MinHeap.hh" … … 45 43 /// 46 44 /// . for _heap[i], the "parent" is to be found at (i-1)/2 47 void MinHeap:: initialise(const std::vector<double> & values){45 void MinHeap::_initialise(const std::vector<double> & values){ 48 46 49 47 // fill the high-range of the heap with the largest possible value -
external/fastjet/NNH.hh
racf622f r2e8de36 2 2 #define __FASTJET_NNH_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: NNH.hh 3 433 2014-07-23 08:17:03Z salam $6 // 7 // Copyright (c) 200 5-2014, Matteo Cacciari, Gavin P.Salam and Gregory Soyez4 //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 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 #include<fastjet/ClusterSequence.hh> … … 140 138 class NNBJ; // forward declaration 141 139 142 /// establish the nearest neighbour for jet, and cross check cons istency140 /// establish the nearest neighbour for jet, and cross check constistency 143 141 /// of distances for the other jets that are encountered. Assumes 144 142 /// jet not contained within begin...end -
external/fastjet/PseudoJet.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : PseudoJet.cc 3652 2014-09-03 13:31:13Z salam$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //STARTHEADER 2 // $Id$ 3 // 4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 … … 178 176 // return the product, coeff * jet 179 177 PseudoJet operator* (double coeff, const PseudoJet & jet) { 180 // see the comment in operator*= about ensuring valid rap phi181 // before a multiplication to handle case of multiplication by182 // zero, while maintaining rapidity and phi183 jet._ensure_valid_rap_phi();184 178 //return PseudoJet(coeff*jet.four_mom()); 185 179 // the following code is hopefully more efficient … … 204 198 /// multiply the jet's momentum by the coefficient 205 199 void PseudoJet::operator*=(double coeff) { 206 // operator*= aims to maintain the rapidity and azimuth207 // for the PseudoJet; if they have already been evaluated208 // this is fine, but if they haven't and coeff is sufficiently209 // small as to cause a zero or underflow result, then a subsequent210 // invocation of rap or phi will lead to a non-sensical result.211 // So, here, we preemptively ensure that rapidity and phi212 // are correctly cached213 _ensure_valid_rap_phi();214 200 _px *= coeff; 215 201 _py *= coeff; … … 275 261 276 262 //---------------------------------------------------------------------- 277 /// transform this jet (given in the rest frame of prest) into a jet278 /// in the lab frame263 /// transform this jet (given in lab) into a jet in the rest 264 /// frame of prest 279 265 // 280 266 // NB: code adapted from that in herwig f77 (checked how it worked … … 302 288 303 289 //---------------------------------------------------------------------- 304 /// transform this jet (given in lab) into a jet in the rest305 /// frame of prest290 /// transform this jet (given in the rest frame of prest) into a jet 291 /// in the lab frame; 306 292 // 307 293 // NB: code adapted from that in herwig f77 (checked how it worked … … 601 587 // an Error is thrown if this PseudoJet has no currently valid 602 588 // associated ClusterSequence 603 std::vector<PseudoJet> PseudoJet::exclusive_subjets (const double dcut) const {589 std::vector<PseudoJet> PseudoJet::exclusive_subjets (const double & dcut) const { 604 590 return validated_structure_ptr()->exclusive_subjets(*this, dcut); 605 591 } … … 612 598 // an Error is thrown if this PseudoJet has no currently valid 613 599 // associated ClusterSequence 614 int PseudoJet::n_exclusive_subjets(const double dcut) const {600 int PseudoJet::n_exclusive_subjets(const double & dcut) const { 615 601 return validated_structure_ptr()->n_exclusive_subjets(*this, dcut); 616 602 } … … 861 847 PseudoJet join(const PseudoJet & j1, const PseudoJet & j2){ 862 848 vector<PseudoJet> pieces; 863 pieces.reserve(2);864 849 pieces.push_back(j1); 865 850 pieces.push_back(j2); … … 870 855 PseudoJet join(const PseudoJet & j1, const PseudoJet & j2, const PseudoJet & j3){ 871 856 vector<PseudoJet> pieces; 872 pieces.reserve(3);873 857 pieces.push_back(j1); 874 858 pieces.push_back(j2); … … 880 864 PseudoJet join(const PseudoJet & j1, const PseudoJet & j2, const PseudoJet & j3, const PseudoJet & j4){ 881 865 vector<PseudoJet> pieces; 882 pieces.reserve(4);883 866 pieces.push_back(j1); 884 867 pieces.push_back(j2); -
external/fastjet/PseudoJet.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: PseudoJet.hh 3 566 2014-08-11 15:36:34Z salam $1 //STARTHEADER 2 // $Id: PseudoJet.hh 3111 2013-05-04 08:17:27Z salam $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 … … 573 571 /// structure type 574 572 /// 575 /// If there is no s tructure associated, an Error is thrown.573 /// If there is no sructure associated, an Error is thrown. 576 574 /// If the type is not met, a std::bad_cast error is thrown. 577 575 template<typename StructureType> … … 666 664 /// an Error is thrown if this PseudoJet has no currently valid 667 665 /// associated ClusterSequence 668 std::vector<PseudoJet> exclusive_subjets (const double dcut) const;666 std::vector<PseudoJet> exclusive_subjets (const double & dcut) const; 669 667 670 668 /// return the size of exclusive_subjets(...); still n ln n with same … … 674 672 /// an Error is thrown if this PseudoJet has no currently valid 675 673 /// associated ClusterSequence 676 int n_exclusive_subjets(const double dcut) const;674 int n_exclusive_subjets(const double & dcut) const; 677 675 678 676 /// return the list of subjets obtained by unclustering the supplied … … 696 694 std::vector<PseudoJet> exclusive_subjets_up_to (int nsub) const; 697 695 698 /// Returnsthe dij that was present in the merging nsub+1 -> nsub696 /// return the dij that was present in the merging nsub+1 -> nsub 699 697 /// subjets inside this jet. 700 ///701 /// Returns 0 if there were nsub or fewer constituents in the jet.702 698 /// 703 699 /// an Error is thrown if this PseudoJet has no currently valid … … 705 701 double exclusive_subdmerge(int nsub) const; 706 702 707 /// Returnsthe maximum dij that occurred in the whole event at the703 /// return the maximum dij that occurred in the whole event at the 708 704 /// stage that the nsub+1 -> nsub merge of subjets occurred inside 709 705 /// this jet. 710 ///711 /// Returns 0 if there were nsub or fewer constituents in the jet.712 706 /// 713 707 /// an Error is thrown if this PseudoJet has no currently valid … … 808 802 /// set cached rapidity and phi values 809 803 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 &);813 804 }; 814 805 … … 834 825 /// momentum components are equal to val (=0.0) 835 826 bool operator==(const PseudoJet & jet, const double val); 836 inline bool operator==(const double val, const PseudoJet & jet) {return jet == val;}837 827 838 828 /// Can only be used with val=0 and tests whether at least one of the 839 829 /// four momentum components is different from val (=0.0) 840 inline bool operator!=(const PseudoJet & a, const double val) {return !(a==val);} 841 inline bool operator!=( const double val, const PseudoJet & a) {return !(a==val);} 830 inline bool operator!=(const PseudoJet & a, const double & val) {return !(a==val);} 842 831 843 832 inline double dot_product(const PseudoJet & a, const PseudoJet & b) { … … 892 881 _ref_values = reference_values; 893 882 }; 894 inline int operator() (const int i1, const inti2) const {883 inline int operator() (const int & i1, const int & i2) const { 895 884 return (*_ref_values)[i1] < (*_ref_values)[i2]; 896 885 }; -
external/fastjet/PseudoJetStructureBase.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : PseudoJetStructureBase.cc 3433 2014-07-23 08:17:03Z salam$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //STARTHEADER 2 // $Id$ 3 // 4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 -
external/fastjet/PseudoJetStructureBase.hh
racf622f r2e8de36 2 2 #define __FASTJET_PSEUDOJET_STRUCTURE_BASE_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: PseudoJetStructureBase.hh 3 433 2014-07-23 08:17:03Z salam$6 // 7 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 //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 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 … … 158 156 /// 159 157 /// 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 overload164 /// this function.165 158 virtual std::vector<PseudoJet> exclusive_subjets(const PseudoJet &reference, const double & dcut) const; 166 159 … … 170 163 /// 171 164 /// 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 overload176 /// this function.177 165 virtual int n_exclusive_subjets(const PseudoJet &reference, const double & dcut) const; 178 166 -
external/fastjet/RangeDefinition.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : RangeDefinition.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/RangeDefinition.hh" -
external/fastjet/RangeDefinition.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: RangeDefinition.hh 3433 2014-07-23 08:17:03Z salam $1 //STARTHEADER 2 // $Id: RangeDefinition.hh 2577 2011-09-13 15:11:38Z salam $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __FASTJET_RANGEDEFINITION_HH__ -
external/fastjet/Selector.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : Selector.cc 3504 2014-08-01 06:07:54Z soyez$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 … … 95 93 96 94 return n; 97 }98 99 //----------------------------------------------------------------------100 // sum the momenta of the jets that pass the cuts101 PseudoJet 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 jet106 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 cuts126 double 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 jet131 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 95 } 148 96 … … 1107 1055 class SW_Circle : public SW_WithReference { 1108 1056 public: 1109 SW_Circle(const double radius) : _radius2(radius*radius) {}1057 SW_Circle(const double &radius) : _radius2(radius*radius) {} 1110 1058 1111 1059 /// return a copy of the current object … … 1152 1100 1153 1101 // select on objets within a distance 'radius' of a variable location 1154 Selector SelectorCircle(const double radius) {1102 Selector SelectorCircle(const double & radius) { 1155 1103 return Selector(new SW_Circle(radius)); 1156 1104 } … … 1162 1110 class SW_Doughnut : public SW_WithReference { 1163 1111 public: 1164 SW_Doughnut(const double radius_in, const doubleradius_out)1112 SW_Doughnut(const double &radius_in, const double &radius_out) 1165 1113 : _radius_in2(radius_in*radius_in), _radius_out2(radius_out*radius_out) {} 1166 1114 … … 1211 1159 1212 1160 // select on objets with distance from the centre is between 'radius_in' and 'radius_out' 1213 Selector SelectorDoughnut(const double radius_in, const doubleradius_out) {1161 Selector SelectorDoughnut(const double & radius_in, const double & radius_out) { 1214 1162 return Selector(new SW_Doughnut(radius_in, radius_out)); 1215 1163 } … … 1220 1168 class SW_Strip : public SW_WithReference { 1221 1169 public: 1222 SW_Strip(const double delta) : _delta(delta) {}1170 SW_Strip(const double &delta) : _delta(delta) {} 1223 1171 1224 1172 /// return a copy of the current object … … 1265 1213 1266 1214 // select on objets within a distance 'radius' of a variable location 1267 Selector SelectorStrip(const double half_width) {1215 Selector SelectorStrip(const double & half_width) { 1268 1216 return Selector(new SW_Strip(half_width)); 1269 1217 } … … 1276 1224 class SW_Rectangle : public SW_WithReference { 1277 1225 public: 1278 SW_Rectangle(const double delta_rap, const doubledelta_phi)1226 SW_Rectangle(const double &delta_rap, const double &delta_phi) 1279 1227 : _delta_rap(delta_rap), _delta_phi(delta_phi) {} 1280 1228 … … 1322 1270 1323 1271 // select on objets within a distance 'radius' of a variable location 1324 Selector SelectorRectangle(const double half_rap_width, const doublehalf_phi_width) {1272 Selector SelectorRectangle(const double & half_rap_width, const double & half_phi_width) { 1325 1273 return Selector(new SW_Rectangle(half_rap_width, half_phi_width)); 1326 1274 } -
external/fastjet/Selector.hh
racf622f r2e8de36 2 2 #define __FASTJET_SELECTOR_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: Selector.hh 3 711 2014-09-29 13:54:51Z salam $6 // 7 // Copyright (c) 2009-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 //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 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 #include "fastjet/PseudoJet.hh" … … 69 67 //---------------------------------------------------------- 70 68 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() 69 /// returns true if a given object passes the selection criterion. 70 /// This has to be overloaded by derived workers 78 71 virtual bool pass(const PseudoJet & jet) const = 0; 79 72 80 73 /// For each jet that does not pass the cuts, this routine sets the 81 /// pointer to 0. 82 /// 83 /// It does not assume that the PseudoJet* passed as argume ntare not NULL74 /// pointer to 0. 75 /// 76 /// It does not assume that the PseudoJet* passed as argumetn are not NULL 84 77 virtual void terminator(std::vector<const PseudoJet *> & jets) const { 85 78 for (unsigned i = 0; i < jets.size(); i++) { … … 140 133 throw Error("this selector has no computable area"); 141 134 } 142 143 135 }; 144 136 … … 159 151 Selector(SelectorWorker * worker_in) {_worker.reset(worker_in);} 160 152 153 161 154 #ifndef __FJCORE__ 162 155 /// ctor from a RangeDefinition … … 193 186 /// passes and then evaluating the size of the vector 194 187 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 that199 /// passes and then evaluating the size of the vector200 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 that205 /// passes and then evaluating the size of the vector206 double scalar_pt_sum(const std::vector<PseudoJet> & jets) const;207 188 208 189 /// sift the input jets into two vectors -- those that pass the selector … … 305 286 } 306 287 307 /// class that gets throw nwhen a Selector is applied despite it not288 /// class that gets throw when a Selector is applied despite it not 308 289 /// having a valid underlying worker. 309 290 class InvalidWorker : public Error { … … 312 293 }; 313 294 314 /// class that gets throw n when the area is requested from a Selector for which315 /// the area is not meaningful295 /// class that gets throw when a Selector is applied despite it not 296 /// having a valid underlying worker. 316 297 class InvalidArea : public Error { 317 298 public: … … 452 433 /// select objets within a distance 'radius' from the location of the 453 434 /// reference jet, set by Selector::set_reference(...) 454 Selector SelectorCircle(const double radius);435 Selector SelectorCircle(const double & radius); 455 436 456 437 /// select objets with distance from the reference jet is between 'radius_in' 457 438 /// and 'radius_out'; the reference jet is set by Selector::set_reference(...) 458 Selector SelectorDoughnut(const double radius_in, const doubleradius_out);439 Selector SelectorDoughnut(const double & radius_in, const double & radius_out); 459 440 460 441 /// select objets within a rapidity distance 'half_width' from the 461 442 /// location of the reference jet, set by Selector::set_reference(...) 462 Selector SelectorStrip(const double half_width);443 Selector SelectorStrip(const double & half_width); 463 444 464 445 /// select objets within rapidity distance 'half_rap_width' from the 465 446 /// reference jet and azimuthal-angle distance within 'half_phi_width'; the 466 447 /// reference jet is set by Selector::set_reference(...) 467 Selector SelectorRectangle(const double half_rap_width, const doublehalf_phi_width);448 Selector SelectorRectangle(const double & half_rap_width, const double & half_phi_width); 468 449 469 450 -
external/fastjet/SharedPtr.hh
racf622f r2e8de36 2 2 #define __FASTJET_SHARED_PTR_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: SharedPtr.hh 3 433 2014-07-23 08:17:03Z salam $6 // 7 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 //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 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 #include "fastjet/internal/base.hh" -
external/fastjet/VERSION
racf622f r2e8de36 1 3. 1.01 3.0.6 -
external/fastjet/Voronoi.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : Voronoi.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-2014, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 4 // Copyright (c) 1994 by AT&T Bell Laboratories (see below) 5 // 5 6 // 6 7 //---------------------------------------------------------------------- 7 // This file is part of FastJet. 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. 8 12 // 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 // 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. 13 22 // 14 // The algorithms that underlie FastJet have required considerable15 // development. They are described in the original FastJet paper,16 // hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use17 // FastJet as part of work towards a scientific publication, please18 // quote the version you use and include a citation to the manual and19 // 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 of23 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the24 // GNU General Public License for more details.25 //26 // You should have received a copy of the GNU General Public License27 // along with FastJet. If not, see <http://www.gnu.org/licenses/>.28 23 //---------------------------------------------------------------------- 29 // FJENDHEADER24 //ENDHEADER 30 25 31 26 -
external/fastjet/WrappedStructure.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: WrappedStructure.hh 3433 2014-07-23 08:17:03Z salam $3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //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 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 -
external/fastjet/config_auto.h
racf622f r2e8de36 63 63 #define FASTJET_ENABLE_PLUGIN_TRACKJET /**/ 64 64 #endif 65 66 /* defined if demangling is enabled at configure time and is supported through67 the GNU C++ ABI */68 /* #undef HAVE_DEMANGLING_SUPPORT */69 65 70 66 /* Define to 1 if you have the <dlfcn.h> header file. */ … … 151 147 /* Define to the full name and version of this package. */ 152 148 #ifndef FASTJET_PACKAGE_STRING 153 #define FASTJET_PACKAGE_STRING "FastJet 3. 1.0"149 #define FASTJET_PACKAGE_STRING "FastJet 3.0.6" 154 150 #endif 155 151 … … 161 157 /* Define to the version of this package. */ 162 158 #ifndef FASTJET_PACKAGE_VERSION 163 #define FASTJET_PACKAGE_VERSION "3. 1.0"159 #define FASTJET_PACKAGE_VERSION "3.0.6" 164 160 #endif 165 161 … … 171 167 /* Version number of package */ 172 168 #ifndef FASTJET_VERSION 173 #define FASTJET_VERSION "3. 1.0"169 #define FASTJET_VERSION "3.0.6" 174 170 #endif 175 176 /* Major version of this package */177 #ifndef FASTJET_VERSION_MAJOR178 #define FASTJET_VERSION_MAJOR 3179 #endif180 181 /* Minor version of this package */182 #ifndef FASTJET_VERSION_MINOR183 #define FASTJET_VERSION_MINOR 1184 #endif185 186 /* Version of the package under the form XYYZZ (instead of X.Y.Z) */187 #ifndef FASTJET_VERSION_NUMBER188 #define FASTJET_VERSION_NUMBER 30100189 #endif190 191 /* Patch version of this package */192 #ifndef FASTJET_VERSION_PATCHLEVEL193 #define FASTJET_VERSION_PATCHLEVEL 0194 #endif195 196 /* Pre-release version of this package */197 /* #undef VERSION_PRERELEASE */198 171 199 172 /* once: _INCLUDE_FASTJET_CONFIG_AUTO_H */ -
external/fastjet/config_raw.h
racf622f r2e8de36 37 37 /* The TrackJet plugin is enabled */ 38 38 #define ENABLE_PLUGIN_TRACKJET /**/ 39 40 /* defined if demangling is enabled at configure time and is supported through41 the GNU C++ ABI */42 /* #undef HAVE_DEMANGLING_SUPPORT */43 39 44 40 /* Define to 1 if you have the <dlfcn.h> header file. */ … … 92 88 93 89 /* Define to the full name and version of this package. */ 94 #define PACKAGE_STRING "FastJet 3. 1.0"90 #define PACKAGE_STRING "FastJet 3.0.6" 95 91 96 92 /* Define to the one symbol short name of this package. */ … … 98 94 99 95 /* Define to the version of this package. */ 100 #define PACKAGE_VERSION "3. 1.0"96 #define PACKAGE_VERSION "3.0.6" 101 97 102 98 /* Define to 1 if you have the ANSI C header files. */ … … 104 100 105 101 /* Version number of package */ 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 */ 102 #define VERSION "3.0.6" -
external/fastjet/config_win.h
racf622f r2e8de36 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 1 #define FASTJET_PACKAGE_STRING "FastJet 3.0.6" 2 #define FASTJET_PACKAGE_VERSION "3.0.6" 8 3 9 4 /* The ATLASCone plugin is disabled by default*/ -
external/fastjet/contribs/Nsubjettiness/AUTHORS
racf622f r2e8de36 18 18 JHEP 1202:093 (2012), arXiv:1108.2701. 19 19 20 New 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 26 as well as in unpublished work by Gavin Salam.27 28 20 ---------------------------------------------------------------------- -
external/fastjet/contribs/Nsubjettiness/AxesFinder.cc
racf622f r2e8de36 5 5 // Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason 6 6 // 7 // $Id: AxesFinder.cc 670 2014-06-06 01:24:42Z jthaler $8 7 //---------------------------------------------------------------------- 9 8 // This file is part of FastJet contrib. … … 38 37 template <int N> 39 38 std::vector<LightLikeAxis> AxesFinderFromOnePassMinimization::UpdateAxesFast(const std::vector <LightLikeAxis> & old_axes, 40 const std::vector <fastjet::PseudoJet> & inputJets) const{39 const std::vector <fastjet::PseudoJet> & inputJets) { 41 40 assert(old_axes.size() == N); 42 41 … … 46 45 for (int n = 0; n < N; ++n) { 47 46 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 48 51 new_jets[n].reset_momentum(0.0,0.0,0.0,0.0); 52 #endif 49 53 } 50 54 … … 131 135 // (This is just a wrapper for the templated version above.) 132 136 std::vector<LightLikeAxis> AxesFinderFromOnePassMinimization::UpdateAxes(const std::vector <LightLikeAxis> & old_axes, 133 const std::vector <fastjet::PseudoJet> & inputJets) const{137 const std::vector <fastjet::PseudoJet> & inputJets) { 134 138 int N = old_axes.size(); 135 139 switch (N) { … … 162 166 // uses minimization of N-jettiness to continually update axes until convergence. 163 167 // The function returns the axes found at the (local) minimum 164 std::vector<fastjet::PseudoJet> AxesFinderFromOnePassMinimization::get Axes(int n_jets, const std::vector <fastjet::PseudoJet> & inputJets, const std::vector<fastjet::PseudoJet>& seedAxes) const{168 std::vector<fastjet::PseudoJet> AxesFinderFromOnePassMinimization::getBetterAxes(int n_jets, const std::vector <fastjet::PseudoJet> & inputJets, const std::vector<fastjet::PseudoJet>& seedAxes) { 165 169 166 170 // convert from PseudoJets to LightLikeAxes … … 207 211 } 208 212 209 PseudoJet AxesFinderFromKmeansMinimization::jiggle(const PseudoJet& axis) const{213 PseudoJet AxesFinderFromKmeansMinimization::jiggle(const PseudoJet& axis) { 210 214 double phi_noise = ((double)rand()/(double)RAND_MAX) * _noise_range * 2.0 - _noise_range; 211 215 double rap_noise = ((double)rand()/(double)RAND_MAX) * _noise_range * 2.0 - _noise_range; … … 222 226 223 227 // Repeatedly calls the one pass finder to try to find global minimum 224 std::vector<fastjet::PseudoJet> AxesFinderFromKmeansMinimization::get Axes(int n_jets, const std::vector <fastjet::PseudoJet> & inputJets, const std::vector<fastjet::PseudoJet>& seedAxes) const{228 std::vector<fastjet::PseudoJet> AxesFinderFromKmeansMinimization::getBetterAxes(int n_jets, const std::vector <fastjet::PseudoJet> & inputJets, const std::vector<fastjet::PseudoJet>& seedAxes) { 225 229 226 230 // first iteration … … 252 256 // It continually updates until it reaches convergence or it reaches the maximum number of attempts. 253 257 // This is essentially the same as a stable cone finder. 254 std::vector<fastjet::PseudoJet> AxesFinderFromGeometricMinimization::get Axes(int /*n_jets*/, const std::vector <fastjet::PseudoJet> & particles, const std::vector<fastjet::PseudoJet>& currentAxes) const{258 std::vector<fastjet::PseudoJet> AxesFinderFromGeometricMinimization::getBetterAxes(int n_jets, const std::vector <fastjet::PseudoJet> & particles, const std::vector<fastjet::PseudoJet>& currentAxes) { 255 259 256 260 std::vector<fastjet::PseudoJet> seedAxes = currentAxes; 257 double seedTau = _function .tau(particles, seedAxes);261 double seedTau = _function->tau(particles, seedAxes); 258 262 259 263 for (int i = 0; i < _nAttempts; i++) { … … 266 270 // start from unclustered beam measure 267 271 int minJ = -1; 268 double minDist = _function .beam_distance_squared(particles[i]);272 double minDist = _function->beam_distance_squared(particles[i]); 269 273 270 274 // which axis am I closest to? 271 275 for (unsigned int j = 0; j < seedAxes.size(); j++) { 272 double tempDist = _function .jet_distance_squared(particles[i],seedAxes[j]);276 double tempDist = _function->jet_distance_squared(particles[i],seedAxes[j]); 273 277 if (tempDist < minDist) { 274 278 minDist = tempDist; … … 283 287 // calculate tau on new axes 284 288 seedAxes = newAxes; 285 double tempTau = _function .tau(particles, newAxes);289 double tempTau = _function->tau(particles, newAxes); 286 290 287 291 // close enough to stop? -
external/fastjet/contribs/Nsubjettiness/AxesFinder.hh
racf622f r2e8de36 5 5 // Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason 6 6 // 7 // $Id: AxesFinder.hh 678 2014-06-12 20:43:03Z jthaler $8 7 //---------------------------------------------------------------------- 9 8 // This file is part of FastJet contrib. … … 54 53 class AxesFinder { 55 54 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 56 61 public: 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 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 71 87 //------------------------------------------------------------------------ 72 88 /// \class AxesFinderFromExclusiveJetDefinition … … 74 90 // with different jet algorithms. 75 91 class AxesFinderFromExclusiveJetDefinition : public AxesFinder { 76 77 public: 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 88 private: 89 fastjet::JetDefinition _def; 90 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 } 91 103 }; 92 104 … … 96 108 // winner take all recombination scheme. 97 109 class AxesFinderFromWTA_KT : public AxesFinderFromExclusiveJetDefinition { 98 99 public: 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 107 private: 108 const WinnerTakeAllRecombiner _recomb; 109 110 }; 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 }; 111 120 112 121 //------------------------------------------------------------------------ … … 115 124 // winner take all recombination scheme. 116 125 class AxesFinderFromWTA_CA : public AxesFinderFromExclusiveJetDefinition { 117 public: 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 125 private: 126 const WinnerTakeAllRecombiner _recomb; 127 }; 128 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 //}; 129 170 130 171 //------------------------------------------------------------------------ … … 133 174 // E_scheme recombination. 134 175 class AxesFinderFromKT : public AxesFinderFromExclusiveJetDefinition { 135 public: 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)) {} 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)) {} 142 182 }; 143 183 … … 147 187 // E_scheme recombination. 148 188 class AxesFinderFromCA : public AxesFinderFromExclusiveJetDefinition { 149 public: 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)) {} 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)) {} 156 195 }; 157 196 … … 162 201 // This can be implemented with different jet algorithms. 163 202 class AxesFinderFromHardestJetDefinition : public AxesFinder { 164 public: 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 177 private: 178 fastjet::JetDefinition _def; 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 } 179 216 }; 180 217 … … 184 221 // to an anti kT algorithm and E_scheme. 185 222 class AxesFinderFromAntiKT : public AxesFinderFromHardestJetDefinition { 186 public: 187 AxesFinderFromAntiKT(double R0) 188 : AxesFinderFromHardestJetDefinition( 189 fastjet::JetDefinition(fastjet::antikt_algorithm, 190 R0,fastjet::E_scheme,fastjet::Best)) {} 223 public: 224 AxesFinderFromAntiKT(double R0) : AxesFinderFromHardestJetDefinition(fastjet::JetDefinition(fastjet::antikt_algorithm,R0,fastjet::E_scheme,fastjet::Best)) {} 191 225 }; 192 226 … … 197 231 class AxesFinderFromUserInput : public AxesFinder { 198 232 199 public: 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 } 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 } 207 240 }; 208 241 … … 216 249 class AxesFinderFromOnePassMinimization : public AxesFinder { 217 250 218 public: 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 233 private: 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; 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); 247 279 248 280 }; … … 256 288 class AxesFinderFromKmeansMinimization : public AxesFinder{ 257 289 258 public: 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 268 private: 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; 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 277 311 }; 278 312 … … 283 317 class AxesFinderFromGeometricMinimization : public AxesFinder { 284 318 285 public: 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."); 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); 293 336 } 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 298 private: 299 double _nAttempts; 300 double _accuracy; 301 GeometricMeasureFunction _function; 302 303 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); 304 343 }; 305 344 … … 309 348 // in order to better facilitate calculations. 310 349 class LightLikeAxis { 311 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 312 368 public: 313 369 LightLikeAxis() : _rap(0.0), _phi(0.0), _weight(0.0), _mom(0.0) {} … … 343 399 } 344 400 345 private: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 363 401 }; 364 402 -
external/fastjet/contribs/Nsubjettiness/MeasureFunction.cc
racf622f r2e8de36 5 5 // Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason 6 6 // 7 // $Id: MeasureFunction.cc 670 2014-06-06 01:24:42Z jthaler $8 7 //---------------------------------------------------------------------- 9 8 // This file is part of FastJet contrib. … … 37 36 38 37 // Return all of the necessary TauComponents for specific input particles and axes 39 TauComponents MeasureFunction::result(const std::vector<fastjet::PseudoJet>& particles, const std::vector<fastjet::PseudoJet>& axes) const { 38 TauComponents MeasureFunction::result(const std::vector<fastjet::PseudoJet>& particles, const std::vector<fastjet::PseudoJet>& axes) { 39 40 std::vector<double> jetPieces(axes.size(), 0.0); 41 double beamPiece = 0.0; 40 42 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 } 49 50 std::vector<fastjet::PseudoJet> MeasureFunction::get_partition(const std::vector<fastjet::PseudoJet>& particles, 51 const std::vector<fastjet::PseudoJet>& axes, 52 PseudoJet * beamPartitionStorage) const { 53 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 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) 59 44 for (unsigned i = 0; i < particles.size(); i++) { 60 45 … … 75 60 76 61 if (j_min == -1) { 77 if (_has_beam) beamP artition.push_back(particles[i]);62 if (_has_beam) beamPiece += beam_numerator(particles[i]); 78 63 else assert(_has_beam); // this should never happen. 79 64 } else { 80 jetP artition[j_min].push_back(particles[i]);65 jetPieces[j_min] += jet_numerator(particles[i],axes[j_min]); 81 66 } 82 67 } 83 68 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]); 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 93 77 } 94 78 95 return jetPartitionStorage;96 }97 98 // does partition, but only stores index of PseudoJets99 std::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 pieces105 // Based on which axis the parition is closest to106 for (unsigned i = 0; i < particles.size(); i++) {107 108 // find minimum distance; start with beam (-1) for reference109 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 value113 114 // check to see which axis the particle is closest to115 for (unsigned j = 0; j < axes.size(); j++) {116 double tempRsq = jet_distance_squared(particles[i],axes[j]); // delta R distance117 if (tempRsq < minRsq) {118 minRsq = tempRsq;119 j_min = j;120 }121 }122 123 if (j_min == -1) {124 assert(_has_beam); // consistency check125 } else {126 jetPartition[j_min].push_back(i);127 }128 }129 130 return jetPartition;131 }132 133 134 // Uses existing partition and calculates result135 // TODO: Can we cache this for speed up when doing area subtraction?136 TauComponents 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 factor145 146 // first find jet pieces147 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 piece151 if (_has_denominator) tauDen += denominator(thisPartition[i]); // denominator152 }153 }154 155 // then find beam piece156 if (_has_beam) {157 assert(beamPartitionStorage); // make sure I have beam information158 std::vector<PseudoJet> beamPartition = beamPartitionStorage->constituents();159 160 for (unsigned i = 0; i < beamPartition.size(); i++) {161 beamPiece += beam_numerator(beamPartition[i]); //numerator beam piece162 if (_has_denominator) tauDen += denominator(beamPartition[i]); // denominator163 }164 }165 79 return TauComponents(jetPieces, beamPiece, tauDen, _has_denominator, _has_beam); 166 80 } 167 168 169 170 171 81 172 82 } //namespace contrib -
external/fastjet/contribs/Nsubjettiness/MeasureFunction.hh
racf622f r2e8de36 5 5 // Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason 6 6 // 7 // $Id: MeasureFunction.hh 678 2014-06-12 20:43:03Z jthaler $8 7 //---------------------------------------------------------------------- 9 8 // This file is part of FastJet contrib. … … 32 31 #include <limits> 33 32 34 35 33 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh 36 34 37 35 namespace contrib{ 38 36 37 inline double sq(double x) {return x*x;} 38 39 39 /////// 40 40 // 41 // TauComponents 42 // (eventually we might want to put this in a separate header file) 41 // Measure Function 43 42 // 44 43 /////// 45 44 46 45 /// \class TauComponents 47 46 // This class creates a wrapper for the various tau/subtau values calculated in Njettiness. This class allows Njettiness access to these variables 48 47 // without ever having to do the calculation itself. It takes in subtau numerators and tau denominator from MeasureFunction 49 48 // and outputs tau numerator, and normalized tau and subtau. 49 // TODO: Consider merging with NjettinessExtras. Add axes information? 50 50 class 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 51 66 52 67 public: … … 100 115 double beam_piece() const { return _beam_piece; } 101 116 double tau() const { return _tau; } 102 103 private: 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 117 118 }; 126 119 127 120 //------------------------------------------------------------------------ … … 132 125 class MeasureFunction { 133 126 134 public:135 //These functions define the measure by which tau_N is calculated,136 //and are overloaded by the various measures below137 138 // Distanes to axes. These are called many times, so need to be as fast as possible139 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)jettiness143 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 factor147 virtual double denominator(const fastjet::PseudoJet& particle) const = 0;148 149 //------150 // The functions below call the above functions and are not virtual151 //------152 153 // Return all of the necessary TauComponents for specific input particles and axes154 // Also have optional pointers to get out information about partitioning155 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 needed158 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 internally163 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 algorithm166 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 partition169 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 squaring172 static inline double sq(double x) {return x*x;}173 174 //virtual destructor175 virtual ~MeasureFunction(){}176 177 127 protected: 178 128 //bool set by derived classes to choose whether or not to use the denominator … … 183 133 MeasureFunction(bool has_denominator = true, bool has_beam = true) : _has_denominator(has_denominator), _has_beam(has_beam) {} 184 134 185 }; 186 187 188 /// \class DefaultNormalizedMeasureFunction 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 189 172 // This class is the default measure, inheriting from the class above. This class will calculate tau_N 190 173 // of a jet according to this measure. This measure is defined as the pT of the particle multiplied by deltaR 191 174 // to the power of beta. This class includes the normalization factor determined by R0 192 class DefaultNormalizedMeasureFunction : public MeasureFunction { 193 194 public: 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 219 private: 220 double _beta; 221 double _R0; 222 double _Rcutoff; 223 224 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 225 207 }; 226 208 227 209 //------------------------------------------------------------------------ 228 /// \class DefaultUnnormalizedMeasure Function210 /// \class DefaultUnnormalizedMeasure 229 211 // This class is the unnormalized default measure, inheriting from the class above. The only difference from above 230 212 // is that the denominator is defined to be 1.0 by setting _has_denominator to false. 231 class DefaultUnnormalizedMeasure Function : public DefaultNormalizedMeasureFunction{232 233 public:234 // Since all methods are identical, UnnormalizedMeasure inherits directly235 // 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) {}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 239 221 }; 240 222 241 223 //------------------------------------------------------------------------ 242 /// \class GeometricMeasure Function224 /// \class GeometricMeasure 243 225 // This class is the geometic measure, inheriting from the class above. This class will calculate tau_N 244 226 // of a jet according to this measure. This measure is defined by the Lorentz dot product between 245 227 // the particle and the axis. This class includes normalization of tau_N. 246 class GeometricMeasureFunction : public MeasureFunction { 247 248 public: 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 280 private: 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 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 294 272 } //namespace contrib 295 273 -
external/fastjet/contribs/Nsubjettiness/Njettiness.cc
racf622f r2e8de36 5 5 // Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason 6 6 // 7 // $Id: Njettiness.cc 677 2014-06-12 18:56:46Z jthaler $8 7 //---------------------------------------------------------------------- 9 8 // This file is part of FastJet contrib. … … 36 35 /////// 37 36 38 Njettiness::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 43 Njettiness::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 50 MeasureDefinition* Njettiness::createMeasureDef(MeasureMode measure_mode, int num_para, double para1, double para2, double para3) const { 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) { 51 53 52 54 // definition of maximum Rcutoff for non-cutoff measures, changed later by other measures 53 55 double Rcutoff = std::numeric_limits<double>::max(); //large number 54 // Most (but not all) measures have some kind of beta value55 double beta = std::numeric_limits<double>::quiet_NaN();56 // Most (but all measures have some kind of beta value) 57 double beta = NAN; 56 58 // The normalized measures have an R0 value. 57 double R0 = std::numeric_limits<double>::quiet_NaN();58 59 double R0 = NAN; 60 59 61 // Find the MeasureFunction and set the parameters. 60 62 switch (measure_mode) { … … 62 64 beta = para1; 63 65 R0 = para2; 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 }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); } 69 71 break; 70 72 case unnormalized_measure: 71 73 beta = para1; 72 if( num_para == 1) {73 return new UnnormalizedMeasure(beta);74 }else {75 throw Error("unnormalized_measure needs 1 parameter (beta)");76 }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); } 77 79 break; 78 80 case geometric_measure: 79 81 beta = para1; 80 if (num_para == 1) {81 return new GeometricMeasure(beta);82 }else {83 throw Error("geometric_measure needs 1 parameter (beta)");84 }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); } 85 87 break; 86 88 case normalized_cutoff_measure: … … 88 90 R0 = para2; 89 91 Rcutoff = para3; //Rcutoff parameter is 3rd parameter in normalized_cutoff_measure 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 }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); } 95 97 break; 96 98 case unnormalized_cutoff_measure: 97 99 beta = para1; 98 100 Rcutoff = para2; //Rcutoff parameter is 2nd parameter in normalized_cutoff_measure 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 }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); } 104 106 break; 105 107 case geometric_cutoff_measure: 106 108 beta = para1; 107 109 Rcutoff = para2; //Rcutoff parameter is 2nd parameter in geometric_cutoff_measure 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 }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); } 113 115 break; 114 116 default: 115 117 assert(false); 116 118 break; 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 123 AxesDefinition* Njettiness::createAxesDef(Njettiness::AxesMode axes_mode) const { 124 119 } 120 121 // Choose which AxesFinder from user input. 122 // Uses setOnePassAxesFinder helpful function to use beta and Rcutoff values about (if needed) 125 123 switch (axes_mode) { 126 124 case wta_kt_axes: 127 return new WTA_KT_Axes(); 125 _axesFinder = new AxesFinderFromWTA_KT(); 126 break; 128 127 case wta_ca_axes: 129 return new WTA_CA_Axes(); 128 _axesFinder = new AxesFinderFromWTA_CA(); 129 break; 130 130 case kt_axes: 131 return new KT_Axes(); 131 _axesFinder = new AxesFinderFromKT(); 132 break; 132 133 case ca_axes: 133 return new CA_Axes(); 134 _axesFinder = new AxesFinderFromCA(); 135 break; 134 136 case antikt_0p2_axes: 135 return new AntiKT_Axes(0.2); 137 _axesFinder = new AxesFinderFromAntiKT(0.2); 138 break; 136 139 case onepass_wta_kt_axes: 137 return new OnePass_WTA_KT_Axes(); 140 setOnePassAxesFinder(measure_mode, new AxesFinderFromWTA_KT(), beta, Rcutoff); 141 break; 138 142 case onepass_wta_ca_axes: 139 return new OnePass_WTA_CA_Axes(); 143 setOnePassAxesFinder(measure_mode, new AxesFinderFromWTA_CA(), beta, Rcutoff); 144 break; 140 145 case onepass_kt_axes: 141 return new OnePass_KT_Axes(); 146 setOnePassAxesFinder(measure_mode, new AxesFinderFromKT(), beta, Rcutoff); 147 break; 142 148 case onepass_ca_axes: 143 return new OnePass_CA_Axes(); 149 setOnePassAxesFinder(measure_mode, new AxesFinderFromCA(), beta, Rcutoff); 150 break; 144 151 case onepass_antikt_0p2_axes: 145 return new OnePass_AntiKT_Axes(0.2); 152 setOnePassAxesFinder(measure_mode, new AxesFinderFromAntiKT(0.2), beta, Rcutoff); 153 break; 146 154 case onepass_manual_axes: 147 return new OnePass_Manual_Axes(); 148 case min_axes: 149 return new MultiPass_Axes(100); 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; 150 166 case manual_axes: 151 return new 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; 152 182 default: 153 183 assert(false); 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. 161 void 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)); 184 break; 185 } 186 166 187 } 167 188 168 189 // setAxes for Manual mode 169 void Njettiness::setAxes( const std::vector<fastjet::PseudoJet> &myAxes) {170 if (_ axes_def->supportsManualAxes()) {190 void Njettiness::setAxes(std::vector<fastjet::PseudoJet> myAxes) { 191 if (_current_axes_mode == manual_axes || _current_axes_mode == onepass_manual_axes) { 171 192 _currentAxes = myAxes; 172 } else { 173 throw Error("You can only use setAxes for manual AxesDefinitions"); 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); 174 197 } 175 198 } … … 177 200 // Calculates and returns all TauComponents that user would want. 178 201 // This information is stored in _current_tau_components for later access as well. 179 TauComponents Njettiness::getTauComponents(unsigned n_jets, const std::vector<fastjet::PseudoJet> & inputJets) const{202 TauComponents Njettiness::getTauComponents(unsigned n_jets, const std::vector<fastjet::PseudoJet> & inputJets) { 180 203 if (inputJets.size() <= n_jets) { //if not enough particles, return zero 181 204 _currentAxes = inputJets; … … 183 206 _current_tau_components = TauComponents(); 184 207 _seedAxes = _currentAxes; 185 _currentJets = _currentAxes;186 _currentBeam = PseudoJet(0.0,0.0,0.0,0.0);187 208 } else { 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 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 202 212 } 203 213 return _current_tau_components; … … 209 219 // Each vector element is a list of ints corresponding to the indices in 210 220 // particles of the particles belonging to that jet. 211 std::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 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 217 259 } // namespace contrib 218 260 -
external/fastjet/contribs/Nsubjettiness/Njettiness.hh
racf622f r2e8de36 5 5 // Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason 6 6 // 7 // $Id: Njettiness.hh 670 2014-06-06 01:24:42Z jthaler $8 7 //---------------------------------------------------------------------- 9 8 // This file is part of FastJet contrib. … … 26 25 #define __FASTJET_CONTRIB_NJETTINESS_HH__ 27 26 28 29 27 #include "MeasureFunction.hh" 30 28 #include "AxesFinder.hh" 31 #include "NjettinessDefinition.hh"32 29 33 30 #include "fastjet/PseudoJet.hh" 34 #include "fastjet/SharedPtr.hh"35 #include <fastjet/LimitedWarning.hh>36 37 31 #include <cmath> 38 32 #include <vector> 39 33 #include <list> 40 34 35 41 36 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh 42 37 43 38 namespace contrib { 44 39 45 40 /////// 46 41 // … … 59 54 60 55 // The various axes choices available to the user 61 // It is recommended to use AxesDefinition instead of these.62 56 enum AxesMode { 63 57 kt_axes, // exclusive kt axes … … 84 78 // "normalized_cutoff_measure" was the default in v1.0 of Nsubjettiness 85 79 // "unnormalized_measure" is now the recommended default usage 86 // But it is recommended to use MeasureDefinition instead of these.87 80 enum MeasureMode { 88 81 normalized_measure, //default normalized measure … … 94 87 }; 95 88 96 // Main constructor that uses AxesMode and MeasureDefinition to specify measure 89 private: 90 // The chosen axes/measure modes 91 AxesFinder* _axesFinder; // The chosen axes 92 MeasureFunction* _measureFunction; // The chosen measure 93 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; } 105 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; 115 } 116 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. 97 127 // Unlike Nsubjettiness or NjettinessPlugin, the value N is not chosen 98 Njettiness(const AxesDefinition & axes_def, const MeasureDefinition & measure_def);99 100 // Intermediate constructor (needed to enable v1.0.3 backwards compatibility?)101 Njettiness(AxesMode axes_mode, const MeasureDefinition & measure_def);102 103 // Alternative constructor which takes axes/measure information as enums with measure parameters104 // This version is not recommended105 128 Njettiness(AxesMode axes_mode, 106 129 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 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 113 137 } 114 138 115 // destructor 116 ~Njettiness() {}; 139 ~Njettiness() { 140 // clean house 141 delete _measureFunction; 142 delete _axesFinder; 143 } 117 144 118 145 // setAxes for Manual mode 119 void setAxes( const std::vector<fastjet::PseudoJet> &myAxes);146 void setAxes(std::vector<fastjet::PseudoJet> myAxes); 120 147 121 148 // Calculates and returns all TauComponents that user would want. 122 149 // This information is stored in _current_tau_components for later access as well. 123 TauComponents getTauComponents(unsigned n_jets, const std::vector<fastjet::PseudoJet> & inputJets) const;150 TauComponents getTauComponents(unsigned n_jets, const std::vector<fastjet::PseudoJet> & inputJets); 124 151 125 152 // Calculates the value of N-subjettiness, 126 153 // but only returns the tau value from _current_tau_components 127 double getTau(unsigned n_jets, const std::vector<fastjet::PseudoJet> & inputJets) const{154 double getTau(unsigned n_jets, const std::vector<fastjet::PseudoJet> & inputJets) { 128 155 return getTauComponents(n_jets, inputJets).tau(); 129 156 } 157 158 // returns enum information 159 MeasureMode currentMeasureMode() { return _current_measure_mode;} 160 AxesMode currentAxesMode() { return _current_axes_mode;} 130 161 131 162 // Return all relevant information about tau components 132 TauComponents currentTauComponents() const {return _current_tau_components;} 163 TauComponents currentTauComponents() {return _current_tau_components;} 164 133 165 // Return axes found by getTauComponents. 134 std::vector<fastjet::PseudoJet> currentAxes() const{ return _currentAxes;}166 std::vector<fastjet::PseudoJet> currentAxes() { return _currentAxes;} 135 167 // Return seedAxes used if onepass minimization (otherwise, same as currentAxes) 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;} 168 std::vector<fastjet::PseudoJet> seedAxes() { return _seedAxes;} 141 169 142 170 // partition inputs by Voronoi (each vector stores indices corresponding to inputJets) 143 std::vector<std::list<int> > getPartition List(const std::vector<fastjet::PseudoJet> & inputJets) const;171 std::vector<std::list<int> > getPartition(const std::vector<fastjet::PseudoJet> & inputJets); 144 172 145 private: 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; 173 // partition inputs by Voronoi 174 std::vector<fastjet::PseudoJet> getJets(const std::vector<fastjet::PseudoJet> & inputJets); 175 175 176 176 }; 177 177 178 178 } // namespace contrib 179 179 -
external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.cc
racf622f r2e8de36 5 5 // Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason 6 6 // 7 // $Id: NjettinessPlugin.cc 663 2014-06-03 21:26:41Z jthaler $8 7 //---------------------------------------------------------------------- 9 8 // This file is part of FastJet contrib. … … 30 29 31 30 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) {} 32 38 33 39 std::string NjettinessPlugin::description() const {return "N-jettiness jet finder";} 34 40 35 36 41 // Clusters the particles according to the Njettiness jet algorithm 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 42 // TODO: this code should be revisited to see if if can be made more clear. 39 43 void NjettinessPlugin::run_clustering(ClusterSequence& cs) const 40 44 { 41 45 std::vector<fastjet::PseudoJet> particles = cs.jets(); 42 43 // HACK: remove area information from particles (in case this is called by44 // 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 50 46 _njettinessFinder.getTau(_N, particles); 51 52 std::vector<std::list<int> > partition = _njettinessFinder.getPartitionList(particles); 47 std::vector<std::list<int> > partition = _njettinessFinder.getPartition(particles); 53 48 54 49 std::vector<fastjet::PseudoJet> jet_indices_for_extras; 55 50 56 51 // output clusterings for each jet 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 52 for (size_t i = 0; i < partition.size(); ++i) { 59 53 std::list<int>& indices = partition[i]; 60 54 if (indices.size() == 0) continue; … … 76 70 } 77 71 78 //HACK: Re-reverse order of reading to match CS order79 reverse(jet_indices_for_extras.begin(),jet_indices_for_extras.end());80 81 72 NjettinessExtras * extras = new NjettinessExtras(_njettinessFinder.currentTauComponents(),jet_indices_for_extras,_njettinessFinder.currentAxes()); 82 73 cs.plugin_associate_extras(std::auto_ptr<ClusterSequence::Extras>(extras)); -
external/fastjet/contribs/Nsubjettiness/NjettinessPlugin.hh
racf622f r2e8de36 1 // $Id$ 2 // 1 3 // Nsubjettiness Package 2 4 // Questions/Comments? jthaler@jthaler.net … … 5 7 // Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason 6 8 // 7 // $Id: NjettinessPlugin.hh 671 2014-06-10 17:47:52Z jthaler $8 9 //---------------------------------------------------------------------- 9 10 // This file is part of FastJet contrib. … … 48 49 // to similar information 49 50 class NjettinessExtras : public ClusterSequence::Extras { 51 private: 50 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 51 68 public: 52 69 NjettinessExtras(TauComponents tau_components, std::vector<fastjet::PseudoJet> jets, std::vector<fastjet::PseudoJet> axes) : _tau_components(tau_components), _jets(jets), _axes(axes) {} … … 57 74 std::vector<fastjet::PseudoJet> axes() const {return _axes;} 58 75 59 double totalTau(const fastjet::PseudoJet& /*jet*/) const {76 double totalTau(const fastjet::PseudoJet& jet) const { 60 77 return _tau_components.tau(); 61 78 } 62 63 79 double subTau(const fastjet::PseudoJet& jet) const { 64 if (labelOf(jet) == -1) return std::numeric_limits<double>::quiet_NaN(); // nonsense80 if (labelOf(jet) == -1) return NAN; 65 81 return _tau_components.jet_pieces()[labelOf(jet)]; 66 82 } … … 77 93 return (labelOf(jet) >= 0); 78 94 } 79 80 private: 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 } 95 96 96 }; 97 97 … … 122 122 * onepass_wta_kt_axes : one-pass minimization seeded by wta_kt 123 123 * 124 * For the UnnormalizedMeasure(beta), N-jettiness is defined as:124 * For the unnormalized_measure, N-jettiness is defined as: 125 125 * 126 126 * tau_N = Sum_{all particles i} p_T^i min((DR_i1)^beta, (DR_i2)^beta, ...) … … 129 129 * and jet j. 130 130 * 131 * The NormalizedMeausure include an extra parameter R0, and the various cutoff131 * The normalized_meausure include an extra parameter R0, and the various cutoff 132 132 * measures include an Rcutoff, which effectively defines an angular cutoff 133 133 * similar in effect to a cone-jet radius. … … 138 138 public: 139 139 140 // Constructor with same arguments as Nsubjettiness.141 140 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 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); 178 147 179 148 // Old constructor for backwards compatibility with v1.0, 180 // where NormalizedCutoffMeasure was the only option149 // where normalized_cutoff_measure was the only option 181 150 NjettinessPlugin(int N, 182 151 Njettiness::AxesMode mode, 183 152 double beta, 184 153 double R0, 185 double Rcutoff=std::numeric_limits<double>::max()) 186 : _njettinessFinder(mode, NormalizedCutoffMeasure(beta, R0, Rcutoff)), _N(N) {} 187 154 double Rcutoff=std::numeric_limits<double>::max()); 188 155 189 156 … … 197 164 private: 198 165 199 Njettiness _njettinessFinder;200 166 int _N; 167 mutable Njettiness _njettinessFinder; // TODO: should muck with this so run_clustering can be const without this mutable 201 168 202 169 }; -
external/fastjet/contribs/Nsubjettiness/Nsubjettiness.cc
racf622f r2e8de36 5 5 // Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason 6 6 // 7 // $Id: Nsubjettiness.cc 597 2014-04-16 23:07:55Z jthaler $8 7 //---------------------------------------------------------------------- 9 8 // This file is part of FastJet contrib. -
external/fastjet/contribs/Nsubjettiness/Nsubjettiness.hh
racf622f r2e8de36 5 5 // Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason 6 6 // 7 // $Id: Nsubjettiness.hh 670 2014-06-06 01:24:42Z jthaler $8 7 //---------------------------------------------------------------------- 9 8 // This file is part of FastJet contrib. … … 34 33 #include <climits> 35 34 35 36 36 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh 37 37 … … 49 49 public: 50 50 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) 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) 89 53 Nsubjettiness(int N, 90 54 Njettiness::AxesMode axes_mode, 91 55 Njettiness::MeasureMode measure_mode, 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) {} 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) {} 114 61 115 62 // Old constructor for backwards compatibility with v1.0, … … 120 67 double R0, 121 68 double Rcutoff=std::numeric_limits<double>::max()) 122 : _njettinessFinder(axes_mode, NormalizedCutoffMeasure(beta,R0,Rcutoff)), _N(N) {} 123 69 : _njettinessFinder(axes_mode, Njettiness::normalized_cutoff_measure, beta, R0, Rcutoff), _N(N) {} 70 71 124 72 /// returns tau_N, measured on the constituents of this jet 125 73 double result(const PseudoJet& jet) const; … … 138 86 } 139 87 140 /// returns subjet regions found by result() calculation (these have valid constituents)141 /// Note that the axes and the subjets are not the same142 std::vector<fastjet::PseudoJet> currentSubjets() const {143 return _njettinessFinder.currentJets();144 }145 146 /// returns components of tau_N without recalculating anything147 TauComponents currentTauComponents() const {148 return _njettinessFinder.currentTauComponents();149 }150 151 88 // To set axes for manual use 152 void setAxes( const std::vector<fastjet::PseudoJet> &myAxes) {89 void setAxes(std::vector<fastjet::PseudoJet> myAxes) { 153 90 // Cross check that manual axes are being used is in Njettiness 154 91 _njettinessFinder.setAxes(myAxes); … … 158 95 private: 159 96 160 Njettiness _njettinessFinder; // TODO: should muck with this so result can be const without this mutable97 mutable Njettiness _njettinessFinder; // TODO: should muck with this so result can be const without this mutable 161 98 int _N; 162 99 … … 175 112 NsubjettinessRatio(int N, 176 113 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 parameters183 // Again, likely to be removed184 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,194 114 Njettiness::AxesMode axes_mode, 195 115 Njettiness::MeasureMode measure_mode, 196 double para1) 197 : _nsub_numerator(N, axes_mode, measure_mode, para1), 198 _nsub_denominator(M, axes_mode, measure_mode, para1) {} 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) {} 199 122 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 123 //returns tau_N/tau_M based off the input jet using result function from Nsubjettiness 220 124 double result(const PseudoJet& jet) const; 221 125 -
external/fastjet/contribs/Nsubjettiness/VERSION
racf622f r2e8de36 1 2.1.0 1 1.1.0-beta4 -
external/fastjet/contribs/Nsubjettiness/WinnerTakeAllRecombiner.cc
racf622f r2e8de36 5 5 // Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason 6 6 // 7 // $Id: WinnerTakeAllRecombiner.cc 597 2014-04-16 23:07:55Z jthaler $8 7 //---------------------------------------------------------------------- 9 8 // This file is part of FastJet contrib. … … 34 33 35 34 // recombine pa and pb by creating pab with energy of the sum of particle energies in the direction of the harder particle 35 36 36 // updated recombiner to use more general form of a metric equal to E*(pT/E)^(alpha), which reduces to pT*cosh(rap)^(1-alpha) 37 37 // 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
racf622f r2e8de36 5 5 // Jesse Thaler, Ken Van Tilburg, Christopher K. Vermilion, and TJ Wilkason 6 6 // 7 // $Id: WinnerTakeAllRecombiner.hh 670 2014-06-06 01:24:42Z jthaler $8 7 //---------------------------------------------------------------------- 9 8 // This file is part of FastJet contrib. … … 51 50 52 51 /// recombine pa and pb and put result into pab 53 virtual void recombine(const fastjet::PseudoJet & pa, 54 const fastjet::PseudoJet & pb, 55 fastjet::PseudoJet & pab) const; 52 virtual void recombine(const fastjet::PseudoJet & pa, const fastjet::PseudoJet & pb, fastjet::PseudoJet & pab) const; 56 53 57 54 private: -
external/fastjet/internal/ClosestPair2D.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: ClosestPair2D.hh 3433 2014-07-23 08:17:03Z salam $3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //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 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __FASTJET_CLOSESTPAIR2D__HH__ -
external/fastjet/internal/ClosestPair2DBase.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: ClosestPair2DBase.hh 3433 2014-07-23 08:17:03Z salam $1 //STARTHEADER 2 // $Id: ClosestPair2DBase.hh 2577 2011-09-13 15:11:38Z salam $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __FASTJET_CLOSESTPAIR2DBASE__HH__ -
external/fastjet/internal/ClusterSequence_N2.icc
racf622f r2e8de36 4 4 #include "fastjet/ClusterSequence.hh" 5 5 6 // FJSTARTHEADER6 //STARTHEADER 7 7 // $Id: ClusterSequence_N2.cc 1351 2009-01-09 18:03:03Z salam $ 8 8 // 9 // Copyright (c) 2005-20 14, Matteo Cacciari, Gavin P.Salam and Gregory Soyez9 // Copyright (c) 2005-2009, Matteo Cacciari, Gavin Salam and Gregory Soyez 10 10 // 11 11 //---------------------------------------------------------------------- … … 18 18 // 19 19 // The algorithms that underlie FastJet have required considerable 20 // development. They are described in the original FastJet paper, 21 // hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use 20 // development and are described in hep-ph/0512210. If you use 22 21 // FastJet as part of work towards a scientific publication, please 23 // quote the version you use and include a citation to the manual and 24 // optionally also to hep-ph/0512210. 22 // include a citation to the FastJet paper. 25 23 // 26 24 // FastJet is distributed in the hope that it will be useful, … … 30 28 // 31 29 // You should have received a copy of the GNU General Public License 32 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 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 33 33 //---------------------------------------------------------------------- 34 // FJENDHEADER34 //ENDHEADER 35 35 36 36 //---------------------------------------------------------------------- -
external/fastjet/internal/Dnn2piCylinder.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: Dnn2piCylinder.hh 3442 2014-07-24 07:20:49Z salam $3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //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 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 … … 75 73 /// Returns the index of the nearest neighbour of point labelled 76 74 /// by ii (assumes ii is valid) 77 int NearestNeighbourIndex(const int ii) const ;75 int NearestNeighbourIndex(const int & ii) const ; 78 76 79 77 /// Returns the distance to the nearest neighbour of point labelled 80 78 /// by index ii (assumes ii is valid) 81 double NearestNeighbourDistance(const int ii) const ;79 double NearestNeighbourDistance(const int & ii) const ; 82 80 83 81 /// Returns true iff the given index corresponds to a point that 84 82 /// exists in the DNN structure (meaning that it has been added, and 85 83 /// not removed in the meantime) 86 bool Valid(const int index) const;84 bool Valid(const int & index) const; 87 85 88 86 void RemoveAndAddPoints(const std::vector<int> & indices_to_remove, … … 218 216 /// initialised the class with instructions to ignore this problem the 219 217 /// program will detect and ignore it, or crash. 220 inline int Dnn2piCylinder::NearestNeighbourIndex(const int current) const {218 inline int Dnn2piCylinder::NearestNeighbourIndex(const int & current) const { 221 219 int main_index = _mirror_info[current].main_index; 222 220 int mirror_index = _mirror_info[current].mirror_index; … … 243 241 } 244 242 245 inline double Dnn2piCylinder::NearestNeighbourDistance(const int current) const {243 inline double Dnn2piCylinder::NearestNeighbourDistance(const int & current) const { 246 244 int main_index = _mirror_info[current].main_index; 247 245 int mirror_index = _mirror_info[current].mirror_index; … … 258 256 } 259 257 260 inline bool Dnn2piCylinder::Valid(const int index) const {258 inline bool Dnn2piCylinder::Valid(const int & index) const { 261 259 return (_DNN->Valid(_mirror_info[index].main_index)); 262 260 } -
external/fastjet/internal/Dnn3piCylinder.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: Dnn3piCylinder.hh 3442 2014-07-24 07:20:49Z salam $3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //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 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 … … 72 70 /// Returns the index of the nearest neighbour of point labelled 73 71 /// by ii (assumes ii is valid) 74 int NearestNeighbourIndex(const int ii) const ;72 int NearestNeighbourIndex(const int & ii) const ; 75 73 76 74 /// Returns the distance to the nearest neighbour of point labelled 77 75 /// by index ii (assumes ii is valid) 78 double NearestNeighbourDistance(const int ii) const ;76 double NearestNeighbourDistance(const int & ii) const ; 79 77 80 78 /// Returns true iff the given index corresponds to a point that 81 79 /// exists in the DNN structure (meaning that it has been added, and 82 80 /// not removed in the meantime) 83 bool Valid(const int index) const;81 bool Valid(const int & index) const; 84 82 85 83 void RemoveAndAddPoints(const std::vector<int> & indices_to_remove, … … 206 204 /// initialised the class with instructions to ignore this problem the 207 205 /// program will detect and ignore it, or crash. 208 inline int Dnn3piCylinder::NearestNeighbourIndex(const int current) const {206 inline int Dnn3piCylinder::NearestNeighbourIndex(const int & current) const { 209 207 int main_index = _mirror_info[current].main_index; 210 208 int mirror_index = _mirror_info[current].mirror_index; … … 231 229 } 232 230 233 inline double Dnn3piCylinder::NearestNeighbourDistance(const int current) const {231 inline double Dnn3piCylinder::NearestNeighbourDistance(const int & current) const { 234 232 int main_index = _mirror_info[current].main_index; 235 233 int mirror_index = _mirror_info[current].mirror_index; … … 246 244 } 247 245 248 inline bool Dnn3piCylinder::Valid(const int index) const {246 inline bool Dnn3piCylinder::Valid(const int & index) const { 249 247 return (_DNN->Valid(_mirror_info[index].main_index)); 250 248 } -
external/fastjet/internal/Dnn4piCylinder.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: Dnn4piCylinder.hh 3442 2014-07-24 07:20:49Z salam $1 //STARTHEADER 2 // $Id: Dnn4piCylinder.hh 2577 2011-09-13 15:11:38Z salam $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 … … 59 57 /// Returns the index of the nearest neighbour of point labelled 60 58 /// by ii (assumes ii is valid) 61 int NearestNeighbourIndex(const int ii) const ;59 int NearestNeighbourIndex(const int & ii) const ; 62 60 63 61 /// Returns the distance to the nearest neighbour of point labelled 64 62 /// by index ii (assumes ii is valid) 65 double NearestNeighbourDistance(const int ii) const ;63 double NearestNeighbourDistance(const int & ii) const ; 66 64 67 65 /// Returns true iff the given index corresponds to a point that 68 66 /// exists in the DNN structure (meaning that it has been added, and 69 67 /// not removed in the meantime) 70 bool Valid(const int index) const;68 bool Valid(const int & index) const; 71 69 72 70 void RemoveAndAddPoints(const std::vector<int> & indices_to_remove, … … 100 98 // functions defined above 101 99 102 inline int Dnn4piCylinder::NearestNeighbourIndex(const int current) const {100 inline int Dnn4piCylinder::NearestNeighbourIndex(const int & current) const { 103 101 return (_DNN1->NearestNeighbourDistance(current) < 104 102 _DNN2->NearestNeighbourDistance(current)) ? … … 107 105 } 108 106 109 inline double Dnn4piCylinder::NearestNeighbourDistance(const int current) const {107 inline double Dnn4piCylinder::NearestNeighbourDistance(const int & current) const { 110 108 return (_DNN1->NearestNeighbourDistance(current) < 111 109 _DNN2->NearestNeighbourDistance(current)) ? … … 114 112 } 115 113 116 inline bool Dnn4piCylinder::Valid(const int index) const {114 inline bool Dnn4piCylinder::Valid(const int & index) const { 117 115 return (_DNN1->Valid(index) && _DNN2->Valid(index)); 118 116 } -
external/fastjet/internal/DnnPlane.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: DnnPlane.hh 3442 2014-07-24 07:20:49Z salam $1 //STARTHEADER 2 // $Id: DnnPlane.hh 2577 2011-09-13 15:11:38Z salam $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 … … 46 44 /// class derived from DynamicNearestNeighbours that provides an 47 45 /// implementation for the Euclidean plane 48 ///49 /// This class that uses CGAL Delaunay triangulation for most of the50 /// work (it allows for easy and efficient removal and addition of51 /// points and circulation over a point's neighbours). The treatment52 /// of coincident points is not supported by CGAL and is implemented53 /// according to the method specified in54 /// issue-tracker/2012-02-CGAL-coincident/METHOD55 46 /// \endif 56 47 class DnnPlane : public DynamicNearestNeighbours { … … 66 57 /// Returns the index of the nearest neighbour of point labelled 67 58 /// by ii (assumes ii is valid) 68 int NearestNeighbourIndex(const int ii) const ;59 int NearestNeighbourIndex(const int & ii) const ; 69 60 70 61 /// Returns the distance to the nearest neighbour of point labelled 71 62 /// by index ii (assumes ii is valid) 72 double NearestNeighbourDistance(const int ii) const ;63 double NearestNeighbourDistance(const int & ii) const ; 73 64 74 65 /// Returns true iff the given index corresponds to a point that 75 66 /// exists in the DNN structure (meaning that it has been added, and 76 67 /// not removed in the meantime) 77 bool Valid(const int index) const;68 bool Valid(const int & index) const; 78 69 79 70 void RemoveAndAddPoints(const std::vector<int> & indices_to_remove, … … 89 80 double phi(const int i) const; 90 81 91 private:82 private: 92 83 93 84 /// Structure containing a vertex_handle and cached information on … … 97 88 double NNdistance; 98 89 int NNindex; 99 int coincidence; // ==vertex->info.val() if no coincidence100 // points to the coinciding SV in case of coincidence101 90 // later on for cylinder put a second vertex? 102 91 }; … … 106 95 bool _verbose; 107 96 108 //static const bool _crash_on_coincidence = true;109 static const bool _crash_on_coincidence = false;97 static const bool _crash_on_coincidence = true; 98 //static const bool _crash_on_coincidence = false; 110 99 111 100 Triangulation _TR; /// CGAL object for dealing with triangulations … … 122 111 /// Determines the index and distance of the nearest neighbour to 123 112 /// point j and puts the information into the _supervertex entry for j 124 void _SetNearest(const int j);113 void _SetNearest(const int & j); 125 114 126 115 //---------------------------------------------------------------------- … … 134 123 /// Note that j is NOT pushed onto indices_of_updated_neighbours -- 135 124 /// if you want it there, put it there yourself. 136 void _SetAndUpdateNearest(const int j,125 void _SetAndUpdateNearest(const int & j, 137 126 std::vector<int> & indices_of_updated_neighbours); 138 127 139 128 /// given a vertex_handle returned by CGAL on insertion of a new 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); 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); 145 133 146 //----------------------------------------------------------------------147 /// if the distance between 'pref' and 'candidate' is smaller (or148 /// equal) than the one between 'pref' and 'near', return true and149 /// set 'mindist' to that distance. Note that it is assumed that150 /// 'mindist' is the euclidian distance between 'pref' and 'near'151 ///152 /// Note that the 'near' point is passed through its vertex rather153 /// than as a point. This allows us to handle cases where we have no min154 /// 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 the165 /// 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 its174 // currently registered nearest neighbour 'near' (and update175 // things if it is)176 //177 // Interestingly enough, it has to be pointed out that the use of178 // 'abs' instead of 'std::abs' returns wrong results (apparently179 // ints without any compiler warning)180 //181 // The (near != NULL) test is there for one single reason: when182 // checking that a newly inserted point is not closer than a183 // previous NN, if that distance comparison involves a "nearly184 // degenerate" distance we need to access near->point. But185 // sometimes, in the course of RemoveAndAddPoints, its previous NN186 // has been deleted and its vertex (corresponding to 'near') set187 // to NULL. This is not a problem as all points having a deleted188 // point as NN will have their NN explicitly recomputed at the end189 // of RemoveAndAddPoints so here we should just make sure there is190 // 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 right196 //197 // Note that in the test right above,198 // (abs(dist-mindist)<1e-12) guarantees that the current199 // nearest point is not the infinite vertex and thus200 // nearest->point() is not ill-defined201 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 of208 // a strict ordering <) is important in one case: when checking209 // if a new point is the new NN of one of the points in its210 // neighbourhood, in case of distances being ==, we are sure211 // that 'candidate' is in a cell adjacent to 'pref' while it may212 // 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 this221 /// and the distance between the two points is also smaller than this222 /// then use CGAL to compare the distances.223 static const double DISTANCE_FOR_CGAL_CHECKS;224 225 134 }; 226 135 … … 229 138 // functions defined above 230 139 231 inline int DnnPlane::NearestNeighbourIndex(const int ii) const {140 inline int DnnPlane::NearestNeighbourIndex(const int & ii) const { 232 141 return _supervertex[ii].NNindex;} 233 142 234 inline double DnnPlane::NearestNeighbourDistance(const int ii) const {143 inline double DnnPlane::NearestNeighbourDistance(const int & ii) const { 235 144 return _supervertex[ii].NNdistance;} 236 145 237 inline bool DnnPlane::Valid(const int index) const {146 inline bool DnnPlane::Valid(const int & index) const { 238 147 if (index >= 0 && index < static_cast<int>(_supervertex.size())) { 239 148 return (_supervertex[index].vertex != NULL);} else {return false;} } -
external/fastjet/internal/DynamicNearestNeighbours.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: DynamicNearestNeighbours.hh 3619 2014-08-13 14:17:19Z salam$1 //STARTHEADER 2 // $Id: DynamicNearestNeighbours.hh 2687 2011-11-14 11:17:51Z soyez $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 … … 39 37 #include<cassert> 40 38 #include "fastjet/internal/numconsts.hh" 41 #include "fastjet/Error.hh"42 39 43 40 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh … … 71 68 /// Nearest Neighbours code 72 69 /// \endif 73 class DnnError : public Error{70 class DnnError { 74 71 public: 75 72 // constructors 76 //DnnError() {} 77 DnnError(const std::string & message_in) : Error(message_in) {} 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; 78 81 }; 79 82 … … 109 112 /// Returns the index of the nearest neighbour of point labelled 110 113 /// by ii (assumes ii is valid) 111 virtual int NearestNeighbourIndex(const int ii) const = 0;114 virtual int NearestNeighbourIndex(const int & ii) const = 0; 112 115 113 116 /// Returns the distance to the nearest neighbour of point labelled 114 117 /// by index ii (assumes ii is valid) 115 virtual double NearestNeighbourDistance(const int ii) const = 0;118 virtual double NearestNeighbourDistance(const int & ii) const = 0; 116 119 117 120 /// Returns true iff the given index corresponds to a point that 118 121 /// exists in the DNN structure (meaning that it has been added, and 119 122 /// not removed in the meantime) 120 virtual bool Valid(const int index) const = 0;123 virtual bool Valid(const int & index) const = 0; 121 124 122 125 /// remove the points labelled by the std::vector indices_to_remove, and … … 138 141 /// Remove the point labelled by index and return the list of 139 142 /// points whose nearest neighbours have changed in the process 140 inline void RemovePoint (const int index,143 inline void RemovePoint (const int & index, 141 144 std::vector<int> & indices_of_updated_neighbours) { 142 145 std::vector<int> indices_added; … … 155 158 /// point). 156 159 inline void RemoveCombinedAddCombination( 157 const int index1, const intindex2,160 const int & index1, const int & index2, 158 161 const EtaPhi & newpoint, 159 162 int & index3, -
external/fastjet/internal/IsBase.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: IsBase.hh 3 433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id: IsBase.hh 3071 2013-04-01 12:52:46Z cacciari $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __FASTJET_INTERNAL_IS_BASE_HH__ -
external/fastjet/internal/LimitedWarning.hh
racf622f r2e8de36 2 2 #define __FASTJET_INTERNALLIMITEDWARNING_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: LimitedWarning.hh 3433 2014-07-23 08:17:03Z salam $4 //STARTHEADER 5 // $Id: LimitedWarning.hh 2577 2011-09-13 15:11:38Z salam $ 6 6 // 7 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 -
external/fastjet/internal/MinHeap.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: MinHeap.hh 3433 2014-07-23 08:17:03Z salam $1 //STARTHEADER 2 // $Id: MinHeap.hh 2577 2011-09-13 15:11:38Z salam $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __FASTJET_MINHEAP__HH__ … … 52 50 /// expansion to a maximum size max_size; 53 51 MinHeap (const std::vector<double> & values, unsigned int max_size) : 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) {} 52 _heap(max_size) {_initialise(values);}; 59 53 60 54 /// constructor in which the the maximum size is the size of the values array 61 55 MinHeap (const std::vector<double> & values) : 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 56 _heap(values.size()) {_initialise(values);}; 57 68 58 /// return the location of the minimal value on the heap 69 59 inline unsigned int minloc() const { 70 return (_heap[0].minloc) - &(_heap[0]);} 60 return (_heap[0].minloc) - &(_heap[0]);}; 71 61 72 62 /// return the minimal value on the heap 73 inline double minval() const {return _heap[0].minloc->value;} 63 inline double minval() const {return _heap[0].minloc->value;}; 74 64 75 inline double operator[](int i) const {return _heap[i].value;} 65 inline double operator[](int i) const {return _heap[i].value;}; 76 66 77 67 /// remove the value at the specified location (i.e. replace it with … … 92 82 std::vector<ValueLoc> _heap; 93 83 84 void _initialise(const std::vector<double> & values); 94 85 95 86 -
external/fastjet/internal/SearchTree.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: SearchTree.hh 3 433 2014-07-23 08:17:03Z salam $1 //STARTHEADER 2 // $Id: SearchTree.hh 3107 2013-05-03 15:47:47Z salam $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 … … 190 188 public: 191 189 192 // so that it can access ou r_node object;190 // so that it can access out _node object; 193 191 // note: "class U" needed for clang (v1.1 branches/release_27) compilation 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; 192 template<class U> friend class SearchTree<U>::const_circulator; 200 193 friend class SearchTree<T>; 201 194 -
external/fastjet/internal/Triangulation.hh
racf622f r2e8de36 3 3 #define __FASTJET_TRIANGULATION__ 4 4 5 // FJSTARTHEADER6 // $Id: Triangulation.hh 3433 2014-07-23 08:17:03Z salam $5 //STARTHEADER 6 // $Id: Triangulation.hh 2595 2011-09-23 09:05:04Z salam $ 7 7 // 8 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez8 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 9 9 // 10 10 //---------------------------------------------------------------------- … … 17 17 // 18 18 // The algorithms that underlie FastJet have required considerable 19 // development. They are described in the original FastJet paper, 20 // hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use 19 // development and are described in hep-ph/0512210. If you use 21 20 // FastJet as part of work towards a scientific publication, please 22 // quote the version you use and include a citation to the manual and 23 // optionally also to hep-ph/0512210. 21 // include a citation to the FastJet paper. 24 22 // 25 23 // FastJet is distributed in the hope that it will be useful, … … 31 29 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 32 30 //---------------------------------------------------------------------- 33 // FJENDHEADER31 //ENDHEADER 34 32 35 33 -
external/fastjet/internal/Voronoi.hh
racf622f r2e8de36 2 2 #define __FASTJET__VORONOI_H__ 3 3 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 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 // 8 9 // 9 10 //---------------------------------------------------------------------- 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/>. 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 // 31 26 //---------------------------------------------------------------------- 32 // FJENDHEADER27 //ENDHEADER 33 28 34 29 -
external/fastjet/internal/base.hh
racf622f r2e8de36 1 1 2 // FJSTARTHEADER3 // $Id: base.hh 3433 2014-07-23 08:17:03Z salam $2 //STARTHEADER 3 // $Id: base.hh 2717 2011-11-17 14:15:46Z salam $ 4 4 // 5 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez5 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 6 6 // 7 7 //---------------------------------------------------------------------- … … 14 14 // 15 15 // The algorithms that underlie FastJet have required considerable 16 // development. They are described in the original FastJet paper, 17 // hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use 16 // development and are described in hep-ph/0512210. If you use 18 17 // FastJet as part of work towards a scientific publication, please 19 // quote the version you use and include a citation to the manual and 20 // optionally also to hep-ph/0512210. 18 // include a citation to the FastJet paper. 21 19 // 22 20 // FastJet is distributed in the hope that it will be useful, … … 28 26 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 29 27 //---------------------------------------------------------------------- 30 // FJENDHEADER28 //ENDHEADER 31 29 32 30 #ifndef __FASTJET_FASTJET_BASE_HH__ -
external/fastjet/internal/numconsts.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: numconsts.hh 3433 2014-07-23 08:17:03Z salam $1 //STARTHEADER 2 // $Id: numconsts.hh 2577 2011-09-13 15:11:38Z salam $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 -
external/fastjet/plugins/ATLASCone/ATLASConePlugin.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : ATLASConePlugin.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2007-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 // fastjet stuff -
external/fastjet/plugins/ATLASCone/fastjet/ATLASConePlugin.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: ATLASConePlugin.hh 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id: ATLASConePlugin.hh 2758 2011-11-24 08:31:58Z soyez $ 3 3 // 4 // Copyright (c) 2007-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 // Note on the implementation: -
external/fastjet/plugins/CDFCones/CDFJetCluPlugin.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : CDFJetCluPlugin.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/CDFJetCluPlugin.hh" -
external/fastjet/plugins/CDFCones/CDFMidPointPlugin.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : CDFMidPointPlugin.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/CDFMidPointPlugin.hh" -
external/fastjet/plugins/CDFCones/JetCluAlgorithm.cc
racf622f r2e8de36 11 11 // History of changes compared to the original JetCluAlgorithm.cc file 12 12 // 13 // 2014-08-13 Matteo Cacciari and Gavin Salam14 // * commented out towers variable in JetCluAlgorithm::buildPreClusters15 // interface to avoid compiler warning16 //17 13 // 2011-11-14 Gregory Soyez <soyez@fastjet.fr> 18 14 // … … 59 55 } 60 56 61 // MC+GPS 2014-08-13, commented out the towers variable to avoid an 62 // unused variable warning 63 void JetCluAlgorithm::buildPreClusters(std::vector<Cluster>& seedTowers, std::vector<PhysicsTower>& /*towers*/, 57 void JetCluAlgorithm::buildPreClusters(std::vector<Cluster>& seedTowers, std::vector<PhysicsTower>& towers, 64 58 std::vector<Cluster>& preClusters) 65 59 { -
external/fastjet/plugins/CDFCones/MidPointAlgorithm.cc
racf622f r2e8de36 11 11 // History of changes compared to the original MidPointAlgorithm.cc file 12 12 // 13 // 2014-08-13 Matteo Cacciari and Gavin Salam14 // * changed a number of int -> unsigned (and in one case15 // added explicit conversion to int) to eliminate16 // long-standing compiler warnings17 //18 13 // 2009-01-17 Gregory Soyez <soyez@fastjet.fr> 19 14 // … … 73 68 std::vector< std::vector<bool> > distanceOK; 74 69 distanceOK.resize(stableCones.size() - 1); 75 // MC+GPS 2014-08-13, replaced int with unsigned 76 for(unsigned nCluster1 = 1; nCluster1 < stableCones.size(); nCluster1++){ 70 for(int nCluster1 = 1; nCluster1 < stableCones.size(); nCluster1++){ 77 71 distanceOK[nCluster1 - 1].resize(nCluster1); 78 72 double cluster1Rapidity = stableCones[nCluster1].fourVector.y(); 79 73 double cluster1Phi = stableCones[nCluster1].fourVector.phi(); 80 // MC+GPS 2014-08-13, replaced int with unsigned 81 for(unsigned nCluster2 = 0; nCluster2 < nCluster1; nCluster2++){ 74 for(int nCluster2 = 0; nCluster2 < nCluster1; nCluster2++){ 82 75 double cluster2Rapidity = stableCones[nCluster2].fourVector.y(); 83 76 double cluster2Phi = stableCones[nCluster2].fourVector.phi(); … … 101 94 // Loop over all combinations. Calculate MidPoint. Make midPointClusters. 102 95 bool reduceConeSize = false; 103 // MC+GPS 2014-08-13, replaced int with unsigned 104 for(unsigned iPair = 0; iPair < pairs.size(); iPair++){ 96 for(int iPair = 0; iPair < pairs.size(); iPair++){ 105 97 // Calculate rapidity, phi and pT of MidPoint. 106 98 LorentzVector midPoint(0,0,0,0); 107 // MC+GPS 2014-08-13, replaced int with unsigned 108 for(unsigned iPairMember = 0; iPairMember < pairs[iPair].size(); iPairMember++) 99 for(int iPairMember = 0; iPairMember < pairs[iPair].size(); iPairMember++) 109 100 midPoint.add(stableCones[pairs[iPair][iPairMember]].fourVector); 110 101 iterateCone(midPoint.y(),midPoint.phi(),midPoint.pt(),towers,stableCones,reduceConeSize); … … 183 174 if(testPair.size()) 184 175 nextClusterStart = testPair.back() + 1; 185 // MC+GPS 2014-08-13, replaced int nextCluster with unsigned 186 for(unsigned nextCluster = nextClusterStart; nextCluster <= distanceOK.size(); nextCluster++){ 176 for(int nextCluster = nextClusterStart; nextCluster <= distanceOK.size(); nextCluster++){ 187 177 // Is new SeedCone less than 2*_coneRadius apart from all clusters in testPair? 188 178 bool addCluster = true; 189 // MC+GPS 2014-08-13, replaced int iCluster with unsigned 190 for(unsigned iCluster = 0; iCluster < testPair.size() && addCluster; iCluster++) 179 for(int iCluster = 0; iCluster < testPair.size() && addCluster; iCluster++) 191 180 if(!distanceOK[nextCluster - 1][testPair[iCluster]]) 192 181 addCluster = false; … … 198 187 pairs.push_back(testPair); 199 188 // If not bigger than allowed, find more clusters within 2*_coneRadius. 200 // GPS+MC 2014-08-13, replaced testPair.size() with int(testPair.size()) 201 if(int(testPair.size()) < maxClustersInPair) 189 if(testPair.size() < maxClustersInPair) 202 190 addClustersToPairs(testPair,pairs,distanceOK,maxClustersInPair); 203 191 // All combinations containing testPair found. Remove last element. -
external/fastjet/plugins/CDFCones/fastjet/CDFJetCluPlugin.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: CDFJetCluPlugin.hh 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id: CDFJetCluPlugin.hh 2758 2011-11-24 08:31:58Z soyez $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __CDFJETCLUPLUGIN_HH__ -
external/fastjet/plugins/CDFCones/fastjet/CDFMidPointPlugin.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: CDFMidPointPlugin.hh 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id: CDFMidPointPlugin.hh 2758 2011-11-24 08:31:58Z soyez $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __CDFMIDPOINTPLUGIN_HH__ -
external/fastjet/plugins/CMSIterativeCone/CMSIterativeConePlugin.cc
racf622f r2e8de36 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 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] 5 6 // 6 7 //---------------------------------------------------------------------- 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/>. 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/>. 28 35 //---------------------------------------------------------------------- 29 // FJENDHEADER36 //ENDHEADER 30 37 31 38 // List of changes compared to the original CMS code (revision 1.14 of -
external/fastjet/plugins/CMSIterativeCone/fastjet/CMSIterativeConePlugin.hh
racf622f r2e8de36 1 // FJSTARTHEADER1 //STARTHEADER 2 2 // $Id: CMSIterativeConePlugin.hh 1508 2009-04-10 22:46:49Z soyez $ 3 3 // 4 // Copyright (c) 2007-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __CMSITERATIVECONEPLUGIN_HH__ -
external/fastjet/plugins/D0RunICone/D0RunIBaseConePlugin.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : D0RunIBaseConePlugin.cc 1779 2010-10-25 10:32:59Z soyez$3 // 4 // Copyright (c) 2009-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //STARTHEADER 2 // $Id$ 3 // 4 // Copyright (c) 2009-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 // D0 stuff -
external/fastjet/plugins/D0RunICone/fastjet/D0RunIBaseConePlugin.hh
racf622f r2e8de36 2 2 #define __D0RUNIBASECONEPLUGIN_HH__ 3 3 4 // FJSTARTHEADER4 //STARTHEADER 5 5 // $Id: D0RunIBaseConePlugin.hh 1778 2010-10-25 10:02:58Z soyez $ 6 6 // 7 // Copyright (c) 2009-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez7 // Copyright (c) 2009-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 #include "fastjet/JetDefinition.hh" -
external/fastjet/plugins/D0RunICone/fastjet/D0RunIConePlugin.hh
racf622f r2e8de36 2 2 #define __D0RUNICONEPLUGIN_HH__ 3 3 4 // FJSTARTHEADER4 //STARTHEADER 5 5 // $Id: D0RunIConePlugin.hh 1778 2010-10-25 10:02:58Z soyez $ 6 6 // 7 // Copyright (c) 2009-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez7 // Copyright (c) 2009-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 #include "fastjet/internal/base.hh" // namespace macros (include explicitly to help Doxygen)35 32 #include "D0RunIBaseConePlugin.hh" 36 33 -
external/fastjet/plugins/D0RunICone/fastjet/D0RunIpre96ConePlugin.hh
racf622f r2e8de36 2 2 #define __D0RUNIPRE96CONEPLUGIN_HH__ 3 3 4 // FJSTARTHEADER4 //STARTHEADER 5 5 // $Id: D0RunIpre96ConePlugin.hh 1778 2010-10-25 10:02:58Z soyez $ 6 6 // 7 // Copyright (c) 2009-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez7 // Copyright (c) 2009-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 #include "fastjet/internal/base.hh" // namespace macros (include explicitly to help Doxygen)35 32 #include "D0RunIBaseConePlugin.hh" 36 33 -
external/fastjet/plugins/D0RunIICone/D0RunIIConePlugin.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : D0RunIIConePlugin.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/D0RunIIConePlugin.hh" -
external/fastjet/plugins/D0RunIICone/ILConeAlgorithm.hpp
racf622f r2e8de36 49 49 // 50 50 // 2012-06-12 Gregory Soyez <soyez@fastjet.fr> 51 // 51 52 // * Replaced addItem(...) by this->addItem(...) to allow 52 53 // compilation with gcc 4.7 which no longer performs -
external/fastjet/plugins/D0RunIICone/fastjet/D0RunIIConePlugin.hh
racf622f r2e8de36 2 2 #define __D0RUNIICONEPLUGIN_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: D0RunIIConePlugin.hh 3433 2014-07-23 08:17:03Z salam$4 //STARTHEADER 5 // $Id: D0RunIIConePlugin.hh 2761 2011-11-24 13:54:05Z soyez $ 6 6 // 7 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 #include "fastjet/JetDefinition.hh" -
external/fastjet/plugins/EECambridge/EECambridgePlugin.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : EECambridgePlugin.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2007-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 // fastjet stuff -
external/fastjet/plugins/EECambridge/fastjet/EECambridgePlugin.hh
racf622f r2e8de36 2 2 #define __EECAMBRIDGEPLUGIN_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: EECambridgePlugin.hh 3433 2014-07-23 08:17:03Z salam$4 //STARTHEADER 5 // $Id: EECambridgePlugin.hh 2692 2011-11-14 16:27:44Z soyez $ 6 6 // 7 // Copyright (c) 200 5-2014, Matteo Cacciari, Gavin P.Salam and Gregory Soyez7 // Copyright (c) 2009, Matteo Cacciari, Gavin Salam and Gregory Soyez 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 … … 84 82 virtual bool exclusive_sequence_meaningful() const {return true;} 85 83 86 /// returns true because this plugin is intended for spherical87 /// geometries (i.e. it's an e+e- algorithm).88 virtual bool is_spherical() const {return true;}89 90 84 private: 91 85 double _ycut; -
external/fastjet/plugins/GridJet/GridJetPlugin.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : GridJetPlugin.cc 2268 2011-06-20 15:12:26Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 20 05-2014, Matteo Cacciari, Gavin P.Salam and Gregory Soyez4 // Copyright (c) 2011, Matteo Cacciari, Gavin Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 // fastjet stuff … … 45 43 double requested_grid_spacing, 46 44 const JetDefinition & post_jet_def) : 47 #ifdef FASTJET_GRIDJET_USEFJGRID48 RectangularGrid(ymax, requested_grid_spacing), _post_jet_def(post_jet_def) {49 }50 #else51 45 _ymin(-ymax), _ymax(ymax), 52 46 _requested_grid_spacing(requested_grid_spacing) , … … 55 49 setup_grid(); 56 50 } 57 #endif58 51 59 #ifdef FASTJET_GRIDJET_USEFJGRID60 GridJetPlugin::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_USEFJGRID67 68 #ifndef FASTJET_GRIDJET_USEFJGRID69 52 void GridJetPlugin::setup_grid() { 70 53 // since we've exchanged the arguments of the constructor, … … 86 69 } 87 70 71 88 72 //---------------------------------------------------------------------- 89 int GridJetPlugin::tile_index(const PseudoJet & p) const { 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 { 90 89 // directly taking int does not work for values between -1 and 0 91 90 // so use floor instead … … 109 108 return igrid_res; 110 109 } 111 #endif // not FASTJET_GRIDJET_USEFJGRID112 113 114 //----------------------------------------------------------------------115 string GridJetPlugin::description () const {116 ostringstream desc;117 desc << "GridJetPlugin plugin with ";118 #ifndef FASTJET_GRIDJET_USEFJGRID119 desc << "ymax = " << _ymax << ", dy = " << _dy << ", dphi = " << _dphi << " (requested grid spacing was " << _requested_grid_spacing << ")";120 #else121 desc << RectangularGrid::description();122 #endif123 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 //----------------------------------------------------------------------131 double GridJetPlugin::R() const {return sqrt(drap()*dphi()/pi);}132 110 133 111 … … 139 117 // * a number >= 0 will mean that particle indicated by the index 140 118 // is currently the jet on the grid 141 vector<int> grid( n_tiles(), -1);119 vector<int> grid(_ntotal, -1); 142 120 143 121 int nparticles = cs.jets().size(); … … 148 126 // combine particles with whatever is in the grid 149 127 for (int i = 0; i < nparticles; i++) { 150 int igrd = tile_index(cs.jets()[i]);128 int igrd = igrid(cs.jets()[i]); 151 129 //cout << i << " " << cs.jets()[i].rap() << " " << cs.jets()[i].phi() 152 130 // << " " << igrd << " " << grid.size() << " " << _ntotal << endl; 153 131 if (igrd < 0) continue; 154 assert(igrd <= n_tiles());132 assert(igrd <= _ntotal); 155 133 if (grid[igrd] == -1) { 156 134 grid[igrd] = i; // jet index of initial particle i is i … … 167 145 // make the final jets via iB recombinations 168 146 for (unsigned igrd = 0; igrd < grid.size(); igrd++) { 169 if (grid[igrd] != -1 && tile_is_good(igrd))170 cs.plugin_record_iB_recombination(grid[igrd],dij_or_diB);147 if (grid[igrd] != -1) cs.plugin_record_iB_recombination(grid[igrd], 148 dij_or_diB); 171 149 } 172 150 } else { -
external/fastjet/plugins/GridJet/fastjet/GridJetPlugin.hh
racf622f r2e8de36 1 #ifndef __ FASTJET_GRIDJETPLUGIN_HH__2 #define __ FASTJET_GRIDJETPLUGIN_HH__1 #ifndef __GRIDJETPLUGIN_HH__ 2 #define __GRIDJETPLUGIN_HH__ 3 3 4 // FJSTARTHEADER4 //STARTHEADER 5 5 // $Id: GridJetPlugin.hh 2267 2011-06-20 15:10:23Z salam $ 6 6 // 7 // Copyright (c) 20 05-2014, Matteo Cacciari, Gavin P.Salam and Gregory Soyez7 // Copyright (c) 2011, Matteo Cacciari, Gavin Salam and Gregory Soyez 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 35 33 #include "fastjet/JetDefinition.hh" 36 37 // makes it easy to switch back and forth between use of38 // RectangularGrid or not; this got enabled in FJ3.139 #define FASTJET_GRIDJET_USEFJGRID40 41 #ifdef FASTJET_GRIDJET_USEFJGRID42 #include "fastjet/RectangularGrid.hh"43 #endif44 34 45 35 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh … … 59 49 /// but is rather provided for comparison purposes with the 60 50 /// GridMedianBackgroundEstimator (which is even faster). 61 class GridJetPlugin : public JetDefinition::Plugin 62 #ifdef FASTJET_GRIDJET_USEFJGRID 63 , RectangularGrid 64 #endif 65 { 51 class GridJetPlugin : public JetDefinition::Plugin { 66 52 public: 67 /// Basicconstructor for the GridJetPlugin Plugin class.53 /// Main constructor for the GridJetPlugin Plugin class. 68 54 /// 69 55 /// \param ymax The maximal rapidity extent of the grid … … 76 62 const JetDefinition & post_jet_def = JetDefinition()); 77 63 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 // } 64 /// copy constructor 65 GridJetPlugin (const GridJetPlugin & plugin) { 66 *this = plugin; 67 } 97 68 98 69 // the things that are required by base class … … 104 75 virtual double R() const; 105 76 106 // As of FastJet 3.1 the following functions become available through107 // the underlying RectangularGrid class.108 #ifndef FASTJET_GRIDJET_USEFJGRID109 77 /// returns the actual rapidity spacing of the grid 110 78 double drap() const {return _dy;} … … 115 83 /// returns the maximum rapidity of the grid 116 84 double rapmax() const {return _ymax;} 117 #endif118 85 119 86 private: 120 87 121 #ifndef FASTJET_GRIDJET_USEFJGRID122 88 void setup_grid(); 123 89 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;} 90 int igrid(const PseudoJet & p) const; 129 91 130 92 double _ymin, _ymax, _dy, _dphi, _requested_grid_spacing; 131 93 int _ny, _nphi, _ntotal; 132 #endif133 94 134 95 JetDefinition _post_jet_def; … … 138 99 FASTJET_END_NAMESPACE // defined in fastjet/internal/base.hh 139 100 140 #endif // __ FASTJET_GRIDJETPLUGIN_HH__101 #endif // __GRIDJETPLUGIN_HH__ 141 102 -
external/fastjet/plugins/Jade/JadePlugin.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : JadePlugin.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2007-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 // fastjet stuff -
external/fastjet/plugins/Jade/fastjet/JadePlugin.hh
racf622f r2e8de36 2 2 #define __JADEPLUGIN_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: JadePlugin.hh 3433 2014-07-23 08:17:03Z salam $4 //STARTHEADER 5 // $Id: JadePlugin.hh 2577 2011-09-13 15:11:38Z salam $ 6 6 // 7 // Copyright (c) 200 5-2014, Matteo Cacciari, Gavin P.Salam and Gregory Soyez7 // Copyright (c) 2009, Matteo Cacciari, Gavin Salam and Gregory Soyez 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 #include "fastjet/JetDefinition.hh" -
external/fastjet/plugins/NestedDefs/NestedDefsPlugin.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : NestedDefsPlugin.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2007-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 // TODO -
external/fastjet/plugins/NestedDefs/fastjet/NestedDefsPlugin.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: NestedDefsPlugin.hh 3433 2014-07-23 08:17:03Z salam $1 //STARTHEADER 2 // $Id: NestedDefsPlugin.hh 2577 2011-09-13 15:11:38Z salam $ 3 3 // 4 // Copyright (c) 2007-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __NESTEDALGSPLUGIN_HH__ -
external/fastjet/plugins/SISCone/SISConePlugin.cc
racf622f r2e8de36 21 21 four_vector.E); 22 22 } 23 24 //======================================================================25 // wrap-up around siscone's user-defined scales26 namespace siscone_plugin_internal{27 /// @ingroup internal28 /// \class SISConeUserScale29 /// class that makes the transition between the internal SISCone30 /// user-defined scale choice (using SISCone's Cjet) and31 /// user-defined scale choices in the plugn above (using FastJet's32 /// 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 a36 /// reference to the current cluster sequence (to access the37 /// 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 jet43 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 than48 /// the scale associated to jet b49 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::Cjet55 ///56 /// Note that it is tempting to overload the PseudoJet ctor. This57 /// would not work because down the line we need to access the58 /// original PseudoJet through the ClusterSequence and therefore59 /// the PseudoJet structure needs to be aware of the60 /// 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 material74 //======================================================================75 23 76 24 … … 97 45 desc << "SISCone jet algorithm with " ; 98 46 desc << "cone_radius = " << cone_radius () << ", "; 99 if (_progressive_removal) 100 desc << "progressive-removal mode, "; 101 else 102 desc << "overlap_threshold = " << overlap_threshold () << ", "; 47 desc << "overlap_threshold = " << overlap_threshold () << ", "; 103 48 desc << "n_pass_max = " << n_pass_max () << ", "; 104 49 desc << "protojet_ptmin = " << protojet_ptmin() << ", "; 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 } 50 desc << sm_scale_string << ", "; 51 desc << "caching turned " << (caching() ? on : off); 52 desc << ", SM stop scale = " << _split_merge_stopping_scale; 116 53 117 54 // add a note to the description if we use the pt-weighted splitting … … 148 85 bool new_siscone = true; // by default we'll be running it 149 86 150 if (caching() && !_progressive_removal) {87 if (caching()) { 151 88 152 89 // Establish if we have a cached run with the same R, npass and … … 201 138 // run the jet finding 202 139 //cout << "plg sms: " << split_merge_scale() << endl; 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 } 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())); 218 143 } else { 219 144 // rerun the jet finding … … 230 155 SISConeExtras * extras = new SISConeExtras(n); 231 156 232 // the ordering in which the inclusive jets are transfered here is233 // deliberate and ensures that when a user asks for234 // inclusive_jets(), they are provided in the order in which SISCone235 // created them.236 157 for (int ijet = njet-1; ijet >= 0; ijet--) { 237 158 const Cjet & jet = siscone->jets[ijet]; // shorthand … … 286 207 287 208 // give the extras object to the cluster sequence. 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); 209 clust_seq.plugin_associate_extras(std::auto_ptr<ClusterSequence::Extras>(extras)); 294 210 } 295 211 … … 299 215 } 300 216 301 // //======================================================================302 // // material to handle user-defined scales303 //304 // //--------------------------------------------------305 // // SISCone structure type306 //307 // // the textual descripotion308 // std::string SISConePlugin::UserScaleBase::StructureType::description() const{309 // return "PseudoJet wrapping a siscone::Cjet stable cone";310 // }311 //312 // // retrieve the constituents313 // //314 // // if you simply need to iterate over the constituents, it will be315 // // 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 constituents325 // unsigned int SISConePlugin::UserScaleBase::StructureType::size() const{326 // return _jet.n;327 // }328 //329 // // returns the index (in the original particle list) of the ith330 // // constituent331 // 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 cone341 // 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 cone346 // double SISConePlugin::UserScaleBase::StructureType::ordering_var2() const{347 // return _jet.sm_var2;348 // }349 350 351 217 FASTJET_END_NAMESPACE // defined in fastjet/internal/base.hh -
external/fastjet/plugins/SISCone/area.cc
racf622f r2e8de36 22 22 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 23 23 // // 24 // $Revision:: 149$//25 // $Date:: 2007-03-15 00:13:58 +0100 (Thu, 15 Mar 2007)$//24 // $Revision:: $// 25 // $Date:: $// 26 26 /////////////////////////////////////////////////////////////////////////////// 27 27 -
external/fastjet/plugins/SISCone/area.h
racf622f r2e8de36 22 22 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 23 23 // // 24 // $Revision:: 149$//25 // $Date:: 2007-03-15 00:13:58 +0100 (Thu, 15 Mar 2007)$//24 // $Revision:: $// 25 // $Date:: $// 26 26 /////////////////////////////////////////////////////////////////////////////// 27 27 -
external/fastjet/plugins/SISCone/circulator.h
racf622f r2e8de36 22 22 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 23 23 // // 24 // $Revision:: 103$//25 // $Date:: 2007-02-18 17:07:34 +0100 (Sun, 18 Feb 2007)$//24 // $Revision:: $// 25 // $Date:: $// 26 26 /////////////////////////////////////////////////////////////////////////////// 27 27 -
external/fastjet/plugins/SISCone/config.h
racf622f r2e8de36 49 49 50 50 /* Define to the full name and version of this package. */ 51 #define PACKAGE_STRING "SISCone 3.0.0"51 #define PACKAGE_STRING "SISCone 2.0.6" 52 52 53 53 /* Define to the one symbol short name of this package. */ … … 58 58 59 59 /* Define to the version of this package. */ 60 #define PACKAGE_VERSION " 3.0.0"60 #define PACKAGE_VERSION "2.0.6" 61 61 62 62 /* Define to 1 if you have the ANSI C header files. */ … … 64 64 65 65 /* Version number of package */ 66 #define VERSION " 3.0.0"66 #define VERSION "2.0.6" -
external/fastjet/plugins/SISCone/defines.h
racf622f r2e8de36 22 22 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 23 23 // // 24 // $Revision:: 225$//25 // $Date:: 2008-05-20 16:59:47 +0200 (Tue, 20 May 2008)$//24 // $Revision:: $// 25 // $Date:: $// 26 26 /////////////////////////////////////////////////////////////////////////////// 27 27 -
external/fastjet/plugins/SISCone/fastjet/SISConeBasePlugin.hh
racf622f r2e8de36 43 43 SISConeBasePlugin (){ 44 44 _use_jet_def_recombiner = false; 45 set_progressive_removal(false);46 45 } 47 46 … … 50 49 *this = plugin; 51 50 } 52 53 /// set whether to use SISCone with progressive removal instead of54 /// the default split_merge step.55 ///56 /// If progressive removal is enabled, the following SISCone57 /// variables are not used:58 ///59 /// - overlap_threshold60 /// - caching61 /// - split_merge_stopping_scale62 ///63 /// The split_merge_scale choice is reinterpreted as the ordering64 /// variable for progressive removal. It is also possible for the65 /// user to supply his/her own function for the scale that orders66 /// 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 enabled72 bool progressive_removal() const{ return _progressive_removal;}73 51 74 52 /// the cone radius … … 127 105 } 128 106 129 // user-defined scale for progressive removal130 //------------------------------------------------------------131 132 /// \class UserScaleBase133 /// base class for user-defined ordering of stable cones (used for134 /// prorgessive removal)135 ///136 /// derived classes have to implement the () operator that returns137 /// 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 issues141 /// known to lead to possible infrared unsafeties.142 ///143 /// The jets that are passed to this class will carry the structure144 /// of type SISConePlugin::StructureType which allows to retreive145 /// 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 details154 class UserScaleBase : public FunctionOfPseudoJet<double>{155 public:156 /// empty virtual dtor157 virtual ~UserScaleBase(){}158 159 /// returns the scale associated with a given jet160 ///161 /// "progressive removal" iteratively removes the stable cone with162 /// the largest scale163 virtual double result(const PseudoJet & jet) const = 0;164 165 /// returns true when the scale associated with jet a is larger than166 /// the scale associated with jet b167 ///168 /// By default this does a simple direct comparison but it can be169 /// overloaded for higher precision [recommended if possible]170 virtual bool is_larger(const PseudoJet & a, const PseudoJet & b) const;171 172 class StructureType; // defined below173 };174 175 // template class derived from UserScaleBase::StryctureType that176 // works for both SISCone jet classes177 // implemented below178 template<class Tjet>179 class UserScaleBaseStructureType;180 181 /// set a user-defined scale for stable-cone ordering in182 /// progressive removal183 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 189 107 // the things that one MUST overload required by base class 190 108 //--------------------------------------------------------- … … 202 120 double _split_merge_stopping_scale; 203 121 bool _use_jet_def_recombiner; 204 bool _progressive_removal;205 122 206 123 mutable double _ghost_sep_scale; … … 209 126 /// call the re-clustering itself 210 127 virtual void reset_stored_plugin() const =0; 211 212 const UserScaleBase * _user_scale;213 128 214 129 }; … … 270 185 inline SISConeBaseExtras::~SISConeBaseExtras(){} 271 186 272 //----------------------------------------------------------------------273 // implementation of the structure type associated with the UserScaleBase class274 275 /// \class SISConeBasePlugin::UserScaleBase::StructureType276 /// the structure that allows to store the information contained277 /// into a siscone::Cjet (built internally in SISCone from a stable278 /// cone) into a PseudoJet279 class SISConeBasePlugin::UserScaleBase::StructureType : public PseudoJetStructureBase {280 public:281 /// base ctor (constructed from a ClusterSequence tin order to have282 /// access to the initial particles283 StructureType(const ClusterSequence &cs)284 : _cs(cs){}285 286 /// empty virtual dtor287 virtual ~StructureType(){}288 289 //--------------------------------------------------290 // members inherited from the base class291 /// the textual descripotion292 virtual std::string description() const{293 return "PseudoJet wrapping a siscone jet from a stable cone";294 }295 296 /// this structure has constituents297 virtual bool has_constituents() const {return true;}298 299 /// retrieve the constituents300 ///301 /// if you simply need to iterate over the constituents, it will be302 /// 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 structure313 314 /// returns the number of constituents315 virtual unsigned int size() const = 0;316 317 /// returns the index (in the original particle list) of the ith318 /// constituent319 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 cone327 // virtual double pt_tilde() const = 0;328 329 /// returns the sm_var2 (signed ordering variable squared) for this stable cone330 virtual double ordering_var2() const = 0;331 332 protected:333 const ClusterSequence &_cs; ///< a reference to the CS (for access to the particles)334 };335 336 337 ///@ingroup internal338 /// template class derived from UserScaleBase::StryctureType that339 /// works for both SISCone jet classes340 /// implemented below341 template<class Tjet>342 class SISConeBasePlugin::UserScaleBaseStructureType : public UserScaleBase::StructureType{343 public:344 UserScaleBaseStructureType(const Tjet &jet, const ClusterSequence &cs)345 : UserScaleBase::StructureType(cs), _jet(jet){}346 347 /// empty virtual dtor348 virtual ~UserScaleBaseStructureType(){}349 350 //--------------------------------------------------351 // additional information relevant for this structure352 353 /// returns the number of constituents354 virtual unsigned int size() const{355 return _jet.n;356 }357 358 /// returns the index (in the original particle list) of the ith359 /// constituent360 virtual int constituent_index(unsigned int i) const{361 return _jet.contents[i];362 }363 364 // /// returns the scalar pt of this stable cone365 // virtual double pt_tilde() const{366 // return _jet.pt_tilde;367 // }368 369 /// returns the sm_var2 (signed ordering variable squared) for this stable cone370 virtual double ordering_var2() const{371 return _jet.sm_var2;372 }373 374 protected:375 const Tjet &_jet; ///< a reference to the internal jet in SISCone376 };377 378 187 379 188 FASTJET_END_NAMESPACE // defined in fastjet/internal/base.hh -
external/fastjet/plugins/SISCone/fastjet/SISConePlugin.hh
racf622f r2e8de36 7 7 namespace siscone{ 8 8 class Csiscone; 9 class Cjet;10 9 } 11 10 … … 75 74 /// enum for the different split-merge scale choices; 76 75 /// Note that order _must_ be the same as in siscone 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 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 85 83 }; 86 84 … … 110 108 _split_merge_stopping_scale = split_merge_stopping_scale_in; 111 109 _ghost_sep_scale = 0.0; 112 _use_pt_weighted_splitting = false; 113 _user_scale = 0;} 110 _use_pt_weighted_splitting = false;} 114 111 115 112 … … 128 125 _split_merge_stopping_scale = 0.0; 129 126 _split_merge_scale = split_merge_on_transverse_mass_in ? SM_mt : SM_pttilde; 130 _ghost_sep_scale = 0.0; 131 _user_scale = 0;} 127 _ghost_sep_scale = 0.0;} 132 128 133 129 /// backwards compatible constructor for the SISCone Plugin class … … 145 141 _split_merge_stopping_scale = 0.0; 146 142 _ghost_sep_scale = 0.0; 147 _use_pt_weighted_splitting = false; 148 _user_scale = 0;} 143 _use_pt_weighted_splitting = false;} 149 144 150 145 /// minimum pt for a protojet to be considered in the split-merge step … … 196 191 }; 197 192 198 199 /////\class SISConePlugin::UserScaleBase::StructureType200 ///// the structure that allows to store the information contained201 ///// into a siscone::Cjet (built internally in SISCone from a stable202 ///// cone) into a PseudoJet203 //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 class210 // /// the textual descripotion211 // virtual std::string description() const;212 //213 // /// this structure has constituents214 // virtual bool has_constituents() const {return true;}215 //216 // /// retrieve the constituents217 // ///218 // /// if you simply need to iterate over the constituents, it will be219 // /// 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 structure224 //225 // /// returns the number of constituents226 // unsigned int size() const;227 //228 // /// returns the index (in the original particle list) of the ith229 // /// constituent230 // 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 cone236 // double pt_tilde() const;237 //238 // /// returns the sm_var2 (signed ordering variable squared) for this stable cone239 // double ordering_var2() const;240 //241 //protected:242 // const siscone::Cjet &_jet; ///< a dreference to the internal jet in SISCone243 // const ClusterSequence &_cs; ///< a reference to the CS (for access to the particles)244 //};245 193 246 194 //====================================================================== -
external/fastjet/plugins/SISCone/fastjet/SISConeSphericalPlugin.hh
racf622f r2e8de36 152 152 virtual void run_clustering(ClusterSequence &) const ; 153 153 154 /// returns true because this plugin is intended for spherical155 /// geometries (i.e. it's an e+e- algorithm).156 virtual bool is_spherical() const {return true;}157 158 154 protected: 159 155 virtual void reset_stored_plugin() const; -
external/fastjet/plugins/SISCone/geom_2d.cc
racf622f r2e8de36 21 21 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 22 22 // // 23 // $Revision:: 171$//24 // $Date:: 2007-06-19 16:26:05 +0200 (Tue, 19 Jun 2007)$//23 // $Revision:: $// 24 // $Date:: $// 25 25 /////////////////////////////////////////////////////////////////////////////// 26 26 -
external/fastjet/plugins/SISCone/geom_2d.h
racf622f r2e8de36 22 22 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 23 23 // // 24 // $Revision:: 268$//25 // $Date:: 2009-03-12 21:24:16 +0100 (Thu, 12 Mar 2009)$//24 // $Revision:: $// 25 // $Date:: $// 26 26 /////////////////////////////////////////////////////////////////////////////// 27 27 -
external/fastjet/plugins/SISCone/hash.cc
racf622f r2e8de36 21 21 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 22 22 // // 23 // $Revision:: 225$//24 // $Date:: 2008-05-20 16:59:47 +0200 (Tue, 20 May 2008)$//23 // $Revision:: $// 24 // $Date:: $// 25 25 /////////////////////////////////////////////////////////////////////////////// 26 26 -
external/fastjet/plugins/SISCone/hash.h
racf622f r2e8de36 22 22 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 23 23 // // 24 // $Revision:: 224$//25 // $Date:: 2008-05-16 19:58:30 +0200 (Fri, 16 May 2008)$//24 // $Revision:: $// 25 // $Date:: $// 26 26 /////////////////////////////////////////////////////////////////////////////// 27 27 -
external/fastjet/plugins/SISCone/momentum.cc
racf622f r2e8de36 21 21 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 22 22 // // 23 // $Revision:: 123$//24 // $Date:: 2007-03-01 02:52:16 +0100 (Thu, 01 Mar 2007)$//23 // $Revision:: $// 24 // $Date:: $// 25 25 /////////////////////////////////////////////////////////////////////////////// 26 26 -
external/fastjet/plugins/SISCone/momentum.h
racf622f r2e8de36 22 22 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 23 23 // // 24 // $Revision:: 163$//25 // $Date:: 2007-04-26 22:31:02 +0200 (Thu, 26 Apr 2007)$//24 // $Revision:: $// 25 // $Date:: $// 26 26 /////////////////////////////////////////////////////////////////////////////// 27 27 -
external/fastjet/plugins/SISCone/protocones.cc
racf622f r2e8de36 21 21 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 22 22 // // 23 // $Revision:: 322$//24 // $Date:: 2011-11-15 10:12:36 +0100 (Tue, 15 Nov 2011)$//23 // $Revision:: $// 24 // $Date:: $// 25 25 /////////////////////////////////////////////////////////////////////////////// 26 26 -
external/fastjet/plugins/SISCone/protocones.h
racf622f r2e8de36 22 22 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 23 23 // // 24 // $Revision:: 224$//25 // $Date:: 2008-05-16 19:58:30 +0200 (Fri, 16 May 2008)$//24 // $Revision:: $// 25 // $Date:: $// 26 26 /////////////////////////////////////////////////////////////////////////////// 27 27 -
external/fastjet/plugins/SISCone/quadtree.cc
racf622f r2e8de36 21 21 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 22 22 // // 23 // $Revision:: 320$//24 // $Date:: 2011-11-15 09:54:50 +0100 (Tue, 15 Nov 2011)$//23 // $Revision:: $// 24 // $Date:: $// 25 25 /////////////////////////////////////////////////////////////////////////////// 26 26 -
external/fastjet/plugins/SISCone/quadtree.h
racf622f r2e8de36 22 22 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 23 23 // // 24 // $Revision:: 123$//25 // $Date:: 2007-03-01 02:52:16 +0100 (Thu, 01 Mar 2007)$//24 // $Revision:: $// 25 // $Date:: $// 26 26 /////////////////////////////////////////////////////////////////////////////// 27 27 -
external/fastjet/plugins/SISCone/reference.cc
racf622f r2e8de36 21 21 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 22 22 // // 23 // $Revision:: 311$//24 // $Date:: 2011-10-05 23:27:09 +0200 (Wed, 05 Oct 2011)$//23 // $Revision:: $// 24 // $Date:: $// 25 25 /////////////////////////////////////////////////////////////////////////////// 26 26 -
external/fastjet/plugins/SISCone/reference.h
racf622f r2e8de36 22 22 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 23 23 // // 24 // $Revision:: 123$//25 // $Date:: 2007-03-01 02:52:16 +0100 (Thu, 01 Mar 2007)$//24 // $Revision:: $// 25 // $Date:: $// 26 26 /////////////////////////////////////////////////////////////////////////////// 27 27 -
external/fastjet/plugins/SISCone/siscone.cc
racf622f r2e8de36 21 21 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 22 22 // // 23 // $Revision:: 371$//24 // $Date:: 2014-09-09 10:05:32 +0200 (Tue, 09 Sep 2014)$//23 // $Revision:: $// 24 // $Date:: $// 25 25 /////////////////////////////////////////////////////////////////////////////// 26 26 … … 29 29 //#else 30 30 //#define PACKAGE_NAME "SISCone" 31 //#define VERSION " 3.0.0"31 //#define VERSION "2.0.6" 32 32 //#warning "No config.h file available, using preset values" 33 33 //#endif … … 87 87 int _n_pass_max, double _ptmin, 88 88 Esplit_merge_scale _split_merge_scale){ 89 _initialise_if_needed(); 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 } 90 116 91 117 // run some general safety tests (NB: f will be checked in split-merge) … … 148 174 } 149 175 150 151 /*152 * compute the jets from a given particle set doing multiple passes153 * such pass N looks for jets among all particles not put into jets154 * during previous passes.155 * - _particles list of particles156 * - _radius cone radius157 * - _n_pass_max maximum number of runs158 * - _ptmin minimum pT of the protojets159 * - _ordering_scale the ordering scale to decide which stable160 * cone is removed161 * return the number of jets found.162 **********************************************************************/163 int 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 = " << _radius172 << " (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 properly178 179 // init the split_merge algorithm with the initial list of particles180 // this initialises particle list p_left of remaining particles to deal with181 //182 // this stores the "processed" particles in p_uncol_hard183 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 finder194 // here we use the list of remaining particles195 // 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 jets202 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 & merge208 return jets.size();209 }210 211 212 176 /* 213 177 * recompute the jets with a different overlap parameter. … … 241 205 } 242 206 243 // ensure things are initialised244 void Csiscone::_initialise_if_needed(){245 // initialise random number generator246 if (init_done) return;247 248 // initialise random number generator249 ranlux_init();250 251 // do not do this again252 init_done=true;253 254 // print the banner255 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 }273 207 274 208 // finally, a bunch of functions to access to -
external/fastjet/plugins/SISCone/siscone.h
racf622f r2e8de36 22 22 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 23 23 // // 24 // $Revision:: 369$//25 // $Date:: 2014-09-04 16:57:55 +0200 (Thu, 04 Sep 2014)$//24 // $Revision:: $// 25 // $Date:: $// 26 26 /////////////////////////////////////////////////////////////////////////////// 27 27 … … 79 79 80 80 /** 81 * compute the jets from a given particle set.82 * We are doing multiple passes such pass n_pass looks for jets among83 * all particles not put into jets during previous passes.84 * By default the number of passes is infinite (0).85 * \param _particles list of particles86 * \param _radius cone radius87 * \param _n_pass_max maximum number of passes (0=full search)88 * \param _ptmin minimum pT of the protojets89 * \param _ordering_scale the ordering scale to decide which stable90 * cone is removed91 *92 * Note that the Csplit_merge::SM_var2_hardest_cut_off cut is not93 * 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 /**102 81 * recompute the jets with a different overlap parameter. 103 82 * we use the same particles and R as in the preceeding call. … … 114 93 Esplit_merge_scale _split_merge_scale=SM_pttilde); 115 94 116 /// list of protocones found pass-by-pass (not filled by compute_jets_progressive_removal)95 /// list of protocones found pass-by-pass 117 96 std::vector<std::vector<Cmomentum> > protocones_list; 118 97 … … 146 125 bool rerun_allowed; ///< is recompute_jets allowed ? 147 126 static std::ostream * _banner_ostr; ///< stream to use for banners 148 149 /// ensure things are initialised150 void _initialise_if_needed();151 152 127 }; 153 128 -
external/fastjet/plugins/SISCone/siscone_error.cc
racf622f r2e8de36 21 21 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 22 22 // // 23 // $Revision:: 123$//24 // $Date:: 2007-03-01 02:52:16 +0100 (Thu, 01 Mar 2007)$//23 // $Revision:: $// 24 // $Date:: $// 25 25 /////////////////////////////////////////////////////////////////////////////// 26 26 -
external/fastjet/plugins/SISCone/siscone_error.h
racf622f r2e8de36 22 22 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 23 23 // // 24 // $Revision:: 327$//25 // $Date:: 2011-11-25 15:19:39 +0100 (Fri, 25 Nov 2011)$//24 // $Revision:: $// 25 // $Date:: $// 26 26 /////////////////////////////////////////////////////////////////////////////// 27 27 -
external/fastjet/plugins/SISCone/split_merge.cc
racf622f r2e8de36 21 21 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 22 22 // // 23 // $Revision:: 370$//24 // $Date:: 2014-09-04 17:03:15 +0200 (Thu, 04 Sep 2014)$//23 // $Revision:: $// 24 // $Date:: $// 25 25 /////////////////////////////////////////////////////////////////////////////// 26 26 … … 28 28 #include "siscone_error.h" 29 29 #include "momentum.h" 30 #include <math.h> 30 31 #include <limits> // for max 31 32 #include <iostream> … … 33 34 #include <sstream> 34 35 #include <cassert> 35 #include <cmath>36 36 37 37 namespace siscone{ … … 229 229 #endif 230 230 #endif 231 _user_scale = NULL;232 231 indices = NULL; 233 232 … … 238 237 239 238 // no hardest cut (col-unsafe) 240 SM_var2_hardest_cut_off = - numeric_limits<double>::max();239 SM_var2_hardest_cut_off = -1.0; 241 240 242 241 // no pt cutoff for the particles to put in p_uncol_hard … … 556 555 } 557 556 558 559 /*560 * remove the hardest protocone and declare it a a jet561 * - protocones list of protocones (initial jet candidates)562 * - R2 cone radius (squared)563 * - ptmin minimal pT allowed for jets564 * return 0 on success, 1 on error565 *566 * The list of remaining particles (and the uncollinear-hard ones)567 * is updated.568 */569 int 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 protocones587 // for each of them, build the list of particles in them588 for (vector<Cmomentum>::iterator p_it = protocones->begin();p_it != protocones->end();p_it++){589 // initialise variables590 c = &(*p_it);591 592 // note: cones have been tested => their (eta,phi) coordinates are computed593 eta = c->eta;594 phi = c->phi;595 596 // NOTE: this is common to this method and add_protocones, so it597 // could be moved into a 'build_jet_from_protocone' method598 //599 // browse particles to create cone contents600 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 BEGINNING607 //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 protocones622 // (it was only known through eta and phi up to now)623 *c = jet_candidate.v;624 c->eta = eta; // restore exact original coords625 c->phi = phi; // to avoid rounding error inconsistencies626 627 // set the jet range628 jet_candidate.range=Ceta_phi_range(eta,phi,R);629 630 // check that the protojet has large enough pt631 if (jet_candidate.v.perp2()<pt_min2)632 continue;633 634 // assign the split-merge (or progressive-removal) squared scale variable635 if (_user_scale) {636 // sm_var2 is the signed square of the user scale returned637 // for the jet candidate638 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 hardest645 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 selection654 if (!found_jet) return 1;655 656 // add the jet to the list of jets657 jets.push_back(jet);658 jets[jets.size()-1].v.build_etaphi();659 660 #ifdef DEBUG_SPLIT_MERGE661 cout << "PR-Jet " << jets.size() << " [size " << next_jet.contents.size() << "]:";662 #endif663 664 // update the list of what particles are left665 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 jet672 // set pass in initial list673 particles[p_remain[index].parent_index].index = n_pass;674 #ifdef DEBUG_SPLIT_MERGE675 cout << " " << jet.contents[contents_index];676 #endif677 contents_index++;678 } else {679 // this particle still has to be clustered680 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 index691 n_pass++;692 693 #ifdef DEBUG_SPLIT_MERGE694 cout << endl;695 #endif696 697 // male sure the list of uncol_hard particles (used for the next698 // stable cone finding) is updated [could probably be more699 // efficient]700 merge_collinear_and_remove_soft();701 702 return 0;703 }704 557 705 558 /* -
external/fastjet/plugins/SISCone/split_merge.h
racf622f r2e8de36 22 22 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 23 23 // // 24 // $Revision:: 367$//25 // $Date:: 2014-09-04 15:57:37 +0200 (Thu, 04 Sep 2014)$//24 // $Revision:: $// 25 // $Date:: $// 26 26 /////////////////////////////////////////////////////////////////////////////// 27 27 … … 141 141 /// the split-merge process i.e. the variable we use for 142 142 /// 1. ordering jet candidates; 143 /// 2. computing t he overlap fraction of two candidates.143 /// 2. computing te overlap fraction of two candidates. 144 144 /// The default value uses pttile (p-scheme pt). Other alternatives are 145 145 /// pt, mt=sqrt(pt^2+m^2)=sqrt(E^2-pz^2) or Et. … … 151 151 /// the default value i.e. to use pt only for the purpose of 152 152 /// investigating the IR issue 153 /// - using Et is safe but do esnot respect boost invariance153 /// - using Et is safe but do not respect boost invariance 154 154 /// - using mt solves the IR unsafety issues with the pt variable 155 155 /// for QCD jets but the IR unsafety remains for nack-to-back … … 234 234 int full_clear(); 235 235 236 ///////////////////////////////////////237 // user-defined stable-cone ordering //238 ///////////////////////////////////////239 240 /// \class Cuser_scale_base241 /// base class for user-defined ordering of stable cones242 ///243 /// derived classes have to implement the () operator that returns244 /// the scale associated with a given jet.245 class Cuser_scale_base{246 public:247 /// empty virtual dtor248 virtual ~Cuser_scale_base(){}249 250 /// the scale associated with a given jet251 ///252 /// "progressive removal" iteratively removes the stable cone with253 /// the largest scale254 virtual double operator()(const Cjet & jet) const = 0;255 256 /// returns true when the scale associated with jet a is larger than257 /// the scale associated with jet b258 ///259 /// By default this does a simple direct comparison but it can be260 /// overloaded for higher precision [recommended if possible]261 ///262 /// This function assumes that a.sm_var2 and b.sm_var2 have been263 /// correctly initialised with the signed squared output of264 /// operator(), as is by default the case when is_larger is called265 /// 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 cones272 ///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 282 236 283 237 ///////////////////////////////// … … 302 256 */ 303 257 int add_protocones(std::vector<Cmomentum> *protocones, double R2, double ptmin=0.0); 304 305 /**306 * remove the hardest protocone and declare it a jet307 * \param protocones list of protocones (initial jet candidates)308 * \param R2 cone radius (squared)309 * \param ptmin minimal pT allowed for jets310 * \return 0 on success, 1 on error311 *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);316 258 317 259 /** … … 372 314 Csplit_merge_ptcomparison ptcomparison; 373 315 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 /// 316 /// stop split--merge when the SM_var of the hardest protojet 317 /// is below this cut-off. 318 /// This is not collinear-safe so you should not use this 319 /// variable unless you really know what you are doing 379 320 /// Note that the cut-off is set on the variable squared. 380 321 double SM_var2_hardest_cut_off; … … 383 324 /// this is meant to allow removing soft particles in the 384 325 /// stable-cone search. 385 ///386 /// This is not collinear-safe so you should not use this387 /// variable unless you really know what you are doing388 /// Note that the cut-off is set on the variable squared.389 326 double stable_cone_soft_pt2_cutoff; 390 327 … … 453 390 bool use_pt_weighted_splitting; 454 391 455 /// use a user-defined scale to order the stable cones and jet456 /// candidates457 const Cuser_scale_base *_user_scale;458 459 392 #ifdef ALLOW_MERGE_IDENTICAL_PROTOCONES 460 393 /// checkxor for the candidates (to avoid having twice the same contents) -
external/fastjet/plugins/SISCone/vicinity.cc
racf622f r2e8de36 21 21 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 22 22 // // 23 // $Revision:: 123$//24 // $Date:: 2007-03-01 02:52:16 +0100 (Thu, 01 Mar 2007)$//23 // $Revision:: $// 24 // $Date:: $// 25 25 /////////////////////////////////////////////////////////////////////////////// 26 26 -
external/fastjet/plugins/SISCone/vicinity.h
racf622f r2e8de36 22 22 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // 23 23 // // 24 // $Revision:: 123$//25 // $Date:: 2007-03-01 02:52:16 +0100 (Thu, 01 Mar 2007)$//24 // $Revision:: $// 25 // $Date:: $// 26 26 /////////////////////////////////////////////////////////////////////////////// 27 27 -
external/fastjet/plugins/TrackJet/TrackJetPlugin.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : TrackJetPlugin.cc 3433 2014-07-23 08:17:03Z salam$3 // 4 // Copyright (c) 2007-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //STARTHEADER 2 // $Id$ 3 // 4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- 7 // This file is part of FastJet. 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. 8 13 // 9 14 // FastJet is free software; you can redistribute it and/or modify … … 13 18 // 14 19 // 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 20 // development and are described in hep-ph/0512210. If you use 17 21 // 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. 22 // include a citation to the FastJet paper. 20 23 // 21 24 // FastJet is distributed in the hope that it will be useful, … … 27 30 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 31 //---------------------------------------------------------------------- 29 // FJENDHEADER32 //ENDHEADER 30 33 31 34 // History of changes from the original TrackJet.cc file in Rivet <=1.1.2 -
external/fastjet/plugins/TrackJet/fastjet/TrackJetPlugin.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: TrackJetPlugin.hh 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id: TrackJetPlugin.hh 2758 2011-11-24 08:31:58Z soyez $ 3 3 // 4 // Copyright (c) 2007-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2007-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __TRACKJETPLUGIN_HH__ -
external/fastjet/tools/BackgroundEstimatorBase.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : BackgroundEstimatorBase.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 -
external/fastjet/tools/BackgroundEstimatorBase.hh
racf622f r2e8de36 2 2 #define __FASTJET_BACKGROUND_ESTIMATOR_BASE_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: BackgroundEstimatorBase.hh 3516 2014-08-01 14:07:58Z salam$6 // 7 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 //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 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 #include <fastjet/ClusterSequenceAreaBase.hh> … … 45 43 /// 46 44 /// Abstract base class that provides the basic interface for classes 47 /// that estimate levels of background radiation in hadr on and45 /// that estimate levels of background radiation in hadrion and 48 46 /// heavy-ion collider events. 47 /// 49 48 /// 50 49 class BackgroundEstimatorBase { … … 100 99 /// determination of sigma 101 100 virtual bool has_sigma() {return false;} 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 101 //\} 102 138 103 139 104 /// @name configuring the behaviour … … 149 114 /// The BackgroundRescalingYPolynomial class can be used to get a 150 115 /// rescaling that depends just on rapidity. 151 ///152 /// There is currently no support for different rescaling classes153 /// for rho and rho_m determinations.154 116 virtual void set_rescaling_class(const FunctionOfPseudoJet<double> * rescaling_class_in) { _rescaling_class = rescaling_class_in; } 155 117 -
external/fastjet/tools/Boost.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: Boost.hh 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id: Boost.hh 2689 2011-11-14 14:51:06Z soyez $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __FASTJET_TOOL_BOOST_HH__ -
external/fastjet/tools/CASubJetTagger.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : CASubJetTagger.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include <fastjet/tools/CASubJetTagger.hh> -
external/fastjet/tools/CASubJetTagger.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: CASubJetTagger.hh 3433 2014-07-23 08:17:03Z salam $3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //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 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __CASUBJET_TAGGER_HH__ -
external/fastjet/tools/Filter.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : Filter.cc 3633 2014-08-15 13:23:52Z soyez$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //STARTHEADER 2 // $Id$ 3 // 4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/tools/Filter.hh" 32 #include "fastjet/tools/Recluster.hh"33 30 #include <fastjet/ClusterSequenceActiveAreaExplicitGhosts.hh> 34 31 #include <cassert> … … 48 45 // class description 49 46 string Filter::description() const { 50 if (!_initialised){51 return "uninitialised Filter";52 }53 54 47 ostringstream ostr; 55 48 ostr << "Filter with subjet_def = "; … … 80 73 // by the filtering 81 74 PseudoJet 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 87 75 // start by getting the list of subjets (including a list of sanity 88 76 // checks) … … 90 78 // _set_filtered_elements_cafilt) 91 79 vector<PseudoJet> subjets; 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 } 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); 106 86 107 87 // now build the vector of kept and rejected subjets … … 114 94 115 95 // gather the info under the form of a PseudoJet 116 return _finalise(jet, kept, rejected, ca_optimised);96 return _finalise(jet, kept, rejected, subjet_def, discard_area); 117 97 } 118 98 119 99 120 100 // sets filtered_elements to be all the subjets on which filtering will work 121 // 122 // return true when the subjets have been optained using teh optimised 123 // method for C/A 124 bool 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); 132 133 // get the subjets 134 //JetDefinition subjet_def; 135 return recluster.get_new_jets_and_def(jet, filtered_elements); 136 } 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"); 110 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); 181 } 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 137 291 138 292 // gather the information about what is kept and rejected under the … … 141 295 vector<PseudoJet> & kept, 142 296 vector<PseudoJet> & rejected, 143 bool ca_optimisation_used) const { 144 PseudoJet filtered_jet; 145 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 } 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()); 301 302 // create an appropriate structure and transfer the info to it 303 PseudoJet filtered_jet = join<StructureType>(kept, rec); 157 304 StructureType *fs = (StructureType*) filtered_jet.structure_non_const_ptr(); 305 // fs->_original_jet = jet; 158 306 fs->_rejected = rejected; 307 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 } 159 314 160 // if we've used C/A optimisation, we need to get rid of the area161 // information if it comes from a non-explicit-ghost clustering.162 // (because in that case it can be erroneous due the lack of163 // 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 }171 172 315 return filtered_jet; 173 316 } 174 317 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 175 411 176 412 FASTJET_END_NAMESPACE // defined in fastjet/internal/base.hh -
external/fastjet/tools/Filter.hh
racf622f r2e8de36 2 2 #define __FASTJET_TOOLS_FILTER_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: Filter.hh 3494 2014-07-30 20:38:48Z soyez$6 // 7 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 //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 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 #include <fastjet/ClusterSequence.hh> … … 100 98 /// Note: this is just for derived classes 101 99 /// a Filter initialised through this constructor will not work! 102 Filter() : _Rfiltfunc(0) , _initialised(false){};100 Filter() : _Rfiltfunc(0){}; 103 101 104 102 /// define a filter that decomposes a jet into subjets using a … … 115 113 /// ghosts 116 114 Filter(JetDefinition subjet_def, Selector selector, double rho = 0.0) : 117 _subjet_def(subjet_def), _Rfiltfunc(0), _Rfilt(-1), _selector(selector), _rho(rho), _subtractor(0) , _initialised(true){}115 _subjet_def(subjet_def), _Rfiltfunc(0), _Rfilt(-1), _selector(selector), _rho(rho), _subtractor(0) {} 118 116 119 117 /// Same as the full constructor (see above) but just specifying the radius … … 123 121 /// \param Rfilt the filtering radius 124 122 Filter(double Rfilt, Selector selector, double rho = 0.0) : 125 _Rfiltfunc(0), _Rfilt(Rfilt), _selector(selector), _rho(rho), _subtractor(0) , _initialised(true){123 _Rfiltfunc(0), _Rfilt(Rfilt), _selector(selector), _rho(rho), _subtractor(0) { 126 124 if (_Rfilt<0) 127 125 throw Error("Attempt to create a Filter with a negative filtering radius"); … … 135 133 /// \param Rfilt_func the filtering radius function of a PseudoJet 136 134 Filter(FunctionOfPseudoJet<double> *Rfilt_func, Selector selector, double rho = 0.0) : 137 _Rfiltfunc(Rfilt_func), _Rfilt(-1), _selector(selector), _rho(rho), _subtractor(0) , _initialised(true){}135 _Rfiltfunc(Rfilt_func), _Rfilt(-1), _selector(selector), _rho(rho), _subtractor(0) {} 138 136 139 137 /// default dtor … … 142 140 /// Set a subtractor that is applied to all individual subjets before 143 141 /// deciding which ones to keep. It takes precedence over a non-zero rho. 144 void set_subtractor(const FunctionOfPseudoJet<PseudoJet>* subtractor) {_subtractor = subtractor;}142 void set_subtractor(const Transformer * subtractor) {_subtractor = subtractor;} 145 143 146 144 /// runs the filtering and sets kept and rejected to be the jets of interest … … 161 159 /// It also sets the subjet_def to be used in joining things (the bit of 162 160 /// subjet def that is of interest for later is the recombiner). 163 ///164 /// this returns true if teh optimisation trick for C/A reclustering has been used165 bool _set_filtered_elements(const PseudoJet & jet,166 std::vector<PseudoJet> & filtered_elements) const;161 void _set_filtered_elements(const PseudoJet & jet, 162 std::vector<PseudoJet> & filtered_elements, 163 JetDefinition & subjet_def, 164 bool & discard_area) const; 167 165 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 168 177 /// gather the information about what is kept and rejected under the 169 178 /// form of a PseudoJet with a special ClusterSequenceInfo 170 ///171 /// The last argument (ca_optimisation_used) should be true if the172 /// optimisation trick for C/A reclustering has been used (in which173 /// case some extra tests have to be run for non-explicit-ghost174 /// areas)175 179 PseudoJet _finalise(const PseudoJet & jet, 176 180 std::vector<PseudoJet> & kept, 177 181 std::vector<PseudoJet> & rejected, 178 bool ca_optimisation_used) const; 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; 179 202 180 203 bool _uses_subtraction() const {return (_subtractor || _rho != 0);} … … 186 209 Selector _selector; ///< the subjet selection criterium 187 210 double _rho; ///< the background density (used for subtraction when possible) 188 const FunctionOfPseudoJet<PseudoJet> * _subtractor; ///< for subtracting bkgd density from subjets 189 190 bool _initialised; ///< true when the Filter has been properly intialised 211 const Transformer * _subtractor; ///< for subtracting bkgd density from subjets 191 212 }; 192 213 -
external/fastjet/tools/GridMedianBackgroundEstimator.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : GridMedianBackgroundEstimator.cc 3555 2014-08-11 09:56:35Z salam$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //STARTHEADER 2 // $Id$ 3 // 4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 … … 34 32 35 33 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh 36 37 34 38 35 //---------------------------------------------------------------------- … … 42 39 // of the specified particles. 43 40 void GridMedianBackgroundEstimator::set_particles(const vector<PseudoJet> & particles) { 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 } 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]); 93 49 } 94 50 } 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()); 51 sort(_scalar_pt.begin(), _scalar_pt.end()); 127 52 128 53 _has_particles = true; … … 136 61 double GridMedianBackgroundEstimator::rho() const { 137 62 verify_particles_set(); 138 return _ rho;63 return _percentile(_scalar_pt, 0.5) / _cell_area; 139 64 } 140 65 … … 146 71 double GridMedianBackgroundEstimator::sigma() const{ 147 72 verify_particles_set(); 148 return _sigma; 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); 149 78 } 150 79 … … 156 85 // determination. 157 86 double GridMedianBackgroundEstimator::rho(const PseudoJet & jet) { 158 //verify_particles_set();87 verify_particles_set(); 159 88 double rescaling = (_rescaling_class == 0) ? 1.0 : (*_rescaling_class)(jet); 160 89 return rescaling*rho(); … … 166 95 // the position of a given jet. As for rho(jet), it is non-const. 167 96 double GridMedianBackgroundEstimator::sigma(const PseudoJet & jet){ 168 //verify_particles_set();97 verify_particles_set(); 169 98 double rescaling = (_rescaling_class == 0) ? 1.0 : (*_rescaling_class)(jet); 170 99 return rescaling*sigma(); 171 }172 173 //----------------------------------------------------------------------174 // returns rho_m (particle-masses contribution to the 4-vector density)175 double 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-vector186 // density); must be multipled by sqrt(area) to get fluctuations187 // for a region of a given area.188 double 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 for198 // rho(jet), it is non-const.199 double 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 for208 // rho(jet), it is non-const.209 double 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();213 100 } 214 101 … … 225 112 string GridMedianBackgroundEstimator::description() const { 226 113 ostringstream desc; 227 #ifdef FASTJET_GMBGE_USEFJGRID228 desc << "GridMedianBackgroundEstimator, with " << RectangularGrid::description();229 #else230 114 desc << "GridMedianBackgroundEstimator, with grid extension |y| < " << _ymax 231 << ", and grid cells of size dy x dphi = " << _dy << " x " << _dphi 232 << " (requested size = " << _requested_grid_spacing << ")"; 233 #endif 115 << " and requested grid spacing = " << _requested_grid_spacing; 234 116 return desc.str(); 235 117 } … … 262 144 263 145 264 #ifndef FASTJET_GMBGE_USEFJGRID265 146 //---------------------------------------------------------------------- 266 147 // protected material … … 287 168 288 169 _ntotal = _nphi * _ny; 289 //_scalar_pt.resize(_ntotal);290 _ tile_area = _dy * _dphi;291 } 292 293 294 //---------------------------------------------------------------------- 295 // retrieve the grid tileindex for a given PseudoJet296 int GridMedianBackgroundEstimator:: tile_index(const PseudoJet & p) const {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 { 297 178 // directly taking int does not work for values between -1 and 0 298 179 // so use floor instead … … 312 193 if (iphi == _nphi) iphi = 0; // just in case of rounding errors 313 194 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 195 int igrid_res = iy*_nphi + iphi; 196 assert (igrid_res >= 0 && igrid_res < _ny*_nphi); 197 return igrid_res; 198 } 320 199 321 200 -
external/fastjet/tools/GridMedianBackgroundEstimator.hh
racf622f r2e8de36 2 2 #define __GRID_MEDIAN_BACKGROUND_ESTIMATOR_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: GridMedianBackgroundEstimator.hh 3610 2014-08-13 09:49:28Z salam $4 //STARTHEADER 5 // $Id: GridMedianBackgroundEstimator.hh 2580 2011-09-13 17:25:43Z salam $ 6 6 // 7 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 35 33 #include "fastjet/tools/BackgroundEstimatorBase.hh" 36 37 // if defined then we'll use the RectangularGrid class38 //39 // (For FastJet 3.2, maybe remove the symbol and simply clean up the40 // code below to use exclusively the RectangularGrid)41 #define FASTJET_GMBGE_USEFJGRID42 43 #ifdef FASTJET_GMBGE_USEFJGRID44 #include "fastjet/RectangularGrid.hh"45 #endif46 47 48 34 49 35 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh … … 75 61 /// rho() [Without rescaling, they are identical] 76 62 /// 77 class GridMedianBackgroundEstimator : public BackgroundEstimatorBase 78 #ifdef FASTJET_GMBGE_USEFJGRID 79 , RectangularGrid 80 #endif 81 { 82 63 class GridMedianBackgroundEstimator : public BackgroundEstimatorBase { 83 64 public: 84 65 /// @name constructors and destructors 85 66 //\{ 86 #ifdef FASTJET_GMBGE_USEFJGRID87 67 //---------------------------------------------------------------- 88 68 /// \param ymax maximal absolute rapidity extent of the grid … … 91 71 /// periodicity in azimuthal angle (size, not area) 92 72 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 RectangularGrid98 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 grid106 GridMedianBackgroundEstimator(double ymax, double requested_grid_spacing) :107 73 _ymin(-ymax), _ymax(ymax), 108 74 _requested_grid_spacing(requested_grid_spacing), 109 _has_particles(false), _enable_rho_m(true) 110 { 111 setup_grid(); 112 } 113 #endif // FASTJET_GMBGE_USEFJGRID 114 75 _has_particles(false){setup_grid();} 115 76 //\} 116 77 … … 123 84 /// of the specified particles. 124 85 void set_particles(const std::vector<PseudoJet> & particles); 125 126 /// determine whether the automatic calculation of rho_m and sigma_m127 /// is enabled (by default true)128 void set_compute_rho_m(bool enable){ _enable_rho_m = enable;}129 86 130 87 //\} … … 157 114 bool has_sigma() {return true;} 158 115 159 //-----------------------------------------------------------------160 /// Returns rho_m, the purely longitudinal, particle-mass-induced161 /// component of the background density per unit area162 double rho_m() const;163 164 /// returns sigma_m, a measure of the fluctuations in the purely165 /// longitudinal, particle-mass-induced component of the background166 /// density per unit area; must be multipled by sqrt(area) to get167 /// 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 for177 /// determination of rho_m.178 ///179 /// Note that support for sigma_m is automatic is one has sigma and180 /// rho_m support.181 bool has_rho_m() const {return _enable_rho_m;}182 183 184 116 /// returns the area of the grid cells (all identical, but 185 117 /// referred to as "mean" area for uniformity with JetMedianBGE). 186 double mean_area() const {return mean_tile_area();}118 double mean_area() const {return _cell_area;} 187 119 //\} 188 120 … … 202 134 /// Note that this has to be called BEFORE any attempt to do an 203 135 /// actual computation 204 ///205 /// The same profile will be used for both pt and mt (this is206 /// probabaly a good approximation since the particle density207 /// changes is what dominates the rapidity profile)208 136 virtual void set_rescaling_class(const FunctionOfPseudoJet<double> * rescaling_class); 209 137 … … 221 149 222 150 private: 223 224 #ifndef FASTJET_GMBGE_USEFJGRID225 226 151 /// configure the grid 227 152 void setup_grid(); 228 153 229 154 /// retrieve the grid cell index for a given PseudoJet 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 155 int igrid(const PseudoJet & p) const; 243 156 244 157 /// verify that particles have been set and throw an error if not 245 158 void verify_particles_set() const; 246 159 160 // information about the grid 161 double _ymin, _ymax, _dy, _dphi, _requested_grid_spacing, _cell_area; 162 int _ny, _nphi, _ntotal; 163 247 164 // information abotu the event 248 //std::vector<double> _scalar_pt; 249 double _rho, _sigma, _rho_m, _sigma_m; 165 std::vector<double> _scalar_pt; 250 166 bool _has_particles; 251 bool _enable_rho_m;252 167 253 // various warnings to inform people of potential dangers168 // various warnings to let people aware of potential dangers 254 169 LimitedWarning _warning_rho_of_jet; 255 170 LimitedWarning _warning_rescaling; -
external/fastjet/tools/JHTopTagger.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : JHTopTagger.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include <fastjet/tools/JHTopTagger.hh> -
external/fastjet/tools/JHTopTagger.hh
racf622f r2e8de36 2 2 #define __FASTJET_JH_TOP_TAGGER_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: JHTopTagger.hh 3433 2014-07-23 08:17:03Z salam$6 // 7 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 //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 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 -
external/fastjet/tools/JetMedianBackgroundEstimator.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : JetMedianBackgroundEstimator.cc 3517 2014-08-01 14:23:13Z soyez$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //STARTHEADER 2 // $Id$ 3 // 4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/tools/JetMedianBackgroundEstimator.hh" … … 33 31 #include <fastjet/ClusterSequenceStructure.hh> 34 32 #include <iostream> 35 #include <sstream>36 33 37 34 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh … … 40 37 41 38 double BackgroundJetScalarPtDensity::result(const PseudoJet & jet) const { 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()); 39 std::vector<PseudoJet> constituents = jet.constituents(); 45 40 double scalar_pt = 0; 46 41 for (unsigned i = 0; i < constituents.size(); i++) { … … 48 43 } 49 44 return scalar_pt / jet.area(); 50 }51 52 53 std::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();58 45 } 59 46 … … 85 72 const JetDefinition &jet_def, 86 73 const AreaDefinition &area_def) 87 : _rho_range(rho_range), _jet_def(jet_def), _area_def(area_def) {74 : _rho_range(rho_range), _jet_def(jet_def), _area_def(area_def) { 88 75 89 76 // initialise things decently … … 274 261 275 262 //---------------------------------------------------------------------- 276 // returns rho_m (particle-masses contribution to the 4-vector density)277 double 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-vector290 // density); must be multipled by sqrt(area) to get fluctuations291 // for a region of a given area.292 double 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 for304 // rho(jet), it is non-const.305 double 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 for317 // rho(jet), it is non-const.318 double 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 //----------------------------------------------------------------------328 263 // configuring behaviour 329 264 //---------------------------------------------------------------------- … … 336 271 set_provide_fj2_sigma(false); 337 272 338 _enable_rho_m = true;339 340 273 // reset the computed values 341 274 _rho = _sigma = 0.0; 342 _rho_m = _sigma_m = 0.0;343 275 _n_jets_used = _n_empty_jets = 0; 344 276 _empty_area = _mean_area = 0.0; … … 357 289 // is used (as occurs also if this function is not called). 358 290 void JetMedianBackgroundEstimator::set_jet_density_class(const FunctionOfPseudoJet<double> * jet_density_class_in) { 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).");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)."); 360 292 _jet_density_class = jet_density_class_in; 361 293 _uptodate = false; … … 406 338 // fill the vector of pt/area (or the quantity from the jet density class) 407 339 // - in the range 408 vector<double> vector_for_median_pt; 409 vector<double> vector_for_median_dt; 340 vector<double> vector_for_median; 410 341 double total_area = 0.0; 411 342 _n_jets_used = 0; … … 415 346 416 347 // 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();420 348 for (unsigned i = 0; i < selected_jets.size(); i++) { 421 349 const PseudoJet & current_jet = selected_jets[i]; 422 350 423 351 double this_area = (_use_area_4vector) ? current_jet.area_4vector().perp() : current_jet.area(); 352 424 353 if (this_area>0){ 425 // for the pt component, we either use pt or the user-provided 426 // density class 354 double median_input; 427 355 if (_jet_density_class == 0) { 428 median_input _pt= current_jet.perp()/this_area;356 median_input = current_jet.perp()/this_area; 429 357 } else { 430 median_input _pt= (*_jet_density_class)(current_jet);358 median_input = (*_jet_density_class)(current_jet); 431 359 } 432 433 // handle the rho_m part if requested434 // note that we're using the scalar area as a normalisation inside the435 // density class!436 if (do_rho_m)437 median_input_dt = m_density(current_jet);438 439 // perform rescaling if needed440 360 if (_rescaling_class != 0) { 441 double resc = (*_rescaling_class)(current_jet);; 442 median_input_pt /= resc; 443 median_input_dt /= resc; 361 median_input /= (*_rescaling_class)(current_jet); 444 362 } 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 363 vector_for_median.push_back(median_input); 451 364 total_area += this_area; 452 365 _n_jets_used++; … … 454 367 _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)."); 455 368 } 369 456 370 } 457 371 458 372 // there is nothing inside our region, so answer will always be zero 459 if (vector_for_median _pt.size() == 0) {373 if (vector_for_median.size() == 0) { 460 374 _rho = 0.0; 461 375 _sigma = 0.0; 462 _rho_m = 0.0;463 _sigma_m = 0.0;464 376 _mean_area = 0.0; 465 377 return; … … 480 392 481 393 double stand_dev; 482 _median_and_stddev(vector_for_median _pt, _n_empty_jets, _rho, stand_dev,394 _median_and_stddev(vector_for_median, _n_empty_jets, _rho, stand_dev, 483 395 _provide_fj2_sigma); 484 396 … … 486 398 _mean_area = total_area / total_njets; 487 399 _sigma = stand_dev * sqrt(_mean_area); 488 489 // compute the rho_m part now490 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 }495 400 496 401 // record that the computation has been performed … … 534 439 535 440 441 536 442 FASTJET_END_NAMESPACE 537 443 -
external/fastjet/tools/JetMedianBackgroundEstimator.hh
racf622f r2e8de36 2 2 #define __FASTJET_BACKGROUND_ESTIMATOR_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: JetMedianBackgroundEstimator.hh 3517 2014-08-01 14:23:13Z soyez $6 // 7 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 //STARTHEADER 5 // $Id: JetMedianBackgroundEstimator.hh 2689 2011-11-14 14:51:06Z soyez $ 6 // 7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 #include <fastjet/ClusterSequenceAreaBase.hh> … … 123 121 /// 124 122 JetMedianBackgroundEstimator(const Selector &rho_range = SelectorIdentity()) 125 : _rho_range(rho_range), _jet_def(JetDefinition()), 126 _enable_rho_m(true){ reset(); } 123 : _rho_range(rho_range), _jet_def(JetDefinition()) { reset(); } 127 124 128 125 … … 171 168 } 172 169 173 /// determine whether the automatic calculation of rho_m and sigma_m174 /// is enabled (by default true)175 void set_compute_rho_m(bool enable){ _enable_rho_m = enable;}176 177 170 //\} 178 171 … … 208 201 virtual bool has_sigma() {return true;} 209 202 210 //----------------------------------------------------------------211 // now do the same thing for rho_m and sigma_m212 213 /// returns rho_m, the purely longitudinal, particle-mass-induced214 /// component of the background density per unit area215 virtual double rho_m() const;216 217 /// returns sigma_m, a measure of the fluctuations in the purely218 /// longitudinal, particle-mass-induced component of the background219 /// density per unit area; must be multipled by sqrt(area) to get220 /// 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 for230 /// determination of rho_m.231 ///232 /// In te presence of a density class, support for rho_m is233 /// automatically disabled234 ///235 /// Note that support for sigma_m is automatic is one has sigma and236 /// rho_m support.237 virtual bool has_rho_m() const {return _enable_rho_m && (_jet_density_class == 0);}238 203 //\} 239 204 … … 243 208 /// Returns the mean area of the jets used to actually compute the 244 209 /// background properties in the last call of rho() or sigma() 245 /// If the configuration has changed in the meantime, throw an error.246 210 double mean_area() const{ 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(); 211 _recompute_if_needed(); 250 212 return _mean_area; 251 213 } … … 253 215 /// returns the number of jets used to actually compute the 254 216 /// background properties in the last call of rho() or sigma() 255 /// If the configuration has changed in the meantime, throw an error.256 217 unsigned int n_jets_used() const{ 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(); 218 _recompute_if_needed(); 260 219 return _n_jets_used; 261 }262 263 /// returns the jets used to actually compute the background264 /// properties265 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;274 220 } 275 221 … … 277 223 /// the selector) that is not occupied by jets. The value is that 278 224 /// for the last call of rho() or sigma() 279 /// If the configuration has changed in the meantime, throw an error.280 225 /// 281 226 /// The answer is defined to be zero if the area calculation … … 289 234 /// call to the ClusterSequenceAreaBase function. 290 235 double empty_area() const{ 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(); 236 _recompute_if_needed(); 294 237 return _empty_area; 295 238 } … … 298 241 /// background properties. The value is that for the last call of 299 242 /// rho() or sigma(). 300 /// If the configuration has changed in the meantime, throw an error.301 243 /// 302 244 /// If the area has explicit ghosts the result is zero; for active … … 308 250 /// call to the ClusterSequenceAreaBase function. 309 251 double n_empty_jets() const{ 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(); 252 _recompute_if_needed(); 313 253 return _n_empty_jets; 314 254 } … … 421 361 /// Issue a warning otherwise 422 362 void _check_jet_alg_good_for_median() const; 423 363 424 364 // the basic parameters of this class (passed through the variou ctors) 425 365 Selector _rho_range; ///< range to compute the background in … … 428 368 std::vector<PseudoJet> _included_jets; ///< jets to be used 429 369 430 // the tunable parameters of the class370 // the tunable aprameters of the class 431 371 bool _use_area_4vector; 432 372 bool _provide_fj2_sigma; 433 373 const FunctionOfPseudoJet<double> * _jet_density_class; 434 374 //SharedPtr<BackgroundRescalingBase> _rescaling_class_sharedptr; 435 bool _enable_rho_m;436 375 437 376 // the actual results of the computation 438 377 mutable double _rho; ///< background estimated density per unit area 439 378 mutable double _sigma; ///< background estimated fluctuations 440 mutable double _rho_m; ///< "mass" background estimated density per unit area441 mutable double _sigma_m; ///< "mass" background estimated fluctuations442 379 mutable double _mean_area; ///< mean area of the jets used to estimate the background 443 380 mutable unsigned int _n_jets_used; ///< number of jets used to estimate the background … … 492 429 virtual double result(const PseudoJet & jet) const; 493 430 494 virtual std::string description() const ;431 virtual std::string description() const {return "BackgroundScalarJetPtDensity";} 495 432 496 433 private: -
external/fastjet/tools/MassDropTagger.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : MassDropTagger.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include <fastjet/tools/MassDropTagger.hh> -
external/fastjet/tools/MassDropTagger.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: MassDropTagger.hh 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id: MassDropTagger.hh 2731 2011-11-21 12:15:21Z soyez $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __FASTJET_MASS_DROP_TAGGER_HH__ -
external/fastjet/tools/Pruner.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : Pruner.cc 3481 2014-07-29 17:24:12Z soyez$3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez1 //STARTHEADER 2 // $Id$ 3 // 4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/tools/Pruner.hh" … … 49 47 //---------------------------------------------------------------------- 50 48 // alternative (dynamic) ctor 51 // \param jet_def 49 // \param jet_def the jet definition for the internal clustering 52 50 // \param zcut_dyn dynamic pt-fraction cut in the pruning 53 51 // \param Rcut_dyn dynamic angular distance cut in the pruning 54 52 Pruner::Pruner(const JetDefinition &jet_def, 55 constFunctionOfPseudoJet<double> *zcut_dyn,56 constFunctionOfPseudoJet<double> *Rcut_dyn)53 FunctionOfPseudoJet<double> *zcut_dyn, 54 FunctionOfPseudoJet<double> *Rcut_dyn) 57 55 : _jet_def(jet_def), _zcut(0), _Rcut_factor(0), 58 56 _zcut_dyn(zcut_dyn), _Rcut_dyn(Rcut_dyn), _get_recombiner_from_jet(false) { … … 76 74 double zcut = (_zcut_dyn) ? (*_zcut_dyn)(jet) : _zcut; 77 75 PruningPlugin * pruning_plugin; 78 79 76 // for some constructors, we get the recombiner from the 80 // input jet -- some acrobatics are needed 77 // input jet -- some acrobatics are needed (see plans for FJ3.1 78 // for a hopefully better solution). 81 79 if (_get_recombiner_from_jet) { 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); 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 } 91 97 } else { 92 98 pruning_plugin = new PruningPlugin(_jet_def, zcut, Rcut); … … 116 122 PseudoJet result_local = SelectorNHardest(1)(cs->inclusive_jets())[0]; 117 123 PrunerStructure * s = new PrunerStructure(result_local); 118 s->_Rcut = Rcut;119 s->_zcut = zcut;120 124 result_local.set_structure_shared_ptr(SharedPtr<PseudoJetStructureBase>(s)); 121 125 … … 151 155 } 152 156 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. 159 bool 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 } 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(); 172 170 173 171 // if the jet has pieces, recurse in the pieces 174 172 if (jet.has_pieces()){ 175 173 vector<PseudoJet> pieces = jet.pieces(); 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; 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; 179 178 // never returned false, so we're OK. 180 return true;179 return reco; 181 180 } 182 181 183 182 // return false for any other (unknown) structure 184 return false;183 return 0; 185 184 } 186 185 -
external/fastjet/tools/Pruner.hh
racf622f r2e8de36 2 2 #define __FASTJET_TOOLS_PRUNER_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: Pruner.hh 3481 2014-07-29 17:24:12Z soyez$6 // 7 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 //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 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 #include "fastjet/ClusterSequence.hh" … … 45 43 class PruningRecombiner; 46 44 class PruningPlugin; 47 48 // This tells third-party code that the pruner structure49 // stores Rcut info; the alternative is for the user to50 // get the information from the version number51 #define FASTJET_PRUNER_STRUCTURE_STORES_RCUT52 45 53 46 //---------------------------------------------------------------------- … … 142 135 /// \param Rcut_dyn dynamic angular distance cut in the pruning 143 136 Pruner(const JetDefinition &jet_def, 144 constFunctionOfPseudoJet<double> *zcut_dyn,145 constFunctionOfPseudoJet<double> *Rcut_dyn);137 FunctionOfPseudoJet<double> *zcut_dyn, 138 FunctionOfPseudoJet<double> *Rcut_dyn); 146 139 147 140 /// action on a single jet … … 159 152 bool _check_explicit_ghosts(const PseudoJet &jet) const; 160 153 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; 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; 170 157 171 158 JetDefinition _jet_def; ///< the internal jet definition 172 159 double _zcut; ///< the pt-fraction cut 173 160 double _Rcut_factor; ///< the angular separation cut factor 174 constFunctionOfPseudoJet<double> *_zcut_dyn; ///< dynamic zcut175 constFunctionOfPseudoJet<double> *_Rcut_dyn; ///< dynamic Rcut161 FunctionOfPseudoJet<double> *_zcut_dyn; ///< dynamic zcut 162 FunctionOfPseudoJet<double> *_Rcut_dyn; ///< dynamic Rcut 176 163 bool _get_recombiner_from_jet; ///< true for minimal constructor, 177 164 ///< causes recombiner to be set equal … … 207 194 std::vector<PseudoJet> extra_jets() const; 208 195 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 215 196 protected: 216 197 friend class Pruner; ///< to allow setting the internal information 217 218 private:219 double _Rcut, _zcut;220 198 }; 221 199 -
external/fastjet/tools/RestFrameNSubjettinessTagger.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : RestFrameNSubjettinessTagger.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include <fastjet/tools/RestFrameNSubjettinessTagger.hh> -
external/fastjet/tools/RestFrameNSubjettinessTagger.hh
racf622f r2e8de36 2 2 #define __FASTJET_RESTFRAMENSUBJETTINESS_TAGGER_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: RestFrameNSubjettinessTagger.hh 3433 2014-07-23 08:17:03Z salam$4 //STARTHEADER 5 // $Id: RestFrameNSubjettinessTagger.hh 2689 2011-11-14 14:51:06Z soyez $ 6 6 // 7 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 #include <fastjet/PseudoJet.hh> -
external/fastjet/tools/Subtractor.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : Subtractor.cc 3670 2014-09-08 14:17:59Z soyez$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include "fastjet/tools/Subtractor.hh" … … 40 38 41 39 42 //----------------------------------------------------------------------43 // ctor44 40 Subtractor::Subtractor(double rho) : _bge(0), _rho(rho) { 45 if (_rho<0.0) throw Error("Subtractor(rho) was passed a negative rho value; rho should be >= 0"); 46 set_defaults(); 41 assert(_rho>0.0); 47 42 } 48 43 49 //----------------------------------------------------------------------50 // ctor51 Subtractor::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 //----------------------------------------------------------------------60 void 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 jet71 44 PseudoJet Subtractor::result(const PseudoJet & jet) const { 72 45 if (!jet.has_area()){ 73 throw Error("Subtractor::result(...): Trying to subtract a jet without area support"); 46 throw Error("Trying to subtract a jet without area support"); 47 } 48 49 double rho; 50 if (_bge != 0) { 51 rho = _bge->rho(jet); 52 } else if (_rho != _invalid_rho) { 53 rho = _rho; 54 } else { 55 throw Error("default Subtractor does not have any information about the background, which is needed to perform the subtraction"); 74 56 } 75 57 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 vertex81 // known vertex, leading vertex82 // 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 just93 // sum the 4-momenta. For the unknown part, we assign it the full94 // 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 area106 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 be114 // subtracted115 58 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() ) { 59 PseudoJet area4vect = jet.area_4vector(); 60 // sanity check 61 if (rho*area4vect.perp() < jet.perp() ) { 120 62 // this subtraction should retain the jet's structural 121 63 // information 122 subtracted_jet -= to_subtract;64 subtracted_jet -= rho*area4vect; 123 65 } 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; 66 // this sets the jet's momentum to zero while 67 // maintaining all of the jet's structural information 68 subtracted_jet *= 0; 128 69 } 129 130 // make sure that in the end the pt is at least the one known to131 // come from the leading vertex132 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 the140 // subtraction above and take rap and m from the part that comes141 // from the leading vertex (or the original jet if nothing comes142 // 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 70 return subtracted_jet; 150 71 } … … 153 74 std::string Subtractor::description() const{ 154 75 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; 76 return "Subtractor that uses the following background estimator to determine rho: "+_bge->description(); 162 77 } else if (_rho != _invalid_rho) { 163 78 ostringstream ostr; 164 79 ostr << "Subtractor that uses a fixed value of rho = " << _rho; 165 if (use_rho_m()) ostr << " and rho_m = " << _rho_m;166 80 return ostr.str(); 167 81 } else { … … 170 84 } 171 85 172 //----------------------------------------------------------------------173 // compute the 4-vector that should be subtracted from the given174 // jet175 PseudoJet Subtractor::_amount_to_subtract(const PseudoJet &jet) const{176 // the "transverse momentum" part177 double rho;178 if (_bge != 0) {179 rho = _bge->rho(jet);180 } else if (_rho != _invalid_rho) {181 rho = _rho;182 } else {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 masses192 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 213 214 86 FASTJET_END_NAMESPACE -
external/fastjet/tools/Subtractor.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: Subtractor.hh 3670 2014-09-08 14:17:59Z soyez$1 //STARTHEADER 2 // $Id: Subtractor.hh 2577 2011-09-13 15:11:38Z salam $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __FASTJET_TOOLS_SUBTRACTOR_HH__ 32 30 #define __FASTJET_TOOLS_SUBTRACTOR_HH__ 33 31 34 #include "fastjet/internal/base.hh" // namespace macros (include explicitly to help Doxygen)35 32 #include "fastjet/tools/Transformer.hh" // to derive Subtractor from Transformer 36 33 #include "fastjet/tools/BackgroundEstimatorBase.hh" // used as a ctor argument … … 64 61 /// define a subtractor based on a BackgroundEstimator 65 62 Subtractor(BackgroundEstimatorBase * bge) : 66 _bge(bge), _rho(-1.0) { set_defaults();}63 _bge(bge), _rho(-1.0) {} 67 64 68 65 /// define a subtractor that uses a fixed value of rho, the background … … 70 67 Subtractor(double rho); 71 68 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 76 69 /// default constructor 77 Subtractor() : _bge(0), _rho(_invalid_rho) { set_defaults();}70 Subtractor() : _bge(0), _rho(_invalid_rho) {} 78 71 79 72 /// default dtor 80 73 virtual ~Subtractor(){}; 81 82 /// @name configuring the behaviour83 //\{84 //----------------------------------------------------------------85 86 /// reset all parameters to default values87 ///88 /// Note: by default, the rho_m term is not included and the safety89 /// test for the mass is not done. This is mostly for backwards90 /// compatibility with FastJet 3.0 and is highly likely to change in91 /// a future release of FastJet92 void set_defaults();93 94 /// when 'use_rho_m' is true, include in the subtraction the95 /// correction from rho_m, the purely longitudinal,96 /// particle-mass-induced component of the background density per97 /// unit area98 ///99 /// Note: this will be switched off by default (for backwards100 /// compatibility with FastJet 3.0) but is highly likely to change101 /// in a future release of FastJet102 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 used110 bool use_rho_m() const{ return _use_rho_m;}111 112 /// when 'safe_mass' is true, ensure that the mass of the subtracted113 /// 4-vector remain positive114 ///115 /// when true, if the subtracted mass is negative, we return a116 /// 4-vector with 0 mass, pt and phi from the subtracted 4-vector117 /// and the rapidity of the original, unsubtracted jet.118 ///119 /// Note: this will be switched off by default (for backwards120 /// compatibility with FastJet 3.0) but is highly likely to change121 /// in a future release of FastJet122 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 included125 bool safe_mass() const{ return _safe_mass;}126 127 /// This is mostly intended for cherge-hadron-subtracted type of128 /// events where we wich to use vertex information to improve the129 /// subtraction.130 ///131 /// Given the following parameters:132 /// \param sel_known_vertex selects the particles with a133 /// known vertex origin134 /// \param sel_leading_vertex amongst the particles with a135 /// known vertex origin, select those136 /// coming from the leading vertex137 /// Momentum identified as coming from the leading vertex will be138 /// kept, momentum identified as coming from a non-leading vertex139 /// will be eliminated and a regular area-median subtraction will be140 /// applied on the 4-vector sum of the particles with unknown vertex141 /// origin.142 ///143 /// When this is set, we shall ensure that the pt of the subtracted144 /// 4-vector is at least the pt of the particles that are known to145 /// come from the leading vertex (if it fails, subtraction returns146 /// the component that is known to come from the leading vertex ---147 /// or, the original unsubtracted jet if it contains no particles148 /// from the leading vertex). Furthermore, when safe_mass() is on, we149 /// also impose a similar constraint on the mass of the subtracted150 /// 4-vector (if the test fails, the longitudinal part of the151 /// subtracted 4-vector is taken from the component that is known to152 /// 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 action162 //\{163 //----------------------------------------------------------------164 74 165 75 /// returns a jet that's subtracted … … 172 82 virtual std::string description() const; 173 83 174 //\}175 84 protected: 176 /// compute the 4-vector that should be subtracted from the given177 /// jet178 PseudoJet _amount_to_subtract(const PseudoJet &jet) const;179 85 180 86 /// the tool used to estimate the background 181 87 /// if has to be mutable in case its underlying selector takes a reference jet 182 88 mutable BackgroundEstimatorBase * _bge; 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 89 /// the fixed value of rho to use if the user has selected that option 90 double _rho; 195 91 196 92 /// a value of rho that is used as a default to label that the stored … … 202 98 // that's not allowed in an include file. 203 99 static const double _invalid_rho; 204 205 mutable LimitedWarning _unused_rho_m_warning;206 100 }; 207 101 -
external/fastjet/tools/TopTaggerBase.cc
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id : TopTaggerBase.cc 3433 2014-07-23 08:17:03Z salam$1 //STARTHEADER 2 // $Id$ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #include <fastjet/tools/TopTaggerBase.hh> -
external/fastjet/tools/TopTaggerBase.hh
racf622f r2e8de36 2 2 #define __FASTJET_TOP_TAGGER_BASE_HH__ 3 3 4 // FJSTARTHEADER5 // $Id: TopTaggerBase.hh 3433 2014-07-23 08:17:03Z salam$4 //STARTHEADER 5 // $Id: TopTaggerBase.hh 2689 2011-11-14 14:51:06Z soyez $ 6 6 // 7 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez7 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 8 8 // 9 9 //---------------------------------------------------------------------- … … 16 16 // 17 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 18 // development and are described in hep-ph/0512210. If you use 20 19 // 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. 20 // include a citation to the FastJet paper. 23 21 // 24 22 // FastJet is distributed in the hope that it will be useful, … … 30 28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 31 29 //---------------------------------------------------------------------- 32 // FJENDHEADER30 //ENDHEADER 33 31 34 32 #include <fastjet/internal/base.hh> -
external/fastjet/tools/Transformer.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: Transformer.hh 3433 2014-07-23 08:17:03Z salam $1 //STARTHEADER 2 // $Id: Transformer.hh 2577 2011-09-13 15:11:38Z salam $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __FASTJET_TRANSFORMER_HH__ -
external/fastjet/version.hh
racf622f r2e8de36 1 // FJSTARTHEADER2 // $Id: version.hh 3433 2014-07-23 08:17:03Z salam $1 //STARTHEADER 2 // $Id: version.hh 2577 2011-09-13 15:11:38Z salam $ 3 3 // 4 // Copyright (c) 2005-201 4, Matteo Cacciari, Gavin P. Salam and Gregory Soyez4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 5 5 // 6 6 //---------------------------------------------------------------------- … … 13 13 // 14 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 15 // development and are described in hep-ph/0512210. If you use 17 16 // 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. 17 // include a citation to the FastJet paper. 20 18 // 21 19 // FastJet is distributed in the hope that it will be useful, … … 27 25 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 28 26 //---------------------------------------------------------------------- 29 // FJENDHEADER27 //ENDHEADER 30 28 31 29 #ifndef __FASTJET_VERSION_HH__ -
modules/Calorimeter.cc
racf622f r2e8de36 153 153 } 154 154 */ 155 156 // read min E value for towers to be saved157 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 164 155 // read resolution formulas 165 156 fECalResolutionFormula->Compile(GetString("ECalResolutionFormula", "0")); … … 441 432 442 433 if(!fTower) return; 443 // cout<<"----------------------"<<endl;444 // cout<<"Finalize Tower"<<endl;445 // cout<<""<<endl;446 447 434 448 435 ecalSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, fTowerECalEnergy); … … 461 448 hcalEnergy = LogNormal(fTowerHCalEnergy, hcalSigma); 462 449 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;470 450 471 451 energy = ecalEnergy + hcalEnergy; … … 491 471 fTower->Edges[3] = fTowerEdges[3]; 492 472 493 if( energy > 0.0 ) 473 474 // fill calorimeter towers 475 if(energy > 0.0) 494 476 { 495 477 if(fTowerPhotonHits > 0 && fTowerTrackHits == 0) … … 511 493 512 494 ecalEnergy -= fTrackECalEnergy; 513 if(ecalEnergy < fEcalEnergyMin || ecalEnergy < fEcalSigmaMin*fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, ecalEnergy)) ecalEnergy = 0.0;495 if(ecalEnergy < 0.0) ecalEnergy = 0.0; 514 496 515 497 hcalEnergy -= fTrackHCalEnergy; 516 if(hcalEnergy < fHcalEnergyMin || hcalEnergy < fHcalSigmaMin*fHCalResolutionFormula->Eval(0.0, fTowerEta, 0.0, hcalEnergy)) hcalEnergy = 0.0;498 if(hcalEnergy < 0.0) hcalEnergy = 0.0; 517 499 518 500 energy = ecalEnergy + hcalEnergy; 519 501 502 503 // save ECAL and/or HCAL energy excess as an energy flow tower 520 504 if(ecalEnergy > 0.0) 521 505 { … … 531 515 fEFlowPhotonOutputArray->Add(tower); 532 516 } 517 533 518 if(hcalEnergy > 0.0) 534 519 { -
modules/Calorimeter.h
racf622f r2e8de36 72 72 Int_t fTowerTrackHits, fTowerPhotonHits; 73 73 74 Double_t fEcalEnergyMin;75 Double_t fHcalEnergyMin;76 77 Double_t fEcalSigmaMin;78 Double_t fHcalSigmaMin;79 80 74 TFractionMap fFractionMap; //! 81 75 TBinMap fBinMap; //! -
modules/FastJetFinder.cc
racf622f r2e8de36 241 241 Candidate *candidate, *constituent; 242 242 TLorentzVector momentum; 243 244 TLorentzVector constmomentum;245 246 243 Double_t deta, dphi, detaMax, dphiMax; 247 244 Double_t time, weightTime, avTime; … … 307 304 for(itOutputList = outputList.begin(); itOutputList != outputList.end(); ++itOutputList) 308 305 { 309 jet = *itOutputList; 310 if(fJetAlgorithm == 7) jet = join(jet.constituents()); 311 312 momentum.SetPxPyPzE(jet.px(), jet.py(), jet.pz(), jet.E()); 313 306 momentum.SetPxPyPzE(itOutputList->px(), itOutputList->py(), itOutputList->pz(), itOutputList->E()); 314 307 area.reset(0.0, 0.0, 0.0, 0.0); 315 308 if(fAreaDefinition) area = itOutputList->area_4vector(); … … 322 315 inputList.clear(); 323 316 inputList = sequence->constituents(*itOutputList); 324 325 constmomentum.SetPxPyPzE(0.0,0.0,0.0,0.0);;326 317 327 318 for(itInputList = inputList.begin(); itInputList != inputList.end(); ++itInputList) 328 319 { 329 320 constituent = static_cast<Candidate*>(fInputArray->At(itInputList->user_index())); 330 331 constmomentum += constituent->Momentum;332 321 333 322 deta = TMath::Abs(momentum.Eta() - constituent->Momentum.Eta()); -
modules/ModulesLinkDef.h
racf622f r2e8de36 22 22 * Lists classes to be included in cint dicitonary 23 23 * 24 * $Date : 2014-04-16 17:17:35 +0200 (Wed, 16 Apr 2014)$25 * $Revision : 1369$24 * $Date$ 25 * $Revision$ 26 26 * 27 27 * … … 32 32 #include "modules/Delphes.h" 33 33 34 #include "modules/AngularSmearing.h"35 34 #include "modules/FastJetFinder.h" 36 #include "modules/FastJetGridMedianEstimator.h"37 35 #include "modules/ParticlePropagator.h" 38 36 #include "modules/Efficiency.h" 39 #include "modules/IdentificationMap.h"40 37 #include "modules/EnergySmearing.h" 41 38 #include "modules/MomentumSmearing.h" … … 59 56 #include "modules/ConstituentFilter.h" 60 57 #include "modules/StatusPidFilter.h" 61 #include "modules/PdgCodeFilter.h"62 58 #include "modules/Cloner.h" 63 59 #include "modules/Weighter.h" … … 73 69 #pragma link C++ class Delphes+; 74 70 75 #pragma link C++ class AngularSmearing+;76 71 #pragma link C++ class FastJetFinder+; 77 #pragma link C++ class FastJetGridMedianEstimator+;78 72 #pragma link C++ class ParticlePropagator+; 79 73 #pragma link C++ class Efficiency+; 80 #pragma link C++ class IdentificationMap+;81 74 #pragma link C++ class EnergySmearing+; 82 75 #pragma link C++ class MomentumSmearing+; … … 100 93 #pragma link C++ class ConstituentFilter+; 101 94 #pragma link C++ class StatusPidFilter+; 102 #pragma link C++ class PdgCodeFilter+;103 95 #pragma link C++ class Cloner+; 104 96 #pragma link C++ class Weighter+; -
modules/ParticlePropagator.cc
racf622f r2e8de36 158 158 if(TMath::Abs(q) < 1.0E-9 || TMath::Abs(fBz) < 1.0E-9) 159 159 { 160 // solve pt2*t^2 + 2*(px*x + py*y)*t -(fRadius2 - x*x - y*y) = 0160 // solve pt2*t^2 + 2*(px*x + py*y)*t + (fRadius2 - x*x - y*y) = 0 161 161 tmp = px*y - py*x; 162 162 discr2 = pt2*fRadius2 - tmp*tmp; -
modules/PileUpMergerPythia8.cc
racf622f r2e8de36 132 132 dphi = gRandom->Uniform(-TMath::Pi(), TMath::Pi()); 133 133 134 for(i = 1; i < fPythia->event.size(); ++i)134 for(i = 0; i < fPythia->event.size(); ++i) 135 135 { 136 136 Pythia8::Particle &particle = fPythia->event[i]; -
modules/SimpleCalorimeter.cc
racf622f r2e8de36 147 147 } 148 148 */ 149 150 // read min E value for towers to be saved151 fEnergyMin = GetDouble("TowerMinEnergy", 0.0);152 fSigmaMin = GetDouble("TowerMinSignificance", 0.0);153 154 149 // read resolution formulas 155 150 fResolutionFormula->Compile(GetString("ResolutionFormula", "0")); … … 407 402 time = (fTowerWeightTime < 1.0E-09 ) ? 0 : fTowerTime/fTowerWeightTime; 408 403 409 sigma = fResolutionFormula->Eval(0.0, fTowerEta, 0.0, energy);410 411 energy = (energy < fEnergyMin || energy < fSigmaMin*sigma) ? 0 : energy;412 413 404 eta = gRandom->Uniform(fTowerEdges[0], fTowerEdges[1]); 414 405 phi = gRandom->Uniform(fTowerEdges[2], fTowerEdges[3]); … … 432 423 // fill energy flow candidates 433 424 energy -= fTrackEnergy; 434 if(energy < fEnergyMin || energy < fSigmaMin*fResolutionFormula->Eval(0.0, fTowerEta, 0.0, energy)) energy = 0.0;425 if(energy < 0.0) energy = 0.0; 435 426 436 427 // save energy excess as an energy flow tower -
modules/SimpleCalorimeter.h
racf622f r2e8de36 72 72 Int_t fTowerTrackHits, fTowerPhotonHits; 73 73 74 Double_t fEnergyMin;75 Double_t fSigmaMin;76 77 74 TFractionMap fFractionMap; //! 78 75 TBinMap fBinMap; //! -
readers/DelphesProMC.cpp
racf622f r2e8de36 47 47 #include "ExRootAnalysis/ExRootProgressBar.h" 48 48 49 #include "ProMC .pb.h"50 #include "ProMC Book.h"51 #include "ProMC Header.pb.h"49 #include "ProMC/ProMC.pb.h" 50 #include "ProMC/ProMCBook.h" 51 #include "ProMC/ProMCHeader.pb.h" 52 52 53 53 using namespace std; … … 55 55 //--------------------------------------------------------------------------- 56 56 57 void ConvertInput(ProMCEvent &event, double momentumUnit, double positionUnit, 58 ExRootTreeBranch *branch, DelphesFactory *factory, 59 TObjArray *allParticleOutputArray, TObjArray *stableParticleOutputArray, 60 TObjArray *partonOutputArray, TStopwatch *readStopWatch, TStopwatch *procStopWatch) 57 void ConvertInput(ProMCEvent &event, ExRootTreeBranch *branch, DelphesFactory *factory, 58 TObjArray *allParticleOutputArray, TObjArray *stableParticleOutputArray, TObjArray *partonOutputArray, 59 TStopwatch *readStopWatch, TStopwatch *procStopWatch) 61 60 { 62 61 Int_t i; … … 108 107 pid = mutableParticles->pdg_id(i); 109 108 status = mutableParticles->status(i); 110 111 px = mutableParticles->px(i)/momentumUnit; 112 py = mutableParticles->py(i)/momentumUnit; 113 pz = mutableParticles->pz(i)/momentumUnit; 114 mass = mutableParticles->mass(i)/momentumUnit; 115 x = mutableParticles->x(i)/positionUnit; 116 y = mutableParticles->y(i)/positionUnit; 117 z = mutableParticles->z(i)/positionUnit; 118 t = mutableParticles->t(i)/positionUnit; 109 px = mutableParticles->px(i); py = mutableParticles->py(i); pz = mutableParticles->pz(i); mass = mutableParticles->mass(i); 110 x = mutableParticles->x(i); y = mutableParticles->y(i); z = mutableParticles->z(i); t = mutableParticles->t(i); 119 111 120 112 candidate = factory->NewCandidate(); … … 180 172 Int_t i; 181 173 Long64_t eventCounter, numberOfEvents; 182 double momentumUnit = 1.0, positionUnit = 1.0;183 174 184 175 if(argc < 4) … … 232 223 233 224 inputFile = new ProMCBook(argv[i], "r"); 234 235 ProMCHeader header = inputFile->getHeader();236 237 momentumUnit = static_cast<double>(header.momentumunit());238 positionUnit = static_cast<double>(header.lengthunit());239 240 241 225 242 226 if(inputFile == NULL) … … 264 248 265 249 procStopWatch.Start(); 266 ConvertInput(event, momentumUnit, positionUnit, 267 branchEvent, factory, 268 allParticleOutputArray, stableParticleOutputArray, 269 partonOutputArray, &readStopWatch, &procStopWatch); 250 ConvertInput(event, branchEvent, factory, 251 allParticleOutputArray, stableParticleOutputArray, partonOutputArray, 252 &readStopWatch, &procStopWatch); 270 253 modularDelphes->ProcessTask(); 271 254 procStopWatch.Stop(); -
readers/DelphesProMC.py
racf622f r2e8de36 134 134 ################################################################################ 135 135 136 if len(sys.argv) < 4:136 if len(sys.argv) < 2: 137 137 print " Usage: DelphesProMC.py config_file output_file input_file(s)" 138 138 sys.exit(1) -
readers/DelphesPythia8.cpp
racf622f r2e8de36 89 89 pdg = TDatabasePDG::Instance(); 90 90 91 for(i = 1; i < pythia->event.size(); ++i)91 for(i = 0; i < pythia->event.size(); ++i) 92 92 { 93 93 Pythia8::Particle &particle = pythia->event[i];
Note:
See TracChangeset
for help on using the changeset viewer.