Changes in / [fb98f40:6e3d5f4] in git
- Files:
-
- 8 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
Makefile
rfb98f40 r6e3d5f4 316 316 modules/EnergySmearing.h \ 317 317 modules/MomentumSmearing.h \ 318 modules/TrackSmearing.h \ 318 319 modules/ImpactParameterSmearing.h \ 319 320 modules/TimeSmearing.h \ … … 338 339 modules/StatusPidFilter.h \ 339 340 modules/PdgCodeFilter.h \ 341 modules/BeamSpotFilter.h \ 340 342 modules/Cloner.h \ 341 343 modules/Weighter.h \ … … 343 345 modules/JetFlavorAssociation.h \ 344 346 modules/JetFakeParticle.h \ 347 modules/VertexSorter.h \ 348 modules/VertexFinder.h \ 345 349 modules/ExampleModule.h 346 350 ModulesDict$(PcmSuf): \ … … 546 550 classes/DelphesFactory.h \ 547 551 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.h 548 561 tmp/modules/Calorimeter.$(ObjSuf): \ 549 562 modules/Calorimeter.$(SrcSuf) \ … … 836 849 external/ExRootAnalysis/ExRootFilter.h \ 837 850 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.h 838 860 tmp/modules/TreeWriter.$(ObjSuf): \ 839 861 modules/TreeWriter.$(SrcSuf) \ … … 852 874 classes/DelphesFactory.h \ 853 875 classes/DelphesFormula.h \ 876 external/ExRootAnalysis/ExRootResult.h \ 877 external/ExRootAnalysis/ExRootFilter.h \ 878 external/ExRootAnalysis/ExRootClassifier.h 879 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.h 889 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 \ 854 896 external/ExRootAnalysis/ExRootResult.h \ 855 897 external/ExRootAnalysis/ExRootFilter.h \ … … 915 957 tmp/modules/AngularSmearing.$(ObjSuf) \ 916 958 tmp/modules/BTagging.$(ObjSuf) \ 959 tmp/modules/BeamSpotFilter.$(ObjSuf) \ 917 960 tmp/modules/Calorimeter.$(ObjSuf) \ 918 961 tmp/modules/Cloner.$(ObjSuf) \ … … 946 989 tmp/modules/TrackCountingTauTagging.$(ObjSuf) \ 947 990 tmp/modules/TrackPileUpSubtractor.$(ObjSuf) \ 991 tmp/modules/TrackSmearing.$(ObjSuf) \ 948 992 tmp/modules/TreeWriter.$(ObjSuf) \ 949 993 tmp/modules/UniqueObjectFinder.$(ObjSuf) \ 994 tmp/modules/VertexFinder.$(ObjSuf) \ 995 tmp/modules/VertexSorter.$(ObjSuf) \ 950 996 tmp/modules/Weighter.$(ObjSuf) 951 997 … … 1545 1591 tmp/external/tcl/tclVar.$(ObjSuf) 1546 1592 1593 modules/TrackSmearing.h: \ 1594 classes/DelphesModule.h 1595 @touch $@ 1596 1547 1597 external/fastjet/ClusterSequence.hh: \ 1548 1598 external/fastjet/PseudoJet.hh \ … … 1801 1851 @touch $@ 1802 1852 1853 modules/VertexSorter.h: \ 1854 classes/DelphesModule.h \ 1855 classes/DelphesClasses.h 1856 @touch $@ 1857 1803 1858 modules/Delphes.h: \ 1804 1859 classes/DelphesModule.h 1860 @touch $@ 1861 1862 modules/VertexFinder.h: \ 1863 classes/DelphesModule.h \ 1864 classes/DelphesClasses.h 1805 1865 @touch $@ 1806 1866 … … 1977 2037 1978 2038 modules/FastJetFinder.h: \ 2039 classes/DelphesModule.h 2040 @touch $@ 2041 2042 modules/BeamSpotFilter.h: \ 1979 2043 classes/DelphesModule.h 1980 2044 @touch $@ -
classes/DelphesClasses.cc
rfb98f40 r6e3d5f4 121 121 Charge(0), Mass(0.0), 122 122 IsPU(0), IsRecoPU(0), IsConstituent(0), IsFromConversion(0), 123 ClusterIndex(-1), ClusterNDF(0), ClusterSigma(0), SumPT2(0), BTVSumPT2(0), GenDeltaZ(0), GenSumPT2(0), 123 124 Flavor(0), FlavorAlgo(0), FlavorPhys(0), 124 125 BTag(0), BTagAlgo(0), BTagPhys(0), … … 127 128 Momentum(0.0, 0.0, 0.0, 0.0), 128 129 Position(0.0, 0.0, 0.0, 0.0), 130 PositionError(0.0, 0.0, 0.0, 0.0), 131 InitialPosition(0.0, 0.0, 0.0, 0.0), 129 132 Area(0.0, 0.0, 0.0, 0.0), 130 Dxy(0), SDxy(0), Xd(0), Yd(0), Zd(0), 133 L(0), 134 D0(0), ErrorD0(0), 135 DZ(0), ErrorDZ(0), 136 P(0), ErrorP(0), 137 PT(0), ErrorPT(0), 138 CtgTheta(0), ErrorCtgTheta(0), 139 Phi(0), ErrorPhi(0), 140 Xd(0), Yd(0), Zd(0), 131 141 TrackResolution(0), 132 142 NCharged(0), … … 245 255 object.IsConstituent = IsConstituent; 246 256 object.IsFromConversion = IsFromConversion; 257 object.ClusterIndex = ClusterIndex; 258 object.ClusterNDF = ClusterNDF; 259 object.ClusterSigma = ClusterSigma; 260 object.SumPT2 = SumPT2; 261 object.BTVSumPT2 = BTVSumPT2; 262 object.GenDeltaZ = GenDeltaZ; 263 object.GenSumPT2 = GenSumPT2; 247 264 object.Flavor = Flavor; 248 265 object.FlavorAlgo = FlavorAlgo; … … 262 279 object.Momentum = Momentum; 263 280 object.Position = Position; 281 object.InitialPosition = InitialPosition; 282 object.PositionError = PositionError; 264 283 object.Area = Area; 265 object.Dxy = Dxy; 266 object.SDxy = SDxy; 284 object.L = L; 285 object.D0 = D0; 286 object.ErrorD0 = ErrorD0; 287 object.DZ = DZ; 288 object.ErrorDZ = ErrorDZ; 289 object.P = P; 290 object.ErrorP = ErrorP; 291 object.PT = PT; 292 object.ErrorPT = ErrorPT; 293 object.CtgTheta = CtgTheta ; 294 object.ErrorCtgTheta = ErrorCtgTheta; 295 object.Phi = Phi; 296 object.ErrorPhi = ErrorPhi; 267 297 object.Xd = Xd; 268 298 object.Yd = Yd; … … 363 393 Momentum.SetXYZT(0.0, 0.0, 0.0, 0.0); 364 394 Position.SetXYZT(0.0, 0.0, 0.0, 0.0); 395 InitialPosition.SetXYZT(0.0, 0.0, 0.0, 0.0); 365 396 Area.SetXYZT(0.0, 0.0, 0.0, 0.0); 366 Dxy = 0.0; 367 SDxy = 0.0; 397 L = 0.0; 398 D0 = 0.0; 399 ErrorD0 = 0.0; 400 DZ = 0.0; 401 ErrorDZ = 0.0; 402 P =0.0; 403 ErrorP =0.0; 404 PT = 0.0; 405 ErrorPT = 0.0; 406 CtgTheta = 0.0; 407 ErrorCtgTheta = 0.0; 408 Phi = 0.0; 409 ErrorPhi = 0.0; 368 410 Xd = 0.0; 369 411 Yd = 0.0; -
classes/DelphesClasses.h
rfb98f40 r6e3d5f4 147 147 Float_t Pz; // particle momentum vector (z component) | hepevt.phep[number][2] 148 148 149 Float_t PT; // particle transverse momentum 149 Float_t D0; 150 Float_t DZ; 151 Float_t P; 152 Float_t PT; 153 Float_t CtgTheta; 154 Float_t Phi; 150 155 Float_t Eta; // particle pseudorapidity 151 Float_t Phi; // particle azimuthal angle152 153 156 Float_t Rapidity; // particle rapidity 154 157 … … 175 178 Float_t Y; // vertex position (y component) 176 179 Float_t Z; // vertex position (z component) 177 178 ClassDef(Vertex, 1) 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 ClassDef(Vertex, 2) 179 194 }; 180 195 … … 397 412 Int_t Charge; // track charge 398 413 399 Float_t PT; // track transverse momentum400 401 414 Float_t Eta; // track pseudorapidity 402 Float_t Phi; // track azimuthal angle 403 415 404 416 Float_t EtaOuter; // track pseudorapidity at the tracker edge 405 417 Float_t PhiOuter; // track azimuthal angle at the tracker edge … … 415 427 Float_t TOuter; // track position (z component) at the tracker edge 416 428 417 Float_t Dxy; // track signed transverse impact parameter 418 Float_t SDxy; // signed error on the track signed transverse impact parameter 429 Float_t L; // track path length 430 431 Float_t D0; // track signed transverse impact parameter 432 Float_t ErrorD0; // signed error on the track signed transverse impact parameter 433 434 Float_t DZ; // track transverse momentum 435 Float_t ErrorDZ; // track transverse momentum error 436 437 Float_t P; // track transverse momentum 438 Float_t ErrorP; // track transverse momentum error 439 440 Float_t PT; // track transverse momentum 441 Float_t ErrorPT; // track transverse momentum error 442 443 Float_t CtgTheta; // track transverse momentum 444 Float_t ErrorCtgTheta; // track transverse momentum error 445 446 Float_t Phi; // track azimuthal angle 447 Float_t ErrorPhi; // track azimuthal angle 448 419 449 Float_t Xd; // X coordinate of point of closest approach to vertex 420 450 Float_t Yd; // Y coordinate of point of closest approach to vertex … … 423 453 TRef Particle; // reference to generated particle 424 454 455 Int_t VertexIndex; // reference to vertex 456 425 457 static CompBase *fgCompare; //! 426 458 const CompBase *GetCompare() const { return fgCompare; } … … 526 558 Float_t DeltaPhi; 527 559 528 TLorentzVector Momentum, Position, Area; 529 530 Float_t Dxy; 531 Float_t SDxy; 560 TLorentzVector Momentum, Position, InitialPosition, PositionError, Area; 561 562 Float_t L; // path length 563 Float_t D0; 564 Float_t ErrorD0; 565 Float_t DZ; 566 Float_t ErrorDZ; 567 Float_t P; 568 Float_t ErrorP; 569 Float_t PT; 570 Float_t ErrorPT; 571 Float_t CtgTheta; 572 Float_t ErrorCtgTheta; 573 Float_t Phi; 574 Float_t ErrorPhi; 575 532 576 Float_t Xd; 533 577 Float_t Yd; … … 562 606 Float_t SumPt; 563 607 608 // vertex variables 609 610 Int_t ClusterIndex; 611 Int_t ClusterNDF; 612 Double_t ClusterSigma; 613 Double_t SumPT2; 614 Double_t BTVSumPT2; 615 Double_t GenDeltaZ; 616 Double_t GenSumPT2; 617 564 618 // N-subjettiness variables 565 619 -
modules/ImpactParameterSmearing.cc
rfb98f40 r6e3d5f4 96 96 { 97 97 Candidate *candidate, *particle, *mother; 98 Double_t xd, yd, zd, d xy, sx, sy, sz, ddxy;98 Double_t xd, yd, zd, d0, sx, sy, sz, dd0; 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 xy)105 // take momentum before smearing (otherwise apply double smearing on d0) 106 106 particle = static_cast<Candidate*>(candidate->GetCandidates()->At(0)); 107 107 … … 131 131 132 132 // calculate impact parameter (after-smearing) 133 d xy= (xd*py - yd*px)/pt;133 d0 = (xd*py - yd*px)/pt; 134 134 135 dd xy= gRandom->Gaus(0.0, fFormula->Eval(pt, eta, phi, e));135 dd0 = 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 xy = dxy;146 candidate-> SDxy = ddxy;145 candidate->D0 = d0; 146 candidate->ErrorD0 = dd0; 147 147 148 148 candidate->AddCandidate(mother); -
modules/ModulesLinkDef.h
rfb98f40 r6e3d5f4 35 35 #include "modules/EnergySmearing.h" 36 36 #include "modules/MomentumSmearing.h" 37 #include "modules/TrackSmearing.h" 37 38 #include "modules/ImpactParameterSmearing.h" 38 39 #include "modules/TimeSmearing.h" … … 57 58 #include "modules/StatusPidFilter.h" 58 59 #include "modules/PdgCodeFilter.h" 60 #include "modules/BeamSpotFilter.h" 59 61 #include "modules/Cloner.h" 60 62 #include "modules/Weighter.h" … … 62 64 #include "modules/JetFlavorAssociation.h" 63 65 #include "modules/JetFakeParticle.h" 66 #include "modules/VertexSorter.h" 67 #include "modules/VertexFinder.h" 64 68 #include "modules/ExampleModule.h" 65 69 … … 79 83 #pragma link C++ class EnergySmearing+; 80 84 #pragma link C++ class MomentumSmearing+; 85 #pragma link C++ class TrackSmearing+; 81 86 #pragma link C++ class ImpactParameterSmearing+; 82 87 #pragma link C++ class TimeSmearing+; … … 101 106 #pragma link C++ class StatusPidFilter+; 102 107 #pragma link C++ class PdgCodeFilter+; 108 #pragma link C++ class BeamSpotFilter+; 103 109 #pragma link C++ class Cloner+; 104 110 #pragma link C++ class Weighter+; … … 106 112 #pragma link C++ class JetFlavorAssociation+; 107 113 #pragma link C++ class JetFakeParticle+; 114 #pragma link C++ class VertexSorter+; 115 #pragma link C++ class VertexFinder+; 108 116 #pragma link C++ class ExampleModule+; 109 117 -
modules/ParticlePropagator.cc
rfb98f40 r6e3d5f4 67 67 } 68 68 69 69 70 //------------------------------------------------------------------------------ 70 71 … … 91 92 fItInputArray = fInputArray->MakeIterator(); 92 93 94 // import beamspot 95 try 96 { 97 fBeamSpotInputArray = ImportArray(GetString("BeamSpotInputArray", "BeamSpotFilter/beamSpotParticle")); 98 } 99 catch(runtime_error &e) 100 { 101 fBeamSpotInputArray = 0; 102 } 93 103 // create output arrays 94 104 … … 111 121 { 112 122 Candidate *candidate, *mother; 113 TLorentzVector candidatePosition, candidateMomentum ;123 TLorentzVector candidatePosition, candidateMomentum, beamSpotPosition; 114 124 Double_t px, py, pz, pt, pt2, e, q; 115 125 Double_t x, y, z, t, r, phi; … … 120 130 Double_t tmp, discr, discr2; 121 131 Double_t delta, gammam, omega, asinrho; 122 Double_t rcu, rc2, dxy, xd, yd, zd; 123 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 124 136 const Double_t c_light = 2.99792458E8; 125 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 126 146 fItInputArray->Reset(); 127 147 while((candidate = static_cast<Candidate*>(fItInputArray->Next()))) … … 132 152 y = candidatePosition.Y()*1.0E-3; 133 153 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 134 159 q = candidate->Charge; 135 160 … … 181 206 y_t = y + py*t; 182 207 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)); 183 210 184 211 mother = candidate; 185 212 candidate = static_cast<Candidate*>(candidate->Clone()); 186 213 214 candidate->InitialPosition = candidatePosition; 187 215 candidate->Position.SetXYZT(x_t*1.0E3, y_t*1.0E3, z_t*1.0E3, candidatePosition.T() + t*e*1.0E3); 188 216 candidate->L = l*1.0E3; 217 189 218 candidate->Momentum = candidateMomentum; 190 219 candidate->AddCandidate(mother); … … 238 267 yd = (rc2 > 0.0) ? yd / rc2 : -999; 239 268 zd = z + (TMath::Sqrt(xd*xd + yd*yd) - TMath::Sqrt(x*x + y*y))*pz/pt; 240 241 // calculate impact paramater 242 dxy = (xd*py - yd*px)/pt; 243 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 244 287 // 3. time evaluation t = TMath::Min(t_r, t_z) 245 288 // t_r : time to exit from the sides … … 287 330 r_t = TMath::Hypot(x_t, y_t); 288 331 332 333 // compute path length for an helix 334 335 alpha = pz*1.0E9 / c_light / gammam; 336 l = t * TMath::Sqrt(alpha*alpha + r*r*omega*omega); 337 289 338 if(r_t > 0.0) 290 339 { 340 341 // store these variables before cloning 342 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 291 350 mother = candidate; 292 351 candidate = static_cast<Candidate*>(candidate->Clone()); 293 352 353 candidate->InitialPosition = candidatePosition; 294 354 candidate->Position.SetXYZT(x_t*1.0E3, y_t*1.0E3, z_t*1.0E3, candidatePosition.T() + t*c_light*1.0E3); 295 355 296 356 candidate->Momentum = candidateMomentum; 297 candidate->Dxy = dxy*1.0E3; 298 candidate->Xd = xd*1.0E3; 357 358 candidate->L = l*1.0E3; 359 360 candidate->Xd = xd*1.0E3; 299 361 candidate->Yd = yd*1.0E3; 300 362 candidate->Zd = zd*1.0E3; -
modules/ParticlePropagator.h
rfb98f40 r6e3d5f4 35 35 class TClonesArray; 36 36 class TIterator; 37 class TLorentzVector; 37 38 38 39 class ParticlePropagator: public DelphesModule … … 55 56 56 57 const TObjArray *fInputArray; //! 58 const TObjArray *fBeamSpotInputArray; //! 57 59 58 60 TObjArray *fOutputArray; //! -
modules/PileUpMerger.cc
rfb98f40 r6e3d5f4 115 115 TDatabasePDG *pdg = TDatabasePDG::Instance(); 116 116 TParticlePDG *pdgParticle; 117 Int_t pid ;117 Int_t pid, nch, nvtx = -1; 118 118 Float_t x, y, z, t, vx, vy; 119 Float_t px, py, pz, e ;120 Double_t dz, dphi, dt ;119 Float_t px, py, pz, e, pt; 120 Double_t dz, dphi, dt, sumpt2; 121 121 Int_t numberOfEvents, event, numberOfParticles; 122 122 Long64_t allEntries, entry; … … 137 137 vy = 0.0; 138 138 numberOfParticles = fInputArray->GetEntriesFast(); 139 nch = 0; 140 sumpt2 = 0.0; 141 139 142 while((candidate = static_cast<Candidate*>(fItInputArray->Next()))) 140 143 { … … 143 146 z = candidate->Position.Z(); 144 147 t = candidate->Position.T(); 148 pt = candidate->Momentum.Pt(); 145 149 candidate->Position.SetZ(z + dz); 146 150 candidate->Position.SetT(t + dt); 147 151 fParticleOutputArray->Add(candidate); 152 153 if(TMath::Abs(candidate->Charge) > 1.0E-9) 154 { 155 nch++; 156 sumpt2 += pt*pt; 157 } 148 158 } 149 159 … … 154 164 } 155 165 166 nvtx++; 156 167 factory = GetFactory(); 157 168 158 169 vertex = factory->NewCandidate(); 159 170 vertex->Position.SetXYZT(vx, vy, dz, dt); 171 vertex->ClusterIndex = nvtx; 172 vertex->ClusterNDF = nch; 173 vertex->SumPT2 = sumpt2; 174 vertex->GenSumPT2 = sumpt2; 175 160 176 fVertexOutputArray->Add(vertex); 161 177 … … 170 186 numberOfEvents = gRandom->Integer(2*fMeanPileUp + 1); 171 187 break; 188 case 2: 189 numberOfEvents = fMeanPileUp; 190 break; 172 191 default: 173 192 numberOfEvents = gRandom->Poisson(fMeanPileUp); … … 198 217 vx = 0.0; 199 218 vy = 0.0; 219 200 220 numberOfParticles = 0; 221 sumpt2 = 0.0; 222 201 223 while(fReader->ReadParticle(pid, x, y, z, t, px, py, pz, e)) 202 224 { … … 224 246 vx += candidate->Position.X(); 225 247 vy += candidate->Position.Y(); 248 226 249 ++numberOfParticles; 227 250 if(TMath::Abs(candidate->Charge) > 1.0E-9) 251 { 252 nch++; 253 sumpt2 += pt*pt; 254 } 255 228 256 fParticleOutputArray->Add(candidate); 229 257 } … … 234 262 vy /= numberOfParticles; 235 263 } 264 265 nvtx++; 236 266 237 267 vertex = factory->NewCandidate(); 238 268 vertex->Position.SetXYZT(vx, vy, dz, dt); 269 270 vertex->ClusterIndex = nvtx; 271 vertex->ClusterNDF = nch; 272 vertex->SumPT2 = sumpt2; 273 vertex->GenSumPT2 = sumpt2; 274 239 275 vertex->IsPU = 1; 240 276 241 277 fVertexOutputArray->Add(vertex); 242 } 243 } 244 245 //------------------------------------------------------------------------------ 278 279 } 280 } 281 282 //------------------------------------------------------------------------------ -
modules/TrackCountingBTagging.cc
rfb98f40 r6e3d5f4 96 96 97 97 Double_t jpx, jpy; 98 Double_t dr, tp x, tpy, tpt;99 Double_t xd, yd, d xy, ddxy, ip, sip;98 Double_t dr, tpt; 99 Double_t xd, yd, d0, dd0, 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 122 121 tpt = trkMomentum.Pt(); 123 tpx = trkMomentum.Px();124 tpy = trkMomentum.Py();125 126 122 xd = track->Xd; 127 123 yd = track->Yd; 128 d xy= TMath::Hypot(xd, yd);129 dd xy = track->SDxy;124 d0 = TMath::Hypot(xd, yd); 125 dd0 = track->ErrorD0; 130 126 131 127 if(tpt < fPtMin) continue; 132 128 if(dr > fDeltaR) continue; 133 if(d xy> fIPmax) continue;129 if(d0 > fIPmax) continue; 134 130 135 131 sign = (jpx*xd + jpy*yd > 0.0) ? 1 : -1; 136 132 137 ip = sign*d xy;138 sip = ip / TMath::Abs(dd xy);133 ip = sign*d0; 134 sip = ip / TMath::Abs(dd0); 139 135 140 136 if(sip > fSigMin) count++; -
modules/TreeWriter.cc
rfb98f40 r6e3d5f4 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 217 224 entry->Eta = eta; 218 225 entry->Phi = momentum.Phi(); … … 237 244 238 245 const Double_t c_light = 2.99792458E8; 239 246 247 Double_t x, y, z, t, xError, yError, zError, sigma, sumPT2, btvSumPT2, genDeltaZ, genSumPT2; 248 UInt_t index, ndf; 249 240 250 // loop over all vertices 241 251 iterator.Reset(); 242 252 while((candidate = static_cast<Candidate*>(iterator.Next()))) 243 253 { 244 const TLorentzVector &position = candidate->Position; 254 255 index = candidate->ClusterIndex; 256 ndf = candidate->ClusterNDF; 257 sigma = candidate->ClusterSigma; 258 sumPT2 = candidate->SumPT2; 259 btvSumPT2 = candidate->BTVSumPT2; 260 genDeltaZ = candidate->GenDeltaZ; 261 genSumPT2 = candidate->GenSumPT2; 262 263 x = candidate->Position.X (); 264 y = candidate->Position.Y (); 265 z = candidate->Position.Z (); 266 t = candidate->Position.T()*1.0E-3/c_light; 267 268 xError = candidate->PositionError.X (); 269 yError = candidate->PositionError.Y (); 270 zError = candidate->PositionError.Z (); 245 271 246 272 entry = static_cast<Vertex*>(branch->NewEntry()); 247 273 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 } 274 entry->Index = index; 275 entry->NDF = ndf; 276 entry->Sigma = sigma; 277 entry->SumPT2 = sumPT2; 278 entry->BTVSumPT2 = btvSumPT2; 279 entry->GenDeltaZ = genDeltaZ; 280 entry->GenSumPT2 = genSumPT2; 281 282 entry->X = x; 283 entry->Y = y; 284 entry->Z = z; 285 entry->T = t; 286 287 entry->ErrorX = xError; 288 entry->ErrorY = yError; 289 entry->ErrorZ = zError; 290 } 291 } 292 254 293 255 294 //------------------------------------------------------------------------------ … … 291 330 entry->ZOuter = position.Z(); 292 331 entry->TOuter = position.T()*1.0E-3/c_light; 293 294 entry->Dxy = candidate->Dxy; 295 entry->SDxy = candidate->SDxy ; 332 333 entry->L = candidate->L; 334 335 entry->D0 = candidate->D0; 336 entry->ErrorD0 = candidate->ErrorD0; 337 entry->DZ = candidate->DZ; 338 entry->ErrorDZ = candidate->ErrorDZ; 339 entry->P = candidate->P; 340 entry->ErrorP = candidate->ErrorP; 341 entry->PT = candidate->PT; 342 entry->ErrorPT = candidate->ErrorPT; 343 entry->CtgTheta = candidate->CtgTheta; 344 entry->ErrorCtgTheta = candidate->ErrorCtgTheta; 345 entry->Phi = candidate->Phi; 346 entry->ErrorPhi = candidate->ErrorPhi; 347 296 348 entry->Xd = candidate->Xd; 297 349 entry->Yd = candidate->Yd; … … 307 359 308 360 entry->Eta = eta; 309 entry->Phi = momentum.Phi(); 310 entry->PT = pt; 311 361 312 362 particle = static_cast<Candidate*>(candidate->GetCandidates()->At(0)); 313 363 const TLorentzVector &initialPosition = particle->Position; … … 319 369 320 370 entry->Particle = particle; 371 372 entry->VertexIndex = candidate->ClusterIndex; 373 321 374 } 322 375 }
Note:
See TracChangeset
for help on using the changeset viewer.