Changes in modules/Calorimeter.cc [839deb7:38bf1ae] in git
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
modules/Calorimeter.cc
r839deb7 r38bf1ae 142 142 } 143 143 144 // read min E value for timing measurement in ECAL 145 fTimingEnergyMin = GetDouble("TimingEnergyMin",4.); 146 // For timing 147 // So far this flag needs to be false 148 // Curved extrapolation not supported 149 fElectronsFromTrack = false; 144 /* 145 TFractionMap::iterator itFractionMap; 146 for(itFractionMap = fFractionMap.begin(); itFractionMap != fFractionMap.end(); ++itFractionMap) 147 { 148 cout << itFractionMap->first << " " << itFractionMap->second.first << " " << itFractionMap->second.second << endl; 149 } 150 */ 150 151 151 152 // read min E value for towers to be saved … … 157 158 158 159 // switch on or off the dithering of the center of calorimeter towers 159 f SmearTowerCenter = GetBool("SmearTowerCenter", true);160 fDitherTowerCenter = GetBool("DitherTowerCenter", true); 160 161 161 162 // read resolution formulas … … 355 356 fTrackHCalEnergy = 0.0; 356 357 358 fTowerECalTime = 0.0; 359 fTowerHCalTime = 0.0; 360 361 fTrackECalTime = 0.0; 362 fTrackHCalTime = 0.0; 363 364 fTowerECalTimeWeight = 0.0; 365 fTowerHCalTimeWeight = 0.0; 366 357 367 fTowerTrackHits = 0; 358 368 fTowerPhotonHits = 0; … … 370 380 position = track->Position; 371 381 382 372 383 ecalEnergy = momentum.E() * fTrackECalFractions[number]; 373 384 hcalEnergy = momentum.E() * fTrackHCalFractions[number]; … … 376 387 fTrackHCalEnergy += hcalEnergy; 377 388 378 if(ecalEnergy > fTimingEnergyMin && fTower) 379 { 380 if(fElectronsFromTrack) 381 { 382 fTower->ECalEnergyTimePairs.push_back(make_pair<Float_t, Float_t>(ecalEnergy, track->Position.T())); 383 } 384 } 389 fTrackECalTime += TMath::Sqrt(ecalEnergy)*position.T(); 390 fTrackHCalTime += TMath::Sqrt(hcalEnergy)*position.T(); 391 392 fTrackECalTimeWeight += TMath::Sqrt(ecalEnergy); 393 fTrackHCalTimeWeight += TMath::Sqrt(hcalEnergy); 385 394 386 395 fTowerTrackArray->Add(track); … … 403 412 fTowerHCalEnergy += hcalEnergy; 404 413 405 if(ecalEnergy > fTimingEnergyMin && fTower) 406 { 407 if (abs(particle->PID) != 11 || !fElectronsFromTrack) 408 { 409 fTower->ECalEnergyTimePairs.push_back(make_pair<Float_t, Float_t>(ecalEnergy, particle->Position.T())); 410 } 411 } 414 fTowerECalTime += TMath::Sqrt(ecalEnergy)*position.T(); 415 fTowerHCalTime += TMath::Sqrt(hcalEnergy)*position.T(); 416 417 fTowerECalTimeWeight += TMath::Sqrt(ecalEnergy); 418 fTowerHCalTimeWeight += TMath::Sqrt(hcalEnergy); 419 412 420 413 421 fTower->AddCandidate(particle); … … 426 434 Double_t ecalEnergy, hcalEnergy; 427 435 Double_t ecalSigma, hcalSigma; 428 Float_t weight, sumWeightedTime, sumWeight;436 Double_t ecalTime, hcalTime, time; 429 437 430 438 if(!fTower) return; … … 436 444 hcalEnergy = LogNormal(fTowerHCalEnergy, hcalSigma); 437 445 446 ecalTime = (fTowerECalTimeWeight < 1.0E-09 ) ? 0.0 : fTowerECalTime/fTowerECalTimeWeight; 447 hcalTime = (fTowerHCalTimeWeight < 1.0E-09 ) ? 0.0 : fTowerHCalTime/fTowerHCalTimeWeight; 448 438 449 ecalSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, ecalEnergy); 439 450 hcalSigma = fHCalResolutionFormula->Eval(0.0, fTowerEta, 0.0, hcalEnergy); … … 443 454 444 455 energy = ecalEnergy + hcalEnergy; 445 446 if(fSmearTowerCenter) 456 time = (TMath::Sqrt(ecalEnergy)*ecalTime + TMath::Sqrt(hcalEnergy)*hcalTime)/(TMath::Sqrt(ecalEnergy) + TMath::Sqrt(hcalEnergy)); 457 458 if(fDitherTowerCenter) 447 459 { 448 460 eta = gRandom->Uniform(fTowerEdges[0], fTowerEdges[1]); … … 457 469 pt = energy / TMath::CosH(eta); 458 470 459 // Time calculation for tower 460 fTower->NTimeHits = 0; 461 sumWeightedTime = 0.0; 462 sumWeight = 0.0; 463 464 for(size_t i = 0; i < fTower->ECalEnergyTimePairs.size(); ++i) 465 { 466 weight = TMath::Sqrt(fTower->ECalEnergyTimePairs[i].first); 467 sumWeightedTime += weight * fTower->ECalEnergyTimePairs[i].second; 468 sumWeight += weight; 469 fTower->NTimeHits++; 470 } 471 472 if(sumWeight > 0.0) 473 { 474 fTower->Position.SetPtEtaPhiE(1.0, eta, phi, sumWeightedTime/sumWeight); 475 } 476 else 477 { 478 fTower->Position.SetPtEtaPhiE(1.0, eta, phi, 999999.9); 479 } 480 481 471 fTower->Position.SetPtEtaPhiE(1.0, eta, phi, time); 482 472 fTower->Momentum.SetPtEtaPhiE(pt, eta, phi, energy); 483 473 fTower->Eem = ecalEnergy;
Note:
See TracChangeset
for help on using the changeset viewer.