using namespace std;
#include <stdlib.h>
#include <iostream>
#include "hhypCorrectEloss.h"
#include "hruntimedb.h"
#include "hypinfodef.h"
ClassImp(HHypCorrectEloss)
HHypCorrectEloss::HHypCorrectEloss(Char_t *name_i, Option_t par[])
:HHypBaseAlgorithm(name_i,par)
{
enLossCorr = 0;
}
HHypCorrectEloss::~HHypCorrectEloss()
{
if(enLossCorr) delete enLossCorr;
}
Bool_t HHypCorrectEloss::execute()
{
Float_t temp[9];
TLorentzVector l;
TVector3 mom;
Double_t m;
mylist->initcopyMomentum();
mylist->CombIteratorReset();
while (mylist->CombIterator()) {
Int_t prot_nr;
prot_nr=0;
Bool_t removeComb;
removeComb=false;
for(Int_t i=0; i<9; i++) temp[i]=0;
for(Int_t i=0; i<mylist->getNpart(); i++){
if( !mylist->isValidPart(i)) continue;
l=mylist->getTLorentzVector(i);
mom=l.Vect();
m=mom.Mag();
Int_t pID;
pID=mylist->getPid(i);
if(histofile){
switch(pID){
case 14:
if(prot_nr){
temp[2]=m;
}else{
temp[0]=m;
}
break;
case 3:
case 9:
temp[4]=m;
break;
case 2:
case 8:
temp[6]=m;
break;
default:
break;
}
}
{
Float_t theta = atan2(sqrt(mom.X()*mom.X()+mom.Y()*mom.Y()),mom.Z())*TMath::RadToDeg();
Double_t dp;
dp = enLossCorr->getDeltaMom(pID, m, theta);
if( dp==0.0) removeComb=true;
m += dp;
}
if(histofile){
switch(pID){
case 14:
if(prot_nr){
temp[3]=m;
}else{
temp[1]=m;
}
prot_nr++;
break;
case 3:
case 9:
temp[5]=m;
break;
case 2:
case 8:
temp[7]=m;
break;
}
}
mom.SetMag(m);
mylist->setMomentum(i,mom);
}
if(histofile){
temp[8]=removeComb;
qa->Fill(temp);
}
if (removeComb) {
mylist->removeComb();
}
}
if (exitIdx > -1)
return kTRUE;
return kFALSE;
}
Bool_t HHypCorrectEloss::init()
{
TString input(channel->Get(initList));
if (histofile){
qa = new TNtuple(input + TString("_eloss_debug"),
"Eloss Debug ntuple","p1_old:p1_new:p2_old:p2_new:pem_old:pem_new:pep_old:pep_new:removed");
}
enLossCorr=new HEnergyLossCorrPar;
enLossCorr->setDefaultPar("jan04");
Info("HHypCorrectEloss::init", "Cannot get parameters %s thus using default (jan04)", "EnergyLossCorrPar");
if( enLossCorr->getInputVersion(1)<0 && enLossCorr->getInputVersion(2)<0){
enLossCorr->setDefaultPar("jan04");
Info("HHypCorrectEloss::init", "Container %s empty, using default (jan04)", "EnergyLossCorrPar");
}
return kTRUE;
}
Bool_t HHypCorrectEloss::reinit()
{
return kTRUE;
}
Bool_t HHypCorrectEloss::finalize()
{
if (histofile) qa->Write();
return kTRUE;
}
Last change: Sat May 22 12:57:43 2010
Last generated: 2010-05-22 12:57
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.