Changes in / [4a0d9d5:740d430] in git
- Files:
-
- 11 deleted
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
Makefile
r4a0d9d5 r740d430 316 316 modules/EnergySmearing.h \ 317 317 modules/MomentumSmearing.h \ 318 modules/TrackSmearing.h \319 318 modules/ImpactParameterSmearing.h \ 320 319 modules/TimeSmearing.h \ … … 339 338 modules/StatusPidFilter.h \ 340 339 modules/PdgCodeFilter.h \ 341 modules/BeamSpotFilter.h \342 340 modules/Cloner.h \ 343 341 modules/Weighter.h \ … … 345 343 modules/JetFlavorAssociation.h \ 346 344 modules/JetFakeParticle.h \ 347 modules/VertexSorter.h \348 modules/VertexFinder.h \349 345 modules/ExampleModule.h 350 346 ModulesDict$(PcmSuf): \ … … 550 546 classes/DelphesFactory.h \ 551 547 classes/DelphesFormula.h 552 tmp/modules/BeamSpotFilter.$(ObjSuf): \553 modules/BeamSpotFilter.$(SrcSuf) \554 modules/BeamSpotFilter.h \555 classes/DelphesClasses.h \556 classes/DelphesFactory.h \557 classes/DelphesFormula.h \558 external/ExRootAnalysis/ExRootResult.h \559 external/ExRootAnalysis/ExRootFilter.h \560 external/ExRootAnalysis/ExRootClassifier.h561 548 tmp/modules/Calorimeter.$(ObjSuf): \ 562 549 modules/Calorimeter.$(SrcSuf) \ … … 849 836 external/ExRootAnalysis/ExRootFilter.h \ 850 837 external/ExRootAnalysis/ExRootClassifier.h 851 tmp/modules/TrackSmearing.$(ObjSuf): \852 modules/TrackSmearing.$(SrcSuf) \853 modules/TrackSmearing.h \854 classes/DelphesClasses.h \855 classes/DelphesFactory.h \856 classes/DelphesFormula.h \857 external/ExRootAnalysis/ExRootResult.h \858 external/ExRootAnalysis/ExRootFilter.h \859 external/ExRootAnalysis/ExRootClassifier.h860 838 tmp/modules/TreeWriter.$(ObjSuf): \ 861 839 modules/TreeWriter.$(SrcSuf) \ … … 874 852 classes/DelphesFactory.h \ 875 853 classes/DelphesFormula.h \ 876 external/ExRootAnalysis/ExRootResult.h \877 external/ExRootAnalysis/ExRootFilter.h \878 external/ExRootAnalysis/ExRootClassifier.h879 tmp/modules/VertexFinder.$(ObjSuf): \880 modules/VertexFinder.$(SrcSuf) \881 modules/VertexFinder.h \882 classes/DelphesClasses.h \883 classes/DelphesFactory.h \884 classes/DelphesFormula.h \885 classes/DelphesPileUpReader.h \886 external/ExRootAnalysis/ExRootResult.h \887 external/ExRootAnalysis/ExRootFilter.h \888 external/ExRootAnalysis/ExRootClassifier.h889 tmp/modules/VertexSorter.$(ObjSuf): \890 modules/VertexSorter.$(SrcSuf) \891 modules/VertexSorter.h \892 classes/DelphesClasses.h \893 classes/DelphesFactory.h \894 classes/DelphesFormula.h \895 classes/DelphesPileUpReader.h \896 854 external/ExRootAnalysis/ExRootResult.h \ 897 855 external/ExRootAnalysis/ExRootFilter.h \ … … 957 915 tmp/modules/AngularSmearing.$(ObjSuf) \ 958 916 tmp/modules/BTagging.$(ObjSuf) \ 959 tmp/modules/BeamSpotFilter.$(ObjSuf) \960 917 tmp/modules/Calorimeter.$(ObjSuf) \ 961 918 tmp/modules/Cloner.$(ObjSuf) \ … … 989 946 tmp/modules/TrackCountingTauTagging.$(ObjSuf) \ 990 947 tmp/modules/TrackPileUpSubtractor.$(ObjSuf) \ 991 tmp/modules/TrackSmearing.$(ObjSuf) \992 948 tmp/modules/TreeWriter.$(ObjSuf) \ 993 949 tmp/modules/UniqueObjectFinder.$(ObjSuf) \ 994 tmp/modules/VertexFinder.$(ObjSuf) \995 tmp/modules/VertexSorter.$(ObjSuf) \996 950 tmp/modules/Weighter.$(ObjSuf) 997 951 … … 1598 1552 tmp/external/tcl/tclVar.$(ObjSuf) 1599 1553 1600 modules/TrackSmearing.h: \1601 classes/DelphesModule.h1602 @touch $@1603 1604 1554 external/fastjet/ClusterSequence.hh: \ 1605 1555 external/fastjet/PseudoJet.hh \ … … 1859 1809 @touch $@ 1860 1810 1861 modules/VertexSorter.h: \1862 classes/DelphesModule.h \1863 classes/DelphesClasses.h1864 @touch $@1865 1866 1811 modules/Delphes.h: \ 1867 1812 classes/DelphesModule.h 1868 @touch $@1869 1870 modules/VertexFinder.h: \1871 classes/DelphesModule.h \1872 classes/DelphesClasses.h1873 1813 @touch $@ 1874 1814 … … 2037 1977 2038 1978 modules/FastJetFinder.h: \ 2039 classes/DelphesModule.h2040 @touch $@2041 2042 modules/BeamSpotFilter.h: \2043 1979 classes/DelphesModule.h 2044 1980 @touch $@ -
classes/DelphesClasses.cc
r4a0d9d5 r740d430 41 41 CompBase *Tower::fgCompare = CompE<Tower>::Instance(); 42 42 CompBase *HectorHit::fgCompare = CompE<HectorHit>::Instance(); 43 CompBase *Vertex::fgCompare = CompSumPT2<Vertex>::Instance();44 43 CompBase *Candidate::fgCompare = CompMomentumPt<Candidate>::Instance(); 45 44 … … 122 121 Charge(0), Mass(0.0), 123 122 IsPU(0), IsRecoPU(0), IsConstituent(0), IsFromConversion(0), 124 ClusterIndex(-1), ClusterNDF(0), ClusterSigma(0), SumPT2(0), BTVSumPT2(0), GenDeltaZ(0), GenSumPT2(0),125 123 Flavor(0), FlavorAlgo(0), FlavorPhys(0), 126 124 BTag(0), BTagAlgo(0), BTagPhys(0), … … 129 127 Momentum(0.0, 0.0, 0.0, 0.0), 130 128 Position(0.0, 0.0, 0.0, 0.0), 131 PositionError(0.0, 0.0, 0.0, 0.0),132 InitialPosition(0.0, 0.0, 0.0, 0.0),133 129 Area(0.0, 0.0, 0.0, 0.0), 134 L(0), 135 D0(0), ErrorD0(0), 136 DZ(0), ErrorDZ(0), 137 P(0), ErrorP(0), 138 PT(0), ErrorPT(0), 139 CtgTheta(0), ErrorCtgTheta(0), 140 Phi(0), ErrorPhi(0), 141 Xd(0), Yd(0), Zd(0), 130 Dxy(0), SDxy(0), Xd(0), Yd(0), Zd(0), 142 131 TrackResolution(0), 143 132 NCharged(0), … … 256 245 object.IsConstituent = IsConstituent; 257 246 object.IsFromConversion = IsFromConversion; 258 object.ClusterIndex = ClusterIndex;259 object.ClusterNDF = ClusterNDF;260 object.ClusterSigma = ClusterSigma;261 object.SumPT2 = SumPT2;262 object.BTVSumPT2 = BTVSumPT2;263 object.GenDeltaZ = GenDeltaZ;264 object.GenSumPT2 = GenSumPT2;265 247 object.Flavor = Flavor; 266 248 object.FlavorAlgo = FlavorAlgo; … … 280 262 object.Momentum = Momentum; 281 263 object.Position = Position; 282 object.InitialPosition = InitialPosition;283 object.PositionError = PositionError;284 264 object.Area = Area; 285 object.L = L; 286 object.ErrorT = ErrorT; 287 object.D0 = D0; 288 object.ErrorD0 = ErrorD0; 289 object.DZ = DZ; 290 object.ErrorDZ = ErrorDZ; 291 object.P = P; 292 object.ErrorP = ErrorP; 293 object.PT = PT; 294 object.ErrorPT = ErrorPT; 295 object.CtgTheta = CtgTheta ; 296 object.ErrorCtgTheta = ErrorCtgTheta; 297 object.Phi = Phi; 298 object.ErrorPhi = ErrorPhi; 265 object.Dxy = Dxy; 266 object.SDxy = SDxy; 299 267 object.Xd = Xd; 300 268 object.Yd = Yd; … … 314 282 object.SumPtChargedPU = SumPtChargedPU; 315 283 object.SumPt = SumPt; 316 object.ClusterIndex = ClusterIndex; 317 object.ClusterNDF = ClusterNDF; 318 object.ClusterSigma = ClusterSigma; 319 object.SumPT2 = SumPT2; 320 284 321 285 object.FracPt[0] = FracPt[0]; 322 286 object.FracPt[1] = FracPt[1]; … … 399 363 Momentum.SetXYZT(0.0, 0.0, 0.0, 0.0); 400 364 Position.SetXYZT(0.0, 0.0, 0.0, 0.0); 401 InitialPosition.SetXYZT(0.0, 0.0, 0.0, 0.0);402 365 Area.SetXYZT(0.0, 0.0, 0.0, 0.0); 403 L = 0.0; 404 ErrorT = 0.0; 405 D0 = 0.0; 406 ErrorD0 = 0.0; 407 DZ = 0.0; 408 ErrorDZ = 0.0; 409 P =0.0; 410 ErrorP =0.0; 411 PT = 0.0; 412 ErrorPT = 0.0; 413 CtgTheta = 0.0; 414 ErrorCtgTheta = 0.0; 415 Phi = 0.0; 416 ErrorPhi = 0.0; 366 Dxy = 0.0; 367 SDxy = 0.0; 417 368 Xd = 0.0; 418 369 Yd = 0.0; … … 436 387 SumPt = -999; 437 388 438 ClusterIndex = -1;439 ClusterNDF = -99;440 ClusterSigma = 0.0;441 SumPT2 = 0.0;442 BTVSumPT2 = 0.0;443 GenDeltaZ = 0.0;444 GenSumPT2 = 0.0;445 446 389 FracPt[0] = 0.0; 447 390 FracPt[1] = 0.0; -
classes/DelphesClasses.h
r4a0d9d5 r740d430 147 147 Float_t Pz; // particle momentum vector (z component) | hepevt.phep[number][2] 148 148 149 Float_t D0; 150 Float_t DZ; 151 Float_t P; 152 Float_t PT; 153 Float_t CtgTheta; 154 Float_t Phi; 149 Float_t PT; // particle transverse momentum 155 150 Float_t Eta; // particle pseudorapidity 151 Float_t Phi; // particle azimuthal angle 152 156 153 Float_t Rapidity; // particle rapidity 157 154 … … 171 168 //--------------------------------------------------------------------------- 172 169 173 class Vertex: public SortableObject170 class Vertex: public TObject 174 171 { 175 172 public: … … 178 175 Float_t Y; // vertex position (y component) 179 176 Float_t Z; // vertex position (z component) 180 181 Double_t ErrorX; 182 Double_t ErrorY; 183 Double_t ErrorZ; 184 185 Int_t Index; 186 Int_t NDF; 187 Double_t Sigma; 188 Double_t SumPT2; 189 Double_t BTVSumPT2; 190 Double_t GenDeltaZ; 191 Double_t GenSumPT2; 192 193 static CompBase *fgCompare; //! 194 const CompBase *GetCompare() const { return fgCompare; } 195 196 ClassDef(Vertex, 3) 177 178 ClassDef(Vertex, 1) 197 179 }; 198 180 … … 415 397 Int_t Charge; // track charge 416 398 399 Float_t PT; // track transverse momentum 400 417 401 Float_t Eta; // track pseudorapidity 418 402 Float_t Phi; // track azimuthal angle 403 419 404 Float_t EtaOuter; // track pseudorapidity at the tracker edge 420 405 Float_t PhiOuter; // track azimuthal angle at the tracker edge … … 430 415 Float_t TOuter; // track position (z component) at the tracker edge 431 416 432 Float_t L; // track path length 433 Float_t ErrorT; // error on the time measurement 434 435 Float_t D0; // track signed transverse impact parameter 436 Float_t ErrorD0; // signed error on the track signed transverse impact parameter 437 438 Float_t DZ; // track transverse momentum 439 Float_t ErrorDZ; // track transverse momentum error 440 441 Float_t P; // track transverse momentum 442 Float_t ErrorP; // track transverse momentum error 443 444 Float_t PT; // track transverse momentum 445 Float_t ErrorPT; // track transverse momentum error 446 447 Float_t CtgTheta; // track transverse momentum 448 Float_t ErrorCtgTheta; // track transverse momentum error 449 450 Float_t Phi; // track azimuthal angle 451 Float_t ErrorPhi; // track azimuthal angle 452 417 Float_t Dxy; // track signed transverse impact parameter 418 Float_t SDxy; // signed error on the track signed transverse impact parameter 453 419 Float_t Xd; // X coordinate of point of closest approach to vertex 454 420 Float_t Yd; // Y coordinate of point of closest approach to vertex … … 457 423 TRef Particle; // reference to generated particle 458 424 459 Int_t VertexIndex; // reference to vertex460 461 425 static CompBase *fgCompare; //! 462 426 const CompBase *GetCompare() const { return fgCompare; } … … 562 526 Float_t DeltaPhi; 563 527 564 TLorentzVector Momentum, Position, InitialPosition, PositionError, Area; 565 566 Float_t L; // path length 567 Float_t ErrorT; // path length 568 Float_t D0; 569 Float_t ErrorD0; 570 Float_t DZ; 571 Float_t ErrorDZ; 572 Float_t P; 573 Float_t ErrorP; 574 Float_t PT; 575 Float_t ErrorPT; 576 Float_t CtgTheta; 577 Float_t ErrorCtgTheta; 578 Float_t Phi; 579 Float_t ErrorPhi; 580 528 TLorentzVector Momentum, Position, Area; 529 530 Float_t Dxy; 531 Float_t SDxy; 581 532 Float_t Xd; 582 533 Float_t Yd; … … 611 562 Float_t SumPt; 612 563 613 // vertex variables614 615 Int_t ClusterIndex;616 Int_t ClusterNDF;617 Double_t ClusterSigma;618 Double_t SumPT2;619 Double_t BTVSumPT2;620 Double_t GenDeltaZ;621 Double_t GenSumPT2;622 623 564 // N-subjettiness variables 624 565 … … 654 595 void SetFactory(DelphesFactory *factory) { fFactory = factory; } 655 596 656 ClassDef(Candidate, 5)597 ClassDef(Candidate, 4) 657 598 }; 658 599 -
classes/SortableObject.h
r4a0d9d5 r740d430 156 156 return -1; 157 157 else if(t1->ET < t2->ET) 158 return 1;159 else160 return 0;161 }162 };163 164 //---------------------------------------------------------------------------165 166 template <typename T>167 class CompSumPT2: public CompBase168 {169 CompSumPT2() {}170 public:171 static CompSumPT2 *Instance()172 {173 static CompSumPT2 single;174 return &single;175 }176 177 Int_t Compare(const TObject *obj1, const TObject *obj2) const178 {179 const T *t1 = static_cast<const T*>(obj1);180 const T *t2 = static_cast<const T*>(obj2);181 if(t1->SumPT2 > t2->SumPT2)182 return -1;183 else if(t1->SumPT2 < t2->SumPT2)184 158 return 1; 185 159 else -
doc/genMakefile.tcl
r4a0d9d5 r740d430 260 260 executableDeps {converters/*.cpp} {examples/*.cpp} 261 261 262 executableDeps {readers/DelphesHepMC.cpp} {readers/DelphesLHEF.cpp} {readers/DelphesSTDHEP.cpp} {readers/DelphesROOT.cpp}262 executableDeps {readers/DelphesHepMC.cpp} {readers/DelphesLHEF.cpp} {readers/DelphesSTDHEP.cpp} 263 263 264 264 puts {ifeq ($(HAS_CMSSW),true)} -
modules/ImpactParameterSmearing.cc
r4a0d9d5 r740d430 96 96 { 97 97 Candidate *candidate, *particle, *mother; 98 Double_t xd, yd, zd, d 0, sx, sy, sz, dd0;98 Double_t xd, yd, zd, dxy, sx, sy, sz, ddxy; 99 99 Double_t pt, eta, px, py, phi, e; 100 100 … … 103 103 { 104 104 105 // take momentum before smearing (otherwise apply double smearing on d 0)105 // take momentum before smearing (otherwise apply double smearing on dxy) 106 106 particle = static_cast<Candidate*>(candidate->GetCandidates()->At(0)); 107 107 … … 131 131 132 132 // calculate impact parameter (after-smearing) 133 d 0= (xd*py - yd*px)/pt;133 dxy = (xd*py - yd*px)/pt; 134 134 135 dd 0= gRandom->Gaus(0.0, fFormula->Eval(pt, eta, phi, e));135 ddxy = gRandom->Gaus(0.0, fFormula->Eval(pt, eta, phi, e)); 136 136 137 137 // fill smeared values in candidate … … 143 143 candidate->Zd = zd; 144 144 145 candidate->D 0 = d0;146 candidate-> ErrorD0 = dd0;145 candidate->Dxy = dxy; 146 candidate->SDxy = ddxy; 147 147 148 148 candidate->AddCandidate(mother); -
modules/ModulesLinkDef.h
r4a0d9d5 r740d430 35 35 #include "modules/EnergySmearing.h" 36 36 #include "modules/MomentumSmearing.h" 37 #include "modules/TrackSmearing.h"38 37 #include "modules/ImpactParameterSmearing.h" 39 38 #include "modules/TimeSmearing.h" … … 58 57 #include "modules/StatusPidFilter.h" 59 58 #include "modules/PdgCodeFilter.h" 60 #include "modules/BeamSpotFilter.h"61 59 #include "modules/Cloner.h" 62 60 #include "modules/Weighter.h" … … 64 62 #include "modules/JetFlavorAssociation.h" 65 63 #include "modules/JetFakeParticle.h" 66 #include "modules/VertexSorter.h"67 #include "modules/VertexFinder.h"68 #include "modules/VertexFinder4D.h"69 64 #include "modules/ExampleModule.h" 70 65 … … 84 79 #pragma link C++ class EnergySmearing+; 85 80 #pragma link C++ class MomentumSmearing+; 86 #pragma link C++ class TrackSmearing+;87 81 #pragma link C++ class ImpactParameterSmearing+; 88 82 #pragma link C++ class TimeSmearing+; … … 107 101 #pragma link C++ class StatusPidFilter+; 108 102 #pragma link C++ class PdgCodeFilter+; 109 #pragma link C++ class BeamSpotFilter+;110 103 #pragma link C++ class Cloner+; 111 104 #pragma link C++ class Weighter+; … … 113 106 #pragma link C++ class JetFlavorAssociation+; 114 107 #pragma link C++ class JetFakeParticle+; 115 #pragma link C++ class VertexSorter+;116 #pragma link C++ class VertexFinder+;117 #pragma link C++ class VertexFinder4D+;118 108 #pragma link C++ class ExampleModule+; 119 109 -
modules/ParticlePropagator.cc
r4a0d9d5 r740d430 66 66 { 67 67 } 68 69 68 70 69 //------------------------------------------------------------------------------ … … 92 91 fItInputArray = fInputArray->MakeIterator(); 93 92 94 // import beamspot95 try96 {97 fBeamSpotInputArray = ImportArray(GetString("BeamSpotInputArray", "BeamSpotFilter/beamSpotParticle"));98 }99 catch(runtime_error &e)100 {101 fBeamSpotInputArray = 0;102 }103 93 // create output arrays 104 94 … … 121 111 { 122 112 Candidate *candidate, *mother; 123 TLorentzVector candidatePosition, candidateMomentum , beamSpotPosition;113 TLorentzVector candidatePosition, candidateMomentum; 124 114 Double_t px, py, pz, pt, pt2, e, q; 125 115 Double_t x, y, z, t, r, phi; … … 130 120 Double_t tmp, discr, discr2; 131 121 Double_t delta, gammam, omega, asinrho; 132 Double_t rcu, rc2, xd, yd, zd; 133 Double_t l, d0, dz, p, ctgTheta, phip, etap, alpha; 134 Double_t bsx, bsy, bsz; 135 122 Double_t rcu, rc2, dxy, xd, yd, zd; 123 136 124 const Double_t c_light = 2.99792458E8; 137 138 if (!fBeamSpotInputArray || fBeamSpotInputArray->GetSize () == 0) 139 beamSpotPosition.SetXYZT(0.0, 0.0, 0.0, 0.0); 140 else 141 { 142 Candidate &beamSpotCandidate = *((Candidate *) fBeamSpotInputArray->At(0)); 143 beamSpotPosition = beamSpotCandidate.Position; 144 } 145 125 146 126 fItInputArray->Reset(); 147 127 while((candidate = static_cast<Candidate*>(fItInputArray->Next()))) … … 152 132 y = candidatePosition.Y()*1.0E-3; 153 133 z = candidatePosition.Z()*1.0E-3; 154 155 bsx = beamSpotPosition.X()*1.0E-3;156 bsy = beamSpotPosition.Y()*1.0E-3;157 bsz = beamSpotPosition.Z()*1.0E-3;158 159 134 q = candidate->Charge; 160 135 … … 206 181 y_t = y + py*t; 207 182 z_t = z + pz*t; 208 209 l = TMath::Sqrt( (x_t - x)*(x_t - x) + (y_t - y)*(y_t - y) + (z_t - z)*(z_t - z));210 183 211 184 mother = candidate; 212 185 candidate = static_cast<Candidate*>(candidate->Clone()); 213 186 214 candidate->InitialPosition = candidatePosition;215 187 candidate->Position.SetXYZT(x_t*1.0E3, y_t*1.0E3, z_t*1.0E3, candidatePosition.T() + t*e*1.0E3); 216 candidate->L = l*1.0E3; 217 188 218 189 candidate->Momentum = candidateMomentum; 219 190 candidate->AddCandidate(mother); … … 267 238 yd = (rc2 > 0.0) ? yd / rc2 : -999; 268 239 zd = z + (TMath::Sqrt(xd*xd + yd*yd) - TMath::Sqrt(x*x + y*y))*pz/pt; 269 270 // use perigee momentum rather than original particle 271 // momentum, since the orignal particle momentum isn't known 272 273 px = TMath::Sign(1.0,r) * pt * (-y_c / r_c); 274 py = TMath::Sign(1.0,r) * pt * (x_c / r_c); 275 etap = candidateMomentum.Eta(); 276 phip = TMath::ATan2(py, px); 277 278 candidateMomentum.SetPtEtaPhiE(pt, etap, phip, candidateMomentum.E()); 279 280 // calculate additional track parameters (correct for beamspot position) 281 282 d0 = ( (x - bsx) * py - (y - bsy) * px) / pt; 283 dz = z - ((x - bsx) * px + (y - bsy) * py) / pt * (pz / pt); 284 p = candidateMomentum.P(); 285 ctgTheta = 1.0 / TMath::Tan (candidateMomentum.Theta ()); 286 240 241 // calculate impact paramater 242 dxy = (xd*py - yd*px)/pt; 243 287 244 // 3. time evaluation t = TMath::Min(t_r, t_z) 288 245 // t_r : time to exit from the sides … … 330 287 r_t = TMath::Hypot(x_t, y_t); 331 288 332 333 // compute path length for an helix334 335 alpha = pz*1.0E9 / c_light / gammam;336 l = t * TMath::Sqrt(alpha*alpha + r*r*omega*omega);337 338 289 if(r_t > 0.0) 339 290 { 340 341 // store these variables before cloning342 343 candidate->D0 = d0*1.0E3;344 candidate->DZ = dz*1.0E3;345 candidate->P = p;346 candidate->PT = pt;347 candidate->CtgTheta = ctgTheta;348 candidate->Phi = phip;349 350 291 mother = candidate; 351 292 candidate = static_cast<Candidate*>(candidate->Clone()); 352 293 353 candidate->InitialPosition = candidatePosition;354 294 candidate->Position.SetXYZT(x_t*1.0E3, y_t*1.0E3, z_t*1.0E3, candidatePosition.T() + t*c_light*1.0E3); 355 295 356 296 candidate->Momentum = candidateMomentum; 357 358 candidate->L = l*1.0E3; 359 360 candidate->Xd = xd*1.0E3; 297 candidate->Dxy = dxy*1.0E3; 298 candidate->Xd = xd*1.0E3; 361 299 candidate->Yd = yd*1.0E3; 362 300 candidate->Zd = zd*1.0E3; -
modules/ParticlePropagator.h
r4a0d9d5 r740d430 35 35 class TClonesArray; 36 36 class TIterator; 37 class TLorentzVector;38 37 39 38 class ParticlePropagator: public DelphesModule … … 56 55 57 56 const TObjArray *fInputArray; //! 58 const TObjArray *fBeamSpotInputArray; //!59 57 60 58 TObjArray *fOutputArray; //! -
modules/PileUpMerger.cc
r4a0d9d5 r740d430 115 115 TDatabasePDG *pdg = TDatabasePDG::Instance(); 116 116 TParticlePDG *pdgParticle; 117 Int_t pid , nch, nvtx = -1;117 Int_t pid; 118 118 Float_t x, y, z, t, vx, vy; 119 Float_t px, py, pz, e , pt;120 Double_t dz, dphi, dt , sumpt2, dz0, dt0;119 Float_t px, py, pz, e; 120 Double_t dz, dphi, dt; 121 121 Int_t numberOfEvents, event, numberOfParticles; 122 122 Long64_t allEntries, entry; … … 132 132 fFunction->GetRandom2(dz, dt); 133 133 134 dz0 = -1.0e6;135 dt0 = -1.0e6;136 137 134 dt *= c_light*1.0E3; // necessary in order to make t in mm/c 138 135 dz *= 1.0E3; // necessary in order to make z in mm 139 140 //cout<<dz<<","<<dt<<endl;141 142 136 vx = 0.0; 143 137 vy = 0.0; 144 145 138 numberOfParticles = fInputArray->GetEntriesFast(); 146 nch = 0;147 sumpt2 = 0.0;148 149 139 while((candidate = static_cast<Candidate*>(fItInputArray->Next()))) 150 140 { … … 153 143 z = candidate->Position.Z(); 154 144 t = candidate->Position.T(); 155 pt = candidate->Momentum.Pt(); 156 157 // take postion and time from first stable particle 158 if (dz0 < -999999.0) 159 dz0 = z; 160 if (dt0 < -999999.0) 161 dt0 = t; 162 163 // cancel any possible offset in position and time the input file 164 candidate->Position.SetZ(z - dz0 + dz); 165 candidate->Position.SetT(t - dt0 + dt); 166 145 candidate->Position.SetZ(z + dz); 146 candidate->Position.SetT(t + dt); 167 147 fParticleOutputArray->Add(candidate); 168 169 if(TMath::Abs(candidate->Charge) > 1.0E-9) 170 { 171 nch++; 172 sumpt2 += pt*pt; 173 } 174 } 175 148 } 149 176 150 if(numberOfParticles > 0) 177 151 { 178 vx /= sumpt2; 179 vy /= sumpt2; 180 } 181 182 nvtx++; 152 vx /= numberOfParticles; 153 vy /= numberOfParticles; 154 } 155 183 156 factory = GetFactory(); 184 157 185 158 vertex = factory->NewCandidate(); 186 159 vertex->Position.SetXYZT(vx, vy, dz, dt); 187 vertex->ClusterIndex = nvtx;188 vertex->ClusterNDF = nch;189 vertex->SumPT2 = sumpt2;190 vertex->GenSumPT2 = sumpt2;191 192 160 fVertexOutputArray->Add(vertex); 193 161 … … 202 170 numberOfEvents = gRandom->Integer(2*fMeanPileUp + 1); 203 171 break; 204 case 2:205 numberOfEvents = fMeanPileUp;206 break;207 172 default: 208 173 numberOfEvents = gRandom->Poisson(fMeanPileUp); … … 233 198 vx = 0.0; 234 199 vy = 0.0; 235 236 200 numberOfParticles = 0; 237 sumpt2 = 0.0;238 239 201 while(fReader->ReadParticle(pid, x, y, z, t, px, py, pz, e)) 240 202 { … … 262 224 vx += candidate->Position.X(); 263 225 vy += candidate->Position.Y(); 264 265 226 ++numberOfParticles; 266 if(TMath::Abs(candidate->Charge) > 1.0E-9) 267 { 268 nch++; 269 sumpt2 += pt*pt; 270 } 271 227 272 228 fParticleOutputArray->Add(candidate); 273 229 } … … 278 234 vy /= numberOfParticles; 279 235 } 280 281 nvtx++;282 236 283 237 vertex = factory->NewCandidate(); 284 238 vertex->Position.SetXYZT(vx, vy, dz, dt); 285 286 vertex->ClusterIndex = nvtx;287 vertex->ClusterNDF = nch;288 vertex->SumPT2 = sumpt2;289 vertex->GenSumPT2 = sumpt2;290 291 239 vertex->IsPU = 1; 292 240 293 241 fVertexOutputArray->Add(vertex); 294 295 } 296 } 297 298 //------------------------------------------------------------------------------ 242 } 243 } 244 245 //------------------------------------------------------------------------------ -
modules/TimeSmearing.cc
r4a0d9d5 r740d430 99 99 while((candidate = static_cast<Candidate*>(fItInputArray->Next()))) 100 100 { 101 const TLorentzVector &candidatePosition = candidate-> InitialPosition;101 const TLorentzVector &candidatePosition = candidate->Position; 102 102 t = candidatePosition.T()*1.0E-3/c_light; 103 103 104 104 // apply smearing formula 105 105 t = gRandom->Gaus(t, fTimeResolution); 106 106 107 107 mother = candidate; 108 108 candidate = static_cast<Candidate*>(candidate->Clone()); 109 candidate->InitialPosition.SetT(t*1.0E3*c_light); 110 candidate->ErrorT = fTimeResolution*1.0E3*c_light; 109 candidate->Position.SetT(t*1.0E3*c_light); 111 110 112 111 candidate->AddCandidate(mother); -
modules/TrackCountingBTagging.cc
r4a0d9d5 r740d430 96 96 97 97 Double_t jpx, jpy; 98 Double_t dr, tp t;99 Double_t xd, yd, d 0, dd0, ip, sip;98 Double_t dr, tpx, tpy, tpt; 99 Double_t xd, yd, dxy, ddxy, ip, sip; 100 100 101 101 Int_t sign; … … 117 117 { 118 118 const TLorentzVector &trkMomentum = track->Momentum; 119 119 120 120 dr = jetMomentum.DeltaR(trkMomentum); 121 121 122 tpt = trkMomentum.Pt(); 123 tpx = trkMomentum.Px(); 124 tpy = trkMomentum.Py(); 125 122 126 xd = track->Xd; 123 127 yd = track->Yd; 124 d 0= TMath::Hypot(xd, yd);125 dd 0 = track->ErrorD0;128 dxy = TMath::Hypot(xd, yd); 129 ddxy = track->SDxy; 126 130 127 131 if(tpt < fPtMin) continue; 128 132 if(dr > fDeltaR) continue; 129 if(d 0> fIPmax) continue;133 if(dxy > fIPmax) continue; 130 134 131 135 sign = (jpx*xd + jpy*yd > 0.0) ? 1 : -1; 132 136 133 ip = sign*d 0;134 sip = ip / TMath::Abs(dd 0);137 ip = sign*dxy; 138 sip = ip / TMath::Abs(ddxy); 135 139 136 140 if(sip > fSigMin) count++; -
modules/TreeWriter.cc
r4a0d9d5 r740d430 215 215 entry->Pz = momentum.Pz(); 216 216 217 entry->D0 = candidate->D0;218 entry->DZ = candidate->DZ;219 entry->P = candidate->P;220 entry->PT = candidate->PT;221 entry->CtgTheta = candidate->CtgTheta;222 entry->Phi = candidate->Phi;223 224 217 entry->Eta = eta; 225 218 entry->Phi = momentum.Phi(); … … 244 237 245 238 const Double_t c_light = 2.99792458E8; 246 247 Double_t x, y, z, t, xError, yError, zError, sigma, sumPT2, btvSumPT2, genDeltaZ, genSumPT2; 248 UInt_t index, ndf; 249 250 array->Sort(); 251 239 252 240 // loop over all vertices 253 241 iterator.Reset(); 254 242 while((candidate = static_cast<Candidate*>(iterator.Next()))) 255 243 { 256 257 index = candidate->ClusterIndex; 258 ndf = candidate->ClusterNDF; 259 sigma = candidate->ClusterSigma; 260 sumPT2 = candidate->SumPT2; 261 btvSumPT2 = candidate->BTVSumPT2; 262 genDeltaZ = candidate->GenDeltaZ; 263 genSumPT2 = candidate->GenSumPT2; 264 265 x = candidate->Position.X(); 266 y = candidate->Position.Y(); 267 z = candidate->Position.Z(); 268 t = candidate->Position.T()*1.0E-3/c_light; 269 270 xError = candidate->PositionError.X (); 271 yError = candidate->PositionError.Y (); 272 zError = candidate->PositionError.Z (); 244 const TLorentzVector &position = candidate->Position; 273 245 274 246 entry = static_cast<Vertex*>(branch->NewEntry()); 275 247 276 entry->Index = index; 277 entry->NDF = ndf; 278 entry->Sigma = sigma; 279 entry->SumPT2 = sumPT2; 280 entry->BTVSumPT2 = btvSumPT2; 281 entry->GenDeltaZ = genDeltaZ; 282 entry->GenSumPT2 = genSumPT2; 283 284 entry->X = x; 285 entry->Y = y; 286 entry->Z = z; 287 entry->T = t; 288 289 entry->ErrorX = xError; 290 entry->ErrorY = yError; 291 entry->ErrorZ = zError; 292 } 293 } 294 248 entry->X = position.X(); 249 entry->Y = position.Y(); 250 entry->Z = position.Z(); 251 entry->T = position.T()*1.0E-3/c_light; 252 } 253 } 295 254 296 255 //------------------------------------------------------------------------------ … … 332 291 entry->ZOuter = position.Z(); 333 292 entry->TOuter = position.T()*1.0E-3/c_light; 334 335 entry->L = candidate->L; 336 337 entry->D0 = candidate->D0; 338 entry->ErrorD0 = candidate->ErrorD0; 339 entry->DZ = candidate->DZ; 340 entry->ErrorDZ = candidate->ErrorDZ; 341 entry->P = candidate->P; 342 entry->ErrorP = candidate->ErrorP; 343 entry->PT = candidate->PT; 344 entry->ErrorPT = candidate->ErrorPT; 345 entry->CtgTheta = candidate->CtgTheta; 346 entry->ErrorCtgTheta = candidate->ErrorCtgTheta; 347 entry->Phi = candidate->Phi; 348 entry->ErrorPhi = candidate->ErrorPhi; 349 293 294 entry->Dxy = candidate->Dxy; 295 entry->SDxy = candidate->SDxy ; 350 296 entry->Xd = candidate->Xd; 351 297 entry->Yd = candidate->Yd; … … 361 307 362 308 entry->Eta = eta; 363 309 entry->Phi = momentum.Phi(); 310 entry->PT = pt; 311 364 312 particle = static_cast<Candidate*>(candidate->GetCandidates()->At(0)); 365 313 const TLorentzVector &initialPosition = particle->Position; … … 371 319 372 320 entry->Particle = particle; 373 374 entry->VertexIndex = candidate->ClusterIndex;375 376 321 } 377 322 } -
readers/DelphesCMSFWLite.cpp
r4a0d9d5 r740d430 240 240 241 241 branchEvent = treeWriter->NewBranch("Event", HepMCEvent::Class()); 242 branchRwgt = treeWriter->NewBranch(" Weight", Weight::Class());242 branchRwgt = treeWriter->NewBranch("Rwgt", Weight::Class()); 243 243 244 244 confReader = new ExRootConfReader;
Note:
See TracChangeset
for help on using the changeset viewer.