本文整理汇总了C++中Tower::P4方法的典型用法代码示例。如果您正苦于以下问题:C++ Tower::P4方法的具体用法?C++ Tower::P4怎么用?C++ Tower::P4使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Tower
的用法示例。
在下文中一共展示了Tower::P4方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: printJet
void printJet(Jet *jet)
{
GenParticle *particle;
Muon *muon;
Track *track;
Tower *tower;
TObject *object;
TLorentzVector momentum;
momentum.SetPxPyPzE(0.0, 0.0, 0.0, 0.0);
//TRefArray constituentarray(jet->Constituents);
TRefArray particlearray(jet->Particles);
cout<<"Looping over jet constituents. Jet pt: "<<jet->PT<<", eta: "<<jet->Eta<<", phi: "<<jet->Phi<<endl;
// Loop over all jet's constituents
for(Int_t j = 0; j < jet->Constituents.GetEntriesFast(); ++j)
{
object = jet->Constituents.At(j);
// Check if the constituent is accessible
if(object == 0) continue;
if(object->IsA() == GenParticle::Class())
{
particle = (GenParticle*) object;
cout << " GenPart pt: " << particle->PT << ", eta: " << particle->Eta << ", phi: " << particle->Phi << endl;
momentum += particle->P4();
}
else if(object->IsA() == Track::Class())
{
track = (Track*) object;
cout << " Track pt: " << track->PT << ", eta: " << track->Eta << ", phi: " << track->Phi << endl;
momentum += track->P4();
}
else if(object->IsA() == Tower::Class())
{
tower = (Tower*) object;
cout << " Tower pt: " << tower->ET << ", eta: " << tower->Eta << ", phi: " << tower->Phi << endl;
momentum += tower->P4();
}
else if(object->IsA() == Muon::Class())
{
muon = (Muon*) object;
cout << " Muon pt: " << muon->PT << ", eta: " << muon->Eta << ", phi: " << muon->Phi << endl;
momentum += muon->P4();
}
}
cout << " constituent sum pt: " << momentum.Pt() <<" eta "<< momentum.Eta() <<" phi " << momentum.Phi() << std::endl;
for (Int_t j =0; j<jet->Particles.GetEntries(); j++){
GenParticle *p_tmp = (GenParticle*) particlearray.At(j);
printGenParticle(p_tmp);
}
}
示例2: AnalyseEvents
//.........这里部分代码省略.........
Float_t Eem, Ehad;
Bool_t skip;
Long64_t entry;
Int_t i, j, pdgCode;
// Loop over all events
for(entry = 0; entry < allEntries; ++entry)
{
// Load selected branches with data from specified event
treeReader->ReadEntry(entry);
// Loop over all electrons in event
for(i = 0; i < branchElectron->GetEntriesFast(); ++i)
{
electron = (Electron*) branchElectron->At(i);
particle = (GenParticle*) electron->Particle.GetObject();
plots->fElectronDeltaPT->Fill((particle->PT - electron->PT)/particle->PT);
plots->fElectronDeltaEta->Fill((particle->Eta - electron->Eta)/particle->Eta);
}
// Loop over all photons in event
for(i = 0; i < branchPhoton->GetEntriesFast(); ++i)
{
photon = (Photon*) branchPhoton->At(i);
// skip photons with references to multiple particles
if(photon->Particles.GetEntriesFast() != 1) continue;
particle = (GenParticle*) photon->Particles.At(0);
plots->fPhotonDeltaPT->Fill((particle->PT - photon->PT)/particle->PT);
plots->fPhotonDeltaEta->Fill((particle->Eta - photon->Eta)/particle->Eta);
plots->fPhotonDeltaE->Fill((particle->E - photon->E)/particle->E);
}
// Loop over all muons in event
for(i = 0; i < branchMuon->GetEntriesFast(); ++i)
{
muon = (Muon*) branchMuon->At(i);
particle = (GenParticle*) muon->Particle.GetObject();
plots->fMuonDeltaPT->Fill((particle->PT - muon->PT)/particle->PT);
plots->fMuonDeltaEta->Fill((particle->Eta - muon->Eta)/particle->Eta);
}
// Loop over all tracks in event
for(i = 0; i < branchTrack->GetEntriesFast(); ++i)
{
track = (Track*) branchTrack->At(i);
particle = (GenParticle*) track->Particle.GetObject();
plots->fTrackDeltaPT->Fill((particle->PT - track->PT)/particle->PT);
plots->fTrackDeltaEta->Fill((particle->Eta - track->Eta)/particle->Eta);
}
// cout << "-- New event -- " << endl;
// Loop over all jets in event
for(i = 0; i < branchJet->GetEntriesFast(); ++i)
{
jet = (Jet*) branchJet->At(i);
momentum.SetPxPyPzE(0.0, 0.0, 0.0, 0.0);
// cout<<"Looping over jet constituents. Jet pt: "<<jet->PT<<", eta: "<<jet->Eta<<", phi: "<<jet->Phi<<endl;
// Loop over all jet's constituents
for(j = 0; j < jet->Constituents.GetEntriesFast(); ++j)
{
object = jet->Constituents.At(j);
// Check if the constituent is accessible
if(object == 0) continue;
if(object->IsA() == GenParticle::Class())
{
particle = (GenParticle*) object;
// cout << " GenPart pt: " << particle->PT << ", eta: " << particle->Eta << ", phi: " << particle->Phi << endl;
momentum += particle->P4();
}
else if(object->IsA() == Track::Class())
{
track = (Track*) object;
// cout << " Track pt: " << track->PT << ", eta: " << track->Eta << ", phi: " << track->Phi << endl;
momentum += track->P4();
}
else if(object->IsA() == Tower::Class())
{
tower = (Tower*) object;
// cout << " Tower pt: " << tower->ET << ", eta: " << tower->Eta << ", phi: " << tower->Phi << endl;
momentum += tower->P4();
}
}
plots->fJetDeltaPT->Fill((jet->PT - momentum.Pt())/jet->PT);
}
}
}
示例3: AnalyseMuons
void LHCOWriter::AnalyseMuons()
{
Muon *element;
Track *track;
Tower *tower;
Jet *jet;
Int_t muonCounter, tauCounter, jetCounter, minIndex;
Float_t sumPT, sumET, ratET, jetDR, minDR;
muonCounter = 0;
fItMuon->Reset();
while((element = static_cast<Muon*>(fItMuon->Next())))
{
Reset();
sumPT = 0.0;
fItTrack->Reset();
while((track = static_cast<Track*>(fItTrack->Next())))
{
if(element->P4().DeltaR(track->P4()) < 0.5) sumPT += track->PT;
}
sumET = 0.0;
fItTower->Reset();
while((tower = static_cast<Tower*>(fItTower->Next())))
{
if(element->P4().DeltaR(tower->P4()) < 0.5) sumET += tower->ET;
}
tauCounter = 0;
jetCounter = 0;
minIndex = -1;
minDR = 1.0E9;
fItJet->Reset();
while((jet = static_cast<Jet*>(fItJet->Next())))
{
if(jet->TauTag != 0)
{
++tauCounter;
continue;
}
jetDR = element->P4().DeltaR(jet->P4());
if(jetDR < minDR)
{
minIndex = jetCounter;
minDR = jetDR;
}
++jetCounter;
}
fIntParam[1] = 2;
fDblParam[0] = element->Eta;
fDblParam[1] = element->Phi;
fDblParam[2] = element->PT;
fDblParam[3] = 0.11;
fDblParam[4] = element->Charge;
if(minIndex >= 0)
{
fDblParam[5] = fIntParam[0] + fBranchMuon->GetEntriesFast() - muonCounter + tauCounter + minIndex;
}
ratET = sumET/element->PT;
fDblParam[6] = Float_t(TMath::Nint(sumPT)) + (ratET < 1.0 ? ratET : 0.99);
Write();
++muonCounter;
}
}