Fork me on GitHub

Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • modules/Calorimeter.cc

    r341014c r5eda6767  
    231231  fItParticleInputArray->Reset();
    232232  number = -1;
     233  fTowerRmax=0.;
    233234  while((particle = static_cast<Candidate *>(fItParticleInputArray->Next())))
    234235  {
    235236    const TLorentzVector &particlePosition = particle->Position;
    236237    ++number;
     238
     239    // compute maximum radius (needed in FinalizeTower to assess whether barrel or endcap tower)
     240    if (particlePosition.Perp() > fTowerRmax)
     241      fTowerRmax=particlePosition.Perp();
    237242
    238243    pdgCode = TMath::Abs(particle->PID);
     
    450455
    451456    fTower->AddCandidate(particle);
     457    fTower->Position = position;
    452458  }
    453459
     
    461467{
    462468  Candidate *track, *tower, *mother;
    463   Double_t energy, pt, eta, phi;
     469  Double_t energy, pt, eta, phi, r;
    464470  Double_t ecalEnergy, hcalEnergy;
    465471  Double_t ecalNeutralEnergy, hcalNeutralEnergy;
     
    511517  for(size_t i = 0; i < fTower->ECalEnergyTimePairs.size(); ++i)
    512518  {
    513     weight = TMath::Sqrt(fTower->ECalEnergyTimePairs[i].first);
     519    weight = TMath::Power((fTower->ECalEnergyTimePairs[i].first),2);
    514520    sumWeightedTime += weight * fTower->ECalEnergyTimePairs[i].second;
    515521    sumWeight += weight;
     
    517523  }
    518524
     525  // check whether barrel or endcap tower
     526  if (fTower->Position.Perp() < fTowerRmax && TMath::Abs(eta) > 0.)
     527    r = fTower->Position.Z()/TMath::SinH(eta);
     528  else
     529    r = fTower->Position.Pt();
     530
    519531  if(sumWeight > 0.0)
    520532  {
    521     fTower->Position.SetPtEtaPhiE(1.0, eta, phi, sumWeightedTime / sumWeight);
     533    fTower->Position.SetPtEtaPhiE(r, eta, phi, sumWeightedTime / sumWeight);
    522534  }
    523535  else
    524536  {
    525     fTower->Position.SetPtEtaPhiE(1.0, eta, phi, 999999.9);
     537    fTower->Position.SetPtEtaPhiE(r, eta, phi, 999999.9);
    526538  }
    527539
     
    559571  if(ecalNeutralEnergy > fECalEnergyMin && ecalNeutralSigma > fECalEnergySignificanceMin)
    560572  {
    561     // create new photon tower
     573    // create new photon tower assuming null mass
    562574    tower = static_cast<Candidate *>(fTower->Clone());
    563575    pt = ecalNeutralEnergy / TMath::CosH(eta);
     
    646658      track = static_cast<Candidate *>(track->Clone());
    647659      track->AddCandidate(mother);
    648 
    649660      track->Momentum *= rescaleFactor;
     661      track->Momentum.SetPtEtaPhiM(track->Momentum.Pt()*rescaleFactor, track->Momentum.Eta(), track->Momentum.Phi(), track->Momentum.M());
    650662
    651663      fEFlowTrackOutputArray->Add(track);
Note: See TracChangeset for help on using the changeset viewer.