Fork me on GitHub

Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • modules/SimpleCalorimeter.cc

    r341014c r5eda6767  
    208208  fItParticleInputArray->Reset();
    209209  number = -1;
     210  fTowerRmax=0.;
    210211  while((particle = static_cast<Candidate *>(fItParticleInputArray->Next())))
    211212  {
    212213    const TLorentzVector &particlePosition = particle->Position;
    213214    ++number;
     215
     216    // compute maximum radius (needed in FinalizeTower to assess whether barrel or endcap tower)
     217    if (particlePosition.Perp() > fTowerRmax)
     218      fTowerRmax=particlePosition.Perp();
    214219
    215220    pdgCode = TMath::Abs(particle->PID);
     
    394399    fTowerEnergy += energy;
    395400
    396     fTowerTime += energy * position.T();
    397     fTowerTimeWeight += energy;
     401    fTowerTime += energy * energy * position.T(); //sigma_t ~ 1/E
     402    fTowerTimeWeight += energy * energy;
    398403
    399404    fTower->AddCandidate(particle);
     405    fTower->Position = position;
     406
    400407  }
    401408
     
    409416{
    410417  Candidate *tower, *track, *mother;
    411   Double_t energy, neutralEnergy, pt, eta, phi;
     418  Double_t energy, neutralEnergy, pt, eta, phi, r;
    412419  Double_t sigma, neutralSigma;
    413420  Double_t time;
     
    443450  pt = energy / TMath::CosH(eta);
    444451
    445   fTower->Position.SetPtEtaPhiE(1.0, eta, phi, time);
     452  // check whether barrel or endcap tower
     453  if (fTower->Position.Perp() < fTowerRmax && TMath::Abs(eta) > 0.)
     454    r = fTower->Position.Z()/TMath::SinH(eta);
     455  else
     456    r = fTower->Position.Pt();
     457
     458  fTower->Position.SetPtEtaPhiE(r, eta, phi, time);
    446459  fTower->Momentum.SetPtEtaPhiE(pt, eta, phi, energy);
    447460
     
    507520      track = static_cast<Candidate *>(track->Clone());
    508521      track->AddCandidate(mother);
    509 
    510       track->Momentum *= rescaleFactor;
    511 
     522      track->Momentum.SetPtEtaPhiM(track->Momentum.Pt()*rescaleFactor, track->Momentum.Eta(), track->Momentum.Phi(), track->Momentum.M());
    512523      fEFlowTrackOutputArray->Add(track);
    513524    }
Note: See TracChangeset for help on using the changeset viewer.