Changes in / [5c402f7:425cd17] in git
- Files:
-
- 3 deleted
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
external/PUPPI/PuppiAlgo.cc
r5c402f7 r425cd17 1 //#include "FWCore/ParameterSet/interface/ParameterSet.h" 2 //#include "FWCore/PythonParameterSet/interface/MakeParameterSets.h" 1 3 #include "PuppiAlgo.hh" 4 #include "external/fastjet/internal/base.hh" 2 5 #include "Math/QuantFuncMathCore.h" 3 6 #include "Math/SpecFuncMathCore.h" … … 16 19 std::vector<AlgoSubObj> lAlgos = iAlgo.subAlgos; 17 20 fNAlgos = lAlgos.size(); 18 //std::cout << "==> " << fEtaMin << " - " << fEtaMax << " - " << fPtMin << " - " << fNeutralPtMin << " - " << fNeutralPtSlope << " - " << fRMSEtaSF << " - " << std::endl;21 std::cout << "==> " << fEtaMin << " - " << fEtaMax << " - " << fPtMin << " - " << fNeutralPtMin << " - " << fNeutralPtSlope << " - " << fRMSEtaSF << " - " << std::endl; 19 22 for(unsigned int i0 = 0; i0 < lAlgos.size(); i0++) { 20 23 int pAlgoId = lAlgos[i0].metricId; … … 25 28 double pRMSPtMin = lAlgos[i0].rmsPtMin; 26 29 double pRMSSF = lAlgos[i0].rmsScaleFactor; 27 //std::cout << "Algo==> " << i0 << " - " << pAlgoId << " - " << pCharged << " - " << pWeight0 << " - " << pComb << " - " << pConeSize << " - " << pRMSPtMin << " - " << std::endl;30 std::cout << "Algo==> " << i0 << " - " << pAlgoId << " - " << pCharged << " - " << pWeight0 << " - " << pComb << " - " << pConeSize << " - " << pRMSPtMin << " - " << std::endl; 28 31 fAlgoId .push_back(pAlgoId); 29 32 fCharged .push_back(pCharged); -
external/PUPPI/PuppiAlgo.hh
r5c402f7 r425cd17 1 #include "fastjet/PseudoJet.hh" 1 #include "external/fastjet/internal/base.hh" 2 #include "external/fastjet/PseudoJet.hh" 2 3 #include "AlgoObj.hh" 3 4 #include <vector> -
external/PUPPI/PuppiContainer.cc
r5c402f7 r425cd17 1 1 #include "PuppiContainer.hh" 2 #include "fastjet/Selector.hh" 2 #include "external/fastjet/internal/base.hh" 3 #include "external/fastjet/Selector.hh" 4 //#include "external/fastjet/FunctionOfPseudoJet.hh" 3 5 #include "Math/ProbFunc.h" 4 6 #include "TMath.h" -
external/PUPPI/PuppiContainer.hh
r5c402f7 r425cd17 1 1 #include "PuppiAlgo.hh" 2 2 #include "RecoObj2.hh" 3 #include "fastjet/PseudoJet.hh" 3 //#include "external/fastjet/internal/base.hh" 4 #include "external/fastjet/PseudoJet.hh" 4 5 #include <vector> 5 6 -
external/PUPPI/puppiCleanContainer.hh
r5c402f7 r425cd17 7 7 #include "PUPPI/puppiAlgoBin.hh" 8 8 9 #include "fastjet/internal/base.hh" 9 10 #include "fastjet/PseudoJet.hh" 10 11 #include <algorithm> -
modules/Calorimeter.cc
r5c402f7 r425cd17 58 58 fItParticleInputArray(0), fItTrackInputArray(0) 59 59 { 60 60 Int_t i; 61 61 62 fECalResolutionFormula = new DelphesFormula; 62 63 fHCalResolutionFormula = new DelphesFormula; 63 64 64 fECalTowerTrackArray = new TObjArray; 65 fItECalTowerTrackArray = fECalTowerTrackArray->MakeIterator(); 66 67 fHCalTowerTrackArray = new TObjArray; 68 fItHCalTowerTrackArray = fHCalTowerTrackArray->MakeIterator(); 69 65 for(i = 0; i < 2; ++i) 66 { 67 fECalTowerTrackArray[i] = new TObjArray; 68 fItECalTowerTrackArray[i] = fECalTowerTrackArray[i]->MakeIterator(); 69 70 fHCalTowerTrackArray[i] = new TObjArray; 71 fItHCalTowerTrackArray[i] = fHCalTowerTrackArray[i]->MakeIterator(); 72 } 70 73 } 71 74 … … 74 77 Calorimeter::~Calorimeter() 75 78 { 76 79 Int_t i; 80 77 81 if(fECalResolutionFormula) delete fECalResolutionFormula; 78 82 if(fHCalResolutionFormula) delete fHCalResolutionFormula; 79 83 80 if(fECalTowerTrackArray) delete fECalTowerTrackArray; 81 if(fItECalTowerTrackArray) delete fItECalTowerTrackArray; 82 83 if(fHCalTowerTrackArray) delete fHCalTowerTrackArray; 84 if(fItHCalTowerTrackArray) delete fItHCalTowerTrackArray; 85 84 for(i = 0; i < 2; ++i) 85 { 86 if(fECalTowerTrackArray[i]) delete fECalTowerTrackArray[i]; 87 if(fItECalTowerTrackArray[i]) delete fItECalTowerTrackArray[i]; 88 89 if(fHCalTowerTrackArray[i]) delete fHCalTowerTrackArray[i]; 90 if(fItHCalTowerTrackArray[i]) delete fItHCalTowerTrackArray[i]; 91 } 86 92 } 87 93 … … 212 218 Double_t ecalFraction, hcalFraction; 213 219 Double_t ecalEnergy, hcalEnergy; 220 Double_t ecalSigma, hcalSigma; 214 221 Int_t pdgCode; 215 222 … … 361 368 fHCalTowerEnergy = 0.0; 362 369 363 fECalTrackEnergy = 0.0;364 f HCalTrackEnergy= 0.0;365 366 f ECalTrackSigma= 0.0;367 fHCalTrack Sigma= 0.0;368 370 fECalTrackEnergy[0] = 0.0; 371 fECalTrackEnergy[1] = 0.0; 372 373 fHCalTrackEnergy[0] = 0.0; 374 fHCalTrackEnergy[1] = 0.0; 375 369 376 fTowerTrackHits = 0; 370 377 fTowerPhotonHits = 0; 371 378 372 fECalTowerTrackArray->Clear(); 373 fHCalTowerTrackArray->Clear(); 374 379 fECalTowerTrackArray[0]->Clear(); 380 fECalTowerTrackArray[1]->Clear(); 381 382 fHCalTowerTrackArray[0]->Clear(); 383 fHCalTowerTrackArray[1]->Clear(); 375 384 } 376 385 … … 397 406 if(fECalTrackFractions[number] > 1.0E-9 && fHCalTrackFractions[number] < 1.0E-9) 398 407 { 399 fECalTrackEnergy += ecalEnergy; 400 fECalTrackSigma += (track->TrackResolution)*momentum.E()*(track->TrackResolution)*momentum.E(); 401 fECalTowerTrackArray->Add(track); 408 ecalSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, momentum.E()); 409 if(ecalSigma/momentum.E() < track->TrackResolution) 410 { 411 fECalTrackEnergy[0] += ecalEnergy; 412 fECalTowerTrackArray[0]->Add(track); 413 } 414 else 415 { 416 fECalTrackEnergy[1] += ecalEnergy; 417 fECalTowerTrackArray[1]->Add(track); 418 } 402 419 } 403 404 420 else if(fECalTrackFractions[number] < 1.0E-9 && fHCalTrackFractions[number] > 1.0E-9) 405 421 { 406 fHCalTrackEnergy += hcalEnergy; 407 fHCalTrackSigma += (track->TrackResolution)*momentum.E()*(track->TrackResolution)*momentum.E(); 408 fHCalTowerTrackArray->Add(track); 422 hcalSigma = fHCalResolutionFormula->Eval(0.0, fTowerEta, 0.0, momentum.E()); 423 if(hcalSigma/momentum.E() < track->TrackResolution) 424 { 425 fHCalTrackEnergy[0] += hcalEnergy; 426 fHCalTowerTrackArray[0]->Add(track); 427 } 428 else 429 { 430 fHCalTrackEnergy[1] += hcalEnergy; 431 fHCalTowerTrackArray[1]->Add(track); 432 } 409 433 } 410 411 434 else if(fECalTrackFractions[number] < 1.0E-9 && fHCalTrackFractions[number] < 1.0E-9) 412 435 { … … 453 476 Double_t energy, pt, eta, phi; 454 477 Double_t ecalEnergy, hcalEnergy; 455 Double_t ecalNeutralEnergy, hcalNeutralEnergy;456 457 478 Double_t ecalSigma, hcalSigma; 458 Double_t ecalNeutralSigma, hcalNeutralSigma; 459 460 Double_t weightTrack, weightCalo, bestEnergyEstimate, rescaleFactor; 461 479 462 480 TLorentzVector momentum; 463 481 TFractionMap::iterator itFractionMap; … … 466 484 467 485 if(!fTower) return; 486 468 487 469 488 ecalSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, fECalTowerEnergy); … … 535 554 fTowerOutputArray->Add(fTower); 536 555 } 537 556 538 557 // fill energy flow candidates 539 fECalTrackSigma = TMath::Sqrt(fECalTrackSigma); 540 fHCalTrackSigma = TMath::Sqrt(fHCalTrackSigma); 541 542 //compute neutral excesses 543 ecalNeutralEnergy = max( (ecalEnergy - fECalTrackEnergy) , 0.0); 544 hcalNeutralEnergy = max( (hcalEnergy - fHCalTrackEnergy) , 0.0); 545 546 ecalNeutralSigma = ecalNeutralEnergy / TMath::Sqrt(fECalTrackSigma*fECalTrackSigma + ecalSigma*ecalSigma); 547 hcalNeutralSigma = hcalNeutralEnergy / TMath::Sqrt(fHCalTrackSigma*fHCalTrackSigma + hcalSigma*hcalSigma); 548 549 // if ecal neutral excess is significant, simply create neutral EflowPhoton tower and clone each track into eflowtrack 550 if(ecalNeutralEnergy > fECalEnergyMin && ecalNeutralSigma > fECalEnergySignificanceMin) 558 559 ecalEnergy -= fECalTrackEnergy[1]; 560 hcalEnergy -= fHCalTrackEnergy[1]; 561 562 fItECalTowerTrackArray[0]->Reset(); 563 while((track = static_cast<Candidate*>(fItECalTowerTrackArray[0]->Next()))) 564 { 565 mother = track; 566 track = static_cast<Candidate*>(track->Clone()); 567 track->AddCandidate(mother); 568 569 track->Momentum *= ecalEnergy/fECalTrackEnergy[0]; 570 571 fEFlowTrackOutputArray->Add(track); 572 } 573 574 fItECalTowerTrackArray[1]->Reset(); 575 while((track = static_cast<Candidate*>(fItECalTowerTrackArray[1]->Next()))) 576 { 577 mother = track; 578 track = static_cast<Candidate*>(track->Clone()); 579 track->AddCandidate(mother); 580 581 fEFlowTrackOutputArray->Add(track); 582 } 583 584 fItHCalTowerTrackArray[0]->Reset(); 585 while((track = static_cast<Candidate*>(fItHCalTowerTrackArray[0]->Next()))) 586 { 587 mother = track; 588 track = static_cast<Candidate*>(track->Clone()); 589 track->AddCandidate(mother); 590 591 track->Momentum *= hcalEnergy/fHCalTrackEnergy[0]; 592 593 fEFlowTrackOutputArray->Add(track); 594 } 595 596 fItHCalTowerTrackArray[1]->Reset(); 597 while((track = static_cast<Candidate*>(fItHCalTowerTrackArray[1]->Next()))) 598 { 599 mother = track; 600 track = static_cast<Candidate*>(track->Clone()); 601 track->AddCandidate(mother); 602 603 fEFlowTrackOutputArray->Add(track); 604 } 605 606 if(fECalTowerTrackArray[0]->GetEntriesFast() > 0) ecalEnergy = 0.0; 607 if(fHCalTowerTrackArray[0]->GetEntriesFast() > 0) hcalEnergy = 0.0; 608 609 ecalSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, ecalEnergy); 610 hcalSigma = fHCalResolutionFormula->Eval(0.0, fTowerEta, 0.0, hcalEnergy); 611 612 if(ecalEnergy < fECalEnergyMin || ecalEnergy < fECalEnergySignificanceMin*ecalSigma) ecalEnergy = 0.0; 613 if(hcalEnergy < fHCalEnergyMin || hcalEnergy < fHCalEnergySignificanceMin*hcalSigma) hcalEnergy = 0.0; 614 615 energy = ecalEnergy + hcalEnergy; 616 617 if(ecalEnergy > 0.0) 551 618 { 552 619 // create new photon tower 553 620 tower = static_cast<Candidate*>(fTower->Clone()); 554 pt = ecalNeutralEnergy / TMath::CosH(eta); 555 556 tower->Momentum.SetPtEtaPhiE(pt, eta, phi, ecalNeutralEnergy); 557 tower->Eem = ecalNeutralEnergy; 621 622 pt = ecalEnergy / TMath::CosH(eta); 623 624 tower->Momentum.SetPtEtaPhiE(pt, eta, phi, ecalEnergy); 625 tower->Eem = ecalEnergy; 558 626 tower->Ehad = 0.0; 559 627 tower->PID = 22; 560 628 561 629 fEFlowPhotonOutputArray->Add(tower); 562 563 //clone tracks 564 fItECalTowerTrackArray->Reset(); 565 while((track = static_cast<Candidate*>(fItECalTowerTrackArray->Next()))) 566 { 567 mother = track; 568 track = static_cast<Candidate*>(track->Clone()); 569 track->AddCandidate(mother); 570 571 fEFlowTrackOutputArray->Add(track); 572 } 573 574 } 575 576 // if neutral excess is not significant, rescale eflow tracks, such that the total charged equals the best measurement given by the calorimeter and tracking 577 else if(fECalTrackEnergy > 0.0) 578 { 579 weightTrack = (fECalTrackSigma > 0.0) ? 1 / (fECalTrackSigma*fECalTrackSigma) : 0.0; 580 weightCalo = (ecalSigma > 0.0) ? 1 / (ecalSigma*ecalSigma) : 0.0; 581 582 bestEnergyEstimate = (weightTrack*fECalTrackEnergy + weightCalo*ecalEnergy) / (weightTrack + weightCalo); 583 rescaleFactor = bestEnergyEstimate/fECalTrackEnergy; 584 585 //rescale tracks 586 fItECalTowerTrackArray->Reset(); 587 while((track = static_cast<Candidate*>(fItECalTowerTrackArray->Next()))) 588 { 589 mother = track; 590 track = static_cast<Candidate*>(track->Clone()); 591 track->AddCandidate(mother); 592 593 track->Momentum *= rescaleFactor; 594 595 fEFlowTrackOutputArray->Add(track); 596 } 597 } 598 599 600 // if hcal neutral excess is significant, simply create neutral EflowNeutralHadron tower and clone each track into eflowtrack 601 if(hcalNeutralEnergy > fHCalEnergyMin && hcalNeutralSigma > fHCalEnergySignificanceMin) 602 { 603 // create new photon tower 630 } 631 if(hcalEnergy > 0.0) 632 { 633 // create new neutral hadron tower 604 634 tower = static_cast<Candidate*>(fTower->Clone()); 605 pt = hcalNeutralEnergy / TMath::CosH(eta); 606 607 tower->Momentum.SetPtEtaPhiE(pt, eta, phi, hcalNeutralEnergy); 608 tower-> Ehad = hcalNeutralEnergy;635 636 pt = hcalEnergy / TMath::CosH(eta); 637 638 tower->Momentum.SetPtEtaPhiE(pt, eta, phi, hcalEnergy); 609 639 tower->Eem = 0.0; 610 640 tower->Ehad = hcalEnergy; 641 611 642 fEFlowNeutralHadronOutputArray->Add(tower); 612 613 //clone tracks 614 fItHCalTowerTrackArray->Reset(); 615 while((track = static_cast<Candidate*>(fItHCalTowerTrackArray->Next()))) 616 { 617 mother = track; 618 track = static_cast<Candidate*>(track->Clone()); 619 track->AddCandidate(mother); 620 621 fEFlowTrackOutputArray->Add(track); 622 } 623 624 } 625 626 // if neutral excess is not significant, rescale eflow tracks, such that the total charged equals the best measurement given by the calorimeter and tracking 627 else if(fHCalTrackEnergy > 0.0) 628 { 629 weightTrack = (fHCalTrackSigma > 0.0) ? 1 / (fHCalTrackSigma*fHCalTrackSigma) : 0.0; 630 weightCalo = (hcalSigma > 0.0) ? 1 / (hcalSigma*hcalSigma) : 0.0; 631 632 bestEnergyEstimate = (weightTrack*fHCalTrackEnergy + weightCalo*hcalEnergy) / (weightTrack + weightCalo); 633 rescaleFactor = bestEnergyEstimate / fHCalTrackEnergy; 634 635 //rescale tracks 636 fItHCalTowerTrackArray->Reset(); 637 while((track = static_cast<Candidate*>(fItHCalTowerTrackArray->Next()))) 638 { 639 mother = track; 640 track = static_cast<Candidate*>(track->Clone()); 641 track->AddCandidate(mother); 642 643 track->Momentum *= rescaleFactor; 644 645 fEFlowTrackOutputArray->Add(track); 646 } 647 } 648 649 643 } 650 644 } 651 645 -
modules/Calorimeter.h
r5c402f7 r425cd17 58 58 Double_t fTowerEta, fTowerPhi, fTowerEdges[4]; 59 59 Double_t fECalTowerEnergy, fHCalTowerEnergy; 60 Double_t fECalTrackEnergy , fHCalTrackEnergy;60 Double_t fECalTrackEnergy[2], fHCalTrackEnergy[2]; 61 61 62 62 Double_t fTimingEnergyMin; … … 70 70 Double_t fECalEnergySignificanceMin; 71 71 Double_t fHCalEnergySignificanceMin; 72 73 Double_t fECalTrackSigma;74 Double_t fHCalTrackSigma;75 72 76 73 Bool_t fSmearTowerCenter; … … 106 103 TObjArray *fEFlowNeutralHadronOutputArray; //! 107 104 108 TObjArray *fECalTowerTrackArray ; //!109 TIterator *fItECalTowerTrackArray ; //!105 TObjArray *fECalTowerTrackArray[2]; //! 106 TIterator *fItECalTowerTrackArray[2]; //! 110 107 111 TObjArray *fHCalTowerTrackArray ; //!112 TIterator *fItHCalTowerTrackArray ; //!108 TObjArray *fHCalTowerTrackArray[2]; //! 109 TIterator *fItHCalTowerTrackArray[2]; //! 113 110 114 111 void FinalizeTower(); -
modules/RunPUPPI.cc
r5c402f7 r425cd17 3 3 #include "PUPPI/RecoObj2.hh" 4 4 #include "PUPPI/AlgoObj.hh" 5 #include "PUPPI/PuppiContainer.hh" 6 7 #include "fastjet/PseudoJet.hh" 5 //#include "PUPPI/puppiParticle.hh" 6 //#include "PUPPI/puppiAlgoBin.hh" 8 7 9 8 #include "classes/DelphesClasses.h" … … 18 17 19 18 using namespace std; 20 using namespace fastjet;21 19 22 20 //------------------------------------------------------------------------------ … … 240 238 fPuppi->initialize(puppiInputVector); 241 239 fPuppi->puppiWeights(); 242 std::vector< PseudoJet> puppiParticles = fPuppi->puppiParticles();240 std::vector<fastjet::PseudoJet> puppiParticles = fPuppi->puppiParticles(); 243 241 244 242 // Loop on final particles 245 for (std::vector< PseudoJet>::iterator it = puppiParticles.begin() ; it != puppiParticles.end() ; it++) {243 for (std::vector<fastjet::PseudoJet>::iterator it = puppiParticles.begin() ; it != puppiParticles.end() ; it++) { 246 244 if(it->user_index() <= int(InputParticles.size())){ 247 245 candidate = static_cast<Candidate *>(InputParticles.at(it->user_index())->Clone()); -
modules/RunPUPPI.h
r5c402f7 r425cd17 3 3 4 4 #include "classes/DelphesModule.h" 5 #include "PUPPI/PuppiContainer.hh" 5 6 #include <vector> 6 7 7 8 class TObjArray; 8 9 class TIterator; 9 class PuppiContainer; 10 10 11 11 12 class RunPUPPI: public DelphesModule { -
modules/SimpleCalorimeter.cc
r5c402f7 r425cd17 58 58 fItParticleInputArray(0), fItTrackInputArray(0) 59 59 { 60 60 Int_t i; 61 61 62 fResolutionFormula = new DelphesFormula; 62 fTowerTrackArray = new TObjArray; 63 fItTowerTrackArray = fTowerTrackArray->MakeIterator(); 64 63 64 for(i = 0; i < 2; ++i) 65 { 66 fTowerTrackArray[i] = new TObjArray; 67 fItTowerTrackArray[i] = fTowerTrackArray[i]->MakeIterator(); 68 } 65 69 } 66 70 … … 69 73 SimpleCalorimeter::~SimpleCalorimeter() 70 74 { 71 75 Int_t i; 76 72 77 if(fResolutionFormula) delete fResolutionFormula; 73 if(fTowerTrackArray) delete fTowerTrackArray; 74 if(fItTowerTrackArray) delete fItTowerTrackArray; 75 78 79 for(i = 0; i < 2; ++i) 80 { 81 if(fTowerTrackArray[i]) delete fTowerTrackArray[i]; 82 if(fItTowerTrackArray[i]) delete fItTowerTrackArray[i]; 83 } 76 84 } 77 85 … … 190 198 Double_t fraction; 191 199 Double_t energy; 200 Double_t sigma; 192 201 Int_t pdgCode; 193 202 … … 331 340 fTowerEnergy = 0.0; 332 341 333 fTrackEnergy = 0.0;334 fTrack Sigma= 0.0;342 fTrackEnergy[0] = 0.0; 343 fTrackEnergy[1] = 0.0; 335 344 336 345 fTowerTime = 0.0; … … 342 351 fTowerPhotonHits = 0; 343 352 344 fTowerTrackArray->Clear(); 345 } 353 fTowerTrackArray[0]->Clear(); 354 fTowerTrackArray[1]->Clear(); 355 } 346 356 347 357 // check for track hits … … 356 366 energy = momentum.E() * fTrackFractions[number]; 357 367 358 fTrackTime += TMath::Sqrt(energy)*position.T();359 fTrackTimeWeight += TMath::Sqrt(energy);368 fTrackTime += energy*position.T(); 369 fTrackTimeWeight += energy; 360 370 361 371 if(fTrackFractions[number] > 1.0E-9) 362 372 { 363 364 // compute total charged energy 365 fTrackEnergy += energy; 366 fTrackSigma += ((track->TrackResolution)*momentum.E())*((track->TrackResolution)*momentum.E()); 367 368 fTowerTrackArray->Add(track); 369 373 sigma = fResolutionFormula->Eval(0.0, fTowerEta, 0.0, momentum.E()); 374 if(sigma/momentum.E() < track->TrackResolution) 375 { 376 fTrackEnergy[0] += energy; 377 fTowerTrackArray[0]->Add(track); 378 } 379 else 380 { 381 fTrackEnergy[1] += energy; 382 fTowerTrackArray[1]->Add(track); 383 } 370 384 } 371 372 385 else 373 386 { … … 405 418 { 406 419 Candidate *tower, *track, *mother; 407 Double_t energy, neutralEnergy,pt, eta, phi;408 Double_t sigma , neutralSigma;420 Double_t energy, pt, eta, phi; 421 Double_t sigma; 409 422 Double_t time; 410 411 Double_t weightTrack, weightCalo, bestEnergyEstimate, rescaleFactor;412 423 413 424 TLorentzVector momentum; … … 425 436 426 437 if(energy < fEnergyMin || energy < fEnergySignificanceMin*sigma) energy = 0.0; 427 428 438 429 439 if(fSmearTowerCenter) … … 454 464 if(energy > 0.0) fTowerOutputArray->Add(fTower); 455 465 456 457 // e-flow candidates 458 459 //compute neutral excess 460 461 fTrackSigma = TMath::Sqrt(fTrackSigma); 462 neutralEnergy = max( (energy - fTrackEnergy) , 0.0); 463 464 //compute sigma_trk total 465 neutralSigma = neutralEnergy / TMath::Sqrt(fTrackSigma*fTrackSigma+ sigma*sigma); 466 467 // if neutral excess is significant, simply create neutral Eflow tower and clone each track into eflowtrack 468 if(neutralEnergy > fEnergyMin && neutralSigma > fEnergySignificanceMin) 466 // fill e-flow candidates 467 468 energy -= fTrackEnergy[1]; 469 470 fItTowerTrackArray[0]->Reset(); 471 while((track = static_cast<Candidate*>(fItTowerTrackArray[0]->Next()))) 472 { 473 mother = track; 474 track = static_cast<Candidate*>(track->Clone()); 475 track->AddCandidate(mother); 476 477 track->Momentum *= energy/fTrackEnergy[0]; 478 479 fEFlowTrackOutputArray->Add(track); 480 } 481 482 fItTowerTrackArray[1]->Reset(); 483 while((track = static_cast<Candidate*>(fItTowerTrackArray[1]->Next()))) 484 { 485 mother = track; 486 track = static_cast<Candidate*>(track->Clone()); 487 track->AddCandidate(mother); 488 489 fEFlowTrackOutputArray->Add(track); 490 } 491 492 if(fTowerTrackArray[0]->GetEntriesFast() > 0) energy = 0.0; 493 494 sigma = fResolutionFormula->Eval(0.0, fTowerEta, 0.0, energy); 495 if(energy < fEnergyMin || energy < fEnergySignificanceMin*sigma) energy = 0.0; 496 497 // save energy excess as an energy flow tower 498 if(energy > 0.0) 469 499 { 470 500 // create new photon tower 471 501 tower = static_cast<Candidate*>(fTower->Clone()); 472 pt = neutralEnergy / TMath::CosH(eta); 473 474 tower->Eem = (!fIsEcal) ? 0 : neutralEnergy; 475 tower->Ehad = (fIsEcal) ? 0 : neutralEnergy; 502 pt = energy / TMath::CosH(eta); 503 504 tower->Eem = (!fIsEcal) ? 0 : energy; 505 tower->Ehad = (fIsEcal) ? 0 : energy; 506 507 tower->Momentum.SetPtEtaPhiE(pt, eta, phi, energy); 508 476 509 tower->PID = (fIsEcal) ? 22 : 0; 477 478 tower->Momentum.SetPtEtaPhiE(pt, eta, phi, neutralEnergy); 510 479 511 fEFlowTowerOutputArray->Add(tower); 480 481 fItTowerTrackArray->Reset(); 482 while((track = static_cast<Candidate*>(fItTowerTrackArray->Next()))) 483 { 484 mother = track; 485 track = static_cast<Candidate*>(track->Clone()); 486 track->AddCandidate(mother); 487 488 fEFlowTrackOutputArray->Add(track); 489 } 490 } 491 492 // if neutral excess is not significant, rescale eflow tracks, such that the total charged equals the best measurement given by the calorimeter and tracking 493 else if (fTrackEnergy > 0.0) 494 { 495 weightTrack = (fTrackSigma > 0.0) ? 1 / (fTrackSigma*fTrackSigma) : 0.0; 496 weightCalo = (sigma > 0.0) ? 1 / (sigma*sigma) : 0.0; 497 498 bestEnergyEstimate = (weightTrack*fTrackEnergy + weightCalo*energy) / (weightTrack + weightCalo); 499 rescaleFactor = bestEnergyEstimate/fTrackEnergy; 500 501 fItTowerTrackArray->Reset(); 502 while((track = static_cast<Candidate*>(fItTowerTrackArray->Next()))) 503 { 504 mother = track; 505 track = static_cast<Candidate*>(track->Clone()); 506 track->AddCandidate(mother); 507 508 track->Momentum *= rescaleFactor; 509 510 fEFlowTrackOutputArray->Add(track); 511 } 512 } 513 514 } 512 } 513 } 515 514 516 515 //------------------------------------------------------------------------------ -
modules/SimpleCalorimeter.h
r5c402f7 r425cd17 59 59 Double_t fTowerEta, fTowerPhi, fTowerEdges[4]; 60 60 Double_t fTowerEnergy; 61 Double_t fTrackEnergy ;61 Double_t fTrackEnergy[2]; 62 62 63 63 Double_t fTowerTime; … … 72 72 73 73 Double_t fEnergySignificanceMin; 74 75 Double_t fTrackSigma;76 74 77 75 Bool_t fSmearTowerCenter; … … 104 102 TObjArray *fEFlowTowerOutputArray; //! 105 103 106 TObjArray *fTowerTrackArray ; //!107 TIterator *fItTowerTrackArray ; //!104 TObjArray *fTowerTrackArray[2]; //! 105 TIterator *fItTowerTrackArray[2]; //! 108 106 109 107 void FinalizeTower(); -
modules/VertexFinderDA4D.cc
r5c402f7 r425cd17 560 560 cout.precision(4); 561 561 for(vector<vertex_t>::const_iterator k=y.begin(); k!=y.end(); k++){ 562 //cout << setw(8) << fixed << k->z;562 cout << setw(8) << fixed << k->z; 563 563 } 564 564 cout << endl << " t= "; 565 565 for(vector<vertex_t>::const_iterator k=y.begin(); k!=y.end(); k++){ 566 //cout << setw(8) << fixed << k->t;567 } 568 //cout << endl << "T=" << setw(15) << 1./beta <<" Tc= ";566 cout << setw(8) << fixed << k->t; 567 } 568 cout << endl << "T=" << setw(15) << 1./beta <<" Tc= "; 569 569 for(vector<vertex_t>::const_iterator k=y.begin(); k!=y.end(); k++){ 570 //cout << setw(8) << fixed << k->Tc ;570 cout << setw(8) << fixed << k->Tc ; 571 571 } 572 572 … … 574 574 double sumpk=0; 575 575 for(vector<vertex_t>::const_iterator k=y.begin(); k!=y.end(); k++){ 576 //cout << setw(8) << setprecision(3) << fixed << k->pk;576 cout << setw(8) << setprecision(3) << fixed << k->pk; 577 577 sumpk+=k->pk; 578 578 } … … 588 588 double tz= tks[i].z; 589 589 double tt= tks[i].t; 590 //cout << setw (3)<< i << ")" << setw (8) << fixed << setprecision(4)<< tz << " +/-" << setw (6)<< sqrt(tks[i].dz2)591 //<< setw(8) << fixed << setprecision(4) << tt << " +/-" << setw(6) << std::sqrt(tks[i].dt2) ;590 cout << setw (3)<< i << ")" << setw (8) << fixed << setprecision(4)<< tz << " +/-" << setw (6)<< sqrt(tks[i].dz2) 591 << setw(8) << fixed << setprecision(4) << tt << " +/-" << setw(6) << std::sqrt(tks[i].dt2) ; 592 592 593 593 double sump=0.; … … 597 597 double p=k->pk * std::exp(-beta*Eik(tks[i],*k)) / tks[i].Z; 598 598 if( p > 0.0001){ 599 //cout << setw (8) << setprecision(3) << p;599 cout << setw (8) << setprecision(3) << p; 600 600 }else{ 601 601 cout << " . "; -
readers/DelphesPythia8.cpp
r5c402f7 r425cd17 25 25 26 26 #include "Pythia.h" 27 #include "Pythia8Plugins/CombineMatchingInput.h"28 27 29 28 #include "TROOT.h" … … 225 224 226 225 Pythia8::Pythia *pythia = 0; 227 228 // for matching229 Pythia8::CombineMatchingInput *combined = 0;230 Pythia8::UserHooks* matching = 0;231 226 232 227 if(argc != 4) … … 275 270 // Initialize Pythia 276 271 pythia = new Pythia8::Pythia; 277 278 // jet matching 279 matching = combined->getHook(*pythia); 280 if (!matching) 281 { 282 throw runtime_error("can't do matching"); 283 } 284 pythia->setUserHooksPtr(matching); 285 272 //Pythia8::Event& event = pythia->event; 273 //Pythia8::ParticleData& pdt = pythia->particleData; 286 274 287 275 if(pythia == NULL)
Note:
See TracChangeset
for help on using the changeset viewer.