Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

XANAEsdBuilder Class Reference

#include <writeESD.h>

Inheritance diagram for XANAEsdBuilder:

Inheritance graph
[legend]
Collaboration diagram for XANAEsdBuilder:

Collaboration graph
[legend]
List of all members.

Public Methods

 XANAEsdBuilder ()
 ~XANAEsdBuilder ()

Public Attributes

SimpleConfigurable< bool > writeTree_
SimpleConfigurable< bool > memlog_
SimpleConfigurable< std::string > fileName_
SimpleConfigurable< std::string > treeName_
SimpleConfigurable< int > autosave_
SimpleConfigurable< bool > writeCaloRecHits_
SimpleConfigurable< int > compressionLevel_
SimpleConfigurable< int > bufferSize_
SimpleConfigurable< int > splitMode_
SimpleConfigurable< bool > writeTrackHits_
SimpleConfigurable< bool > writeAllTrackHits_
SimpleConfigurable< bool > writeEleTrackHits_
SimpleConfigurable< std::string > clusterizerName_
SimpleConfigurable< std::string > superClusterizerName_
SimpleConfigurable< std::string > endcapSuperClusterizerName_
SimpleConfigurable< std::string > hcalClusterizerName_
SimpleConfigurable< std::string > trackReconstructorName_
SimpleConfigurable< std::string > vertexReconstructorName_
SimpleConfigurable< std::string > muonReconstructorName_
SimpleConfigurable< std::string > electronReconstructorName_
SimpleConfigurable< std::string > gsfForwardFit_
SimpleConfigurable< bool > jetsFromTrueInformation_
SimpleConfigurable< bool > metsFromTrueInformation_
SimpleConfigurable< std::string > l1Menu_
SimpleConfigurable< std::string > hltMenu_

Protected Types

typedef RecCollection< TTrack > Collection

Protected Methods

virtual void upDate (G3EventProxy *)
void upDate (G3SetUp *)
void setHeader (G3EventProxy *)
 used for initialisation (e.g. if the tracker geometry must have been initialised before). More...

void setCaloRecHits (G3EventProxy *)
void setEmClusters (G3EventProxy *)
void setSuperClusters (G3EventProxy *)
void setEndcapClusters (G3EventProxy *)
void setHadClusters (G3EventProxy *)
void setTracks (G3EventProxy *)
void setVertices (G3EventProxy *)
void setJets (G3EventProxy *)
void setMet (G3EventProxy *)
void setMuons (G3EventProxy *)
void setElectrons (G3EventProxy *)
void setElectronsGSF (G3EventProxy *)
virtual void setMcTruth (G3EventProxy *)
void setTriggerInfo (G3EventProxy *)
void setAllTrackHits (G3EventProxy *)
void setElectronTracks (G3EventProxy *)
void setEleTrackHits (std::vector< TrajectoryMeasurement >, XANAElectronTrack *)
void writeTree ()
std::string getAlgoName (int)

Protected Attributes

CollectiontheCollection
RecCollection< EgammaBasicCluster > * clusters
RecCollection< EgammaSuperCluster > * superClusters
RecCollection< EgammaEndcapCluster > * endcapSuperClusters
RecCollection< EcalPlusHcalTower > * towers
RecCollection< TTrack > * tracks
RecCollection< RecoVertex > * vertices
RecCollection< RecMuon > * muons
RecCollection< ElectronCandidate > * electrons
RecCollection< TTrack > * eltracks
RecCollection< RecJet > * jets
RecCollection< RecMET > * mets
RecCollection< HighLevelTriggerResult > * hlt
TTree * xanaEsdTree_
TBranch * xanaEsdEventBranch_
TFile * xanaEsdFile_
XANAEsdEventxanaEsdEvent_
TBranch * xanaGenEventBranch_
XANAGeneratorEventxanaGenEvent_
TBranch * xanaGeantEventBranch_
XANAGeantEventxanaGeantEvent_
IsoCalculator * ciso_
XANAMemLogxanamemlog_
int nbClusters_
int nbTracks_
int nbElectrons_
map< CellID, XANACaloRecHit,
less< CellID > > 
allCaloRecHits_
map< CellID, XANACaloRecHit,
less< CellID > > 
clusterizedCaloRecHits_
vector< CellID > allCells_
vector< CellID > clusterizedCells_
RegionalTrackFinder * theRegionalTrackFinder

Member Typedef Documentation

typedef RecCollection<TTrack> XANAEsdBuilder::Collection [protected]
 

Definition at line 98 of file writeESD.h.


Constructor & Destructor Documentation

XANAEsdBuilder::XANAEsdBuilder  
 

Definition at line 108 of file writeESD.cpp.

References XANAGeantEvent::addEsdEvent, XANAGeantEvent::addGeneratorEvent, autosave_, bufferSize_, ciso_, clusterizerName_, compressionLevel_, electronReconstructorName_, endcapSuperClusterizerName_, fileName_, gsfForwardFit_, hcalClusterizerName_, hltMenu_, jetsFromTrueInformation_, l1Menu_, memlog_, metsFromTrueInformation_, muonReconstructorName_, xana::out, splitMode_, superClusterizerName_, trackReconstructorName_, treeName_, vertexReconstructorName_, writeAllTrackHits_, writeCaloRecHits_, writeEleTrackHits_, writeTrackHits_, writeTree_, xanaEsdEvent_, xanaEsdEventBranch_, xanaEsdFile_, xanaEsdTree_, xanaGeantEvent_, xanaGeantEventBranch_, xanaGenEvent_, xanaGenEventBranch_, and xanamemlog_.

00108                               : clusters(0), superClusters(0), endcapSuperClusters(0), towers(0), tracks(0), vertices(0),
00109    muons(0), electrons(0), eltracks(0), jets(0), mets(0), hlt(0), xanaEsdTree_(0),  xanaEsdEventBranch_(0), xanaEsdFile_(0), 
00110    xanaEsdEvent_(0), xanaGenEventBranch_(0), xanaGenEvent_(0), xanaGeantEventBranch_(0),
00111    xanaGeantEvent_(0), ciso_(0), xanamemlog_(0), nbClusters_(0), nbTracks_(0), nbElectrons_(0)
00112    
00113 { 
00114 
00115    // initialize observer    
00116    xana::out(1) << "Constructing an XANAEsdBuilder" << endl ;
00117    Observer<G3EventProxy *>::init() ; 
00118    Observer<G3SetUp *>::init() ; 
00119 
00120    // algos configuration
00121    clusterizerName_ = 
00122     SimpleConfigurable<std::string>("EGBCluster","XANADOO:Clusterizer");
00123    superClusterizerName_ =
00124     SimpleConfigurable<std::string>("EGSCluster","XANADOO:SuperClusterizer");
00125    endcapSuperClusterizerName_ =
00126     SimpleConfigurable<std::string>("EGECluster","XANADOO:EndcapSuperClusterizer");
00127    hcalClusterizerName_ =
00128     SimpleConfigurable<std::string>("TowerBuilder","XANADOO:HcalClusterizer");
00129    trackReconstructorName_=
00130     SimpleConfigurable<std::string>("TransientCombinatorialTrackFinder","XANADOO:TrackReconstructor");
00131    vertexReconstructorName_=
00132     SimpleConfigurable<std::string>("PrincipalVertexFinder","XANADOO:VertexReconstructor");
00133    muonReconstructorName_=
00134     SimpleConfigurable<std::string>("GlobalMuonReconstructor","XANADOO:MuonReconstructor");
00135    electronReconstructorName_=
00136     SimpleConfigurable<std::string>("GSF","XANADOO:ElectronReconstructor");
00137    gsfForwardFit_=
00138     SimpleConfigurable<std::string>("GSF","XANADOO:gsfForwardFit");
00139    jetsFromTrueInformation_ = 
00140     SimpleConfigurable<bool>(false,"XANADOO:jetsFromTrueInformation");
00141    metsFromTrueInformation_ = 
00142     SimpleConfigurable<bool>(false,"XANADOO:metsFromTrueInformation");
00143    // get L1 trigger config from Data/TriggerData/L1GlobalTrigger/$lumichoice/trigger_menu.dat
00144    l1Menu_ = 
00145     SimpleConfigurable<std::string>("lumi2x1033","L1Globaltrigger:TriggerMenu");
00146    // set HLT trigger config from xml file
00147    hltMenu_ = 
00148     SimpleConfigurable<std::string>("2x1033HLT.xml","HighLevelTriggerXML:XMLfile");
00149 
00150 
00151    // xanadoo steering
00152    writeTree_ = SimpleConfigurable<bool>(false,"XANADOO:writeEsd");
00153    writeCaloRecHits_ = SimpleConfigurable<bool>(false,"XANADOO:EsdWithCaloRecHits");
00154    writeTrackHits_ = SimpleConfigurable<bool>(false,"XANADOO:EsdWithTrackHits");   writeAllTrackHits_ = SimpleConfigurable<bool>(false,"XANADOO:EsdWithAllTrackHits");
00155    writeEleTrackHits_ = SimpleConfigurable<bool>(false,"XANADOO:EsdWithEleTrackHits");
00156 
00157      // memory log
00158    memlog_ = SimpleConfigurable<bool>(false,"XANADOO:memlog");
00159    if (memlog_) xanamemlog_=new XANAMemLog();
00160 
00161    // creates output file
00162    fileName_ = SimpleConfigurable<std::string>("single_eminus_pt100.root","XANADOO:FileName");
00163    xanaEsdFile_ = new TFile(fileName_.value().c_str(),"RECREATE");
00164    compressionLevel_ = SimpleConfigurable<int>(1,"XANADOO:CompressionLevel");        
00165    xanaEsdFile_->SetCompressionLevel(compressionLevel_);
00166 
00167    // create TTree
00168    autosave_ = SimpleConfigurable<int>(1000000000,"XANADOO:AutoSaveSize");        
00169    bufferSize_ = SimpleConfigurable<int>(256000,"XANADOO:BufferSize");        
00170    splitMode_ = SimpleConfigurable<int>(99,"XANADOO:SplitMode");        
00171    xana::out(1) << "creating xanaEsdTree  .."<<endl; 
00172    treeName_ = SimpleConfigurable<std::string>("XANAESD","XANADOO:TreeName");
00173    xanaEsdTree_ = new TTree(treeName_.value().c_str(),"test XANADOO ESD tree");  
00174    xanaEsdTree_->SetAutoSave(autosave_);
00175    int bufferSizeValue = bufferSize_.value();
00176    if (splitMode_.value()) bufferSizeValue /= 4; //from ROOT example
00177 
00178    // initialize event and create branches
00179    xanaEsdEvent_ = new XANAEsdEvent();
00180    xana::out(1) << "creating xanaEsdEventBranch  .."<<endl; 
00181    xanaEsdEventBranch_ = 
00182    xanaEsdTree_->Branch("Event.","XANAEsdEvent",&xanaEsdEvent_,bufferSizeValue,splitMode_.value());
00183    xana::out(1) << "xanaEsdEventBranch  branch created .."<<endl; 
00184 
00185    xanaGenEvent_ = new XANAGeneratorEvent();
00186    xana::out(1) << "creating xanaGeneratorEventBranch  .."<<endl; 
00187    xanaGenEventBranch_ = 
00188    xanaEsdTree_->Branch("GeneratorEvent.","XANAGeneratorEvent",&xanaGenEvent_,bufferSizeValue,splitMode_.value());
00189    xana::out(1) << "xanaGeneratorEventBranch  branch created .."<<endl; 
00190 
00191    xanaGeantEvent_ = new XANAGeantEvent();
00192    xana::out(1) << "creating xanaGeantEventBranch  .."<<endl; 
00193    xanaGeantEventBranch_ = 
00194    xanaEsdTree_->Branch("GeantEvent.","XANAGeantEvent",&xanaGeantEvent_,bufferSizeValue,splitMode_.value());
00195    xana::out(1) << "xanaGeantEventBranch  branch created .."<<endl; 
00196 
00197    // create links between generator-geant event and ESD-geant Event
00198    xanaGeantEvent_->addGeneratorEvent(xanaGenEvent_);
00199    xanaGeantEvent_->addEsdEvent(xanaEsdEvent_);
00200 
00201   //CC is this still needed?   
00202    ciso_ = Singleton<IsoCalculator>::instance();
00203 
00204 }

XANAEsdBuilder::~XANAEsdBuilder  
 

Definition at line 207 of file writeESD.cpp.

References xana::out, XANAMemLog::writeHistogram, xanaEsdFile_, xanaEsdTree_, and xanamemlog_.

00208 {
00209    
00210   xana::out(1) << "Deleting XANAEsdBuilder" << std::endl;  
00211   xanaEsdFile_->Write();
00212   xanaEsdTree_->Print();
00213   delete xanaEsdFile_;
00214   if (memlog_) xanamemlog_->writeHistogram();
00215 
00216 }


Member Function Documentation

std::string XANAEsdBuilder::getAlgoName int    [protected]
 

Definition at line 404 of file writeESD.cpp.

Referenced by setEmClusters.

00404                                               {
00405 
00406   if (algo==1) return std::string("EgammaBasicIsland");
00407   else if (algo>=100) return std::string("EgammaBasicHybrid");
00408   else return std::string("");
00409 
00410 }      

void XANAEsdBuilder::setAllTrackHits G3EventProxy *    [protected]
 

Referenced by upDate.

void XANAEsdBuilder::setCaloRecHits G3EventProxy *    [protected]
 

Referenced by upDate.

void XANAEsdBuilder::setElectrons G3EventProxy *    [protected]
 

Definition at line 454 of file writeESDForFAMOS.cpp.

References XANAEsdEvent::addElectronCandidate, XANAEsdEvent::addElectronSeed, XANAEsdEvent::addElectronSuperCluster, ciso_, electrons, endcapSuperClusterizerName_, XANAElectronTools::etaTransformation, XANATrack::getCharge, XANATrack::getMomentumAtFirstPoint, XANATrack::getPositionAtFirstPoint, nbElectrons_, xana::out, XANAElectronTools::phiTransformation, XANAElectronSeed::setAlgoName, XANASuperCluster::setAlgoName, XANAElectronCandidate::setAlgoName, XANASuperCluster::setCaloIsolation, XANAElectronCandidate::setCaloIsolation, XANAElectronCandidate::setDeltaEtaSeedClusterAtCalo, XANAElectronCandidate::setDeltaEtaSuperClusterAtCalo, XANAElectronCandidate::setDeltaEtaSuperClusterAtVtx, XANAElectronCandidate::setDeltaPhiSeedClusterAtCalo, XANAElectronCandidate::setDeltaPhiSuperClusterAtCalo, XANAElectronCandidate::setDeltaPhiSuperClusterAtVtx, XANAElectronSeed::setDirection, XANASuperCluster::setDisc1, XANASuperCluster::setDisc2, XANASuperCluster::setDisc3, XANAEsdEvent::setElectronTrack, XANASuperCluster::setEnergy, XANASuperCluster::setEnergyScaleFactor, XANAElectronCandidate::setESeedClusterOverP, XANAElectronCandidate::setESuperClusterOverP, XANASuperCluster::setHadronicOverEm, XANAElectronCandidate::setHadronicOverEm, XANAElectronSeed::setMomentumAtFirstPoint, XANAElectronSeed::setMomentumAtLastPoint, XANAElectronCandidate::setMomentumAtVertex, XANAElectronSeed::setNumberOfHits, XANASuperCluster::setPosition, XANATrack::setPositionAtFirstPoint, XANAElectronSeed::setPositionAtFirstPoint, XANATrack::setPositionAtLastPoint, XANAElectronSeed::setPositionAtLastPoint, XANASuperCluster::setPositionCovarianceMatrix, XANASuperCluster::setSum1, XANASuperCluster::setSum25, XANASuperCluster::setSum4, XANASuperCluster::setSum9, XANAElectronCandidate::setSuperClusterEnergy, XANAElectronCandidate::setSuperClusterMomentum, XANAElectronCandidate::setSuperClusterPosition, XANAElectronCandidate::setTrackIsolation, XANAElectronCandidate::setTrackMomentumAtCalo, XANAElectronCandidate::setTrackPositionAtCalo, superClusterizerName_, and xanaEsdEvent_.

Referenced by XANAEsdBuilderForFAMOS::upDate, and upDate.

00455 {
00456      
00457   xana::out(2) << "[update] electrons " << std::endl;
00458 
00459   RecCollection<ElectronCandidate> electrons(RecQuery("EGFElectron","1.0"));
00460   RecCollection<ElectronCandidate>::const_iterator electron;
00461   xana::out(5) << "[update] "<<electrons.size()<<" EGFElectron found " << std::endl;
00462   XANAElectronCandidate *xElectron;
00463   nbElectrons_=0;
00464   for (electron=electrons.begin(); electron!=electrons.end(); electron++) {
00465     nbElectrons_++ ;
00466     xana::out(1)<<"[OVAL] new electron "<<std::endl ;
00467     xElectron = new XANAElectronCandidate(); 
00468 
00469     // printing electron quantities from ElectronCandidate
00470     xana::out(8)<<"[OVAL] electron super cluster energy "<<electron->SCE()<<std::endl ;
00471     xana::out(8)<<"[OVAL] electron track px "<<electron->TRPx()<<std::endl ;
00472     xana::out(8)<<"[OVAL] electron track py "<<electron->TRPy()<<std::endl ;
00473     xana::out(8)<<"[OVAL] electron track pz "<<electron->TRPz()<<std::endl ;
00474     xana::out(8)<<"[OVAL] electron super cluster Et "<<electron->SCEt()<<std::endl ;
00475     xana::out(8)<<"[OVAL] electron super cluster eta "<<electron->SCEta()<<std::endl ;
00476     xana::out(8)<<"[OVAL] electron super cluster phi "<<electron->SCPhi()<<std::endl ;
00477     xana::out(8)<<"[OVAL] electron track eta "<<electron->TREta()<<std::endl ;
00478     xana::out(8)<<"[OVAL] electron track phi "<<electron->TRPhi()<<std::endl ;
00479     xana::out(8)<<"[OVAL] electron e/p "<<electron->ele_EoP()<<std::endl ;
00480     xana::out(8)<<"[OVAL] electron delta eta "<<electron->DeltaEta()<<std::endl ;
00481 
00482     const TTrack * eltrack=electron->GetTRElectron();
00483     const EgammaVSuperCluster *sc=electron->GetEGCandidate()->data();
00484     // calculate from sc and track
00485     HepPoint3D superClusterPosition;
00486     if (sc) {
00487       const EgammaCluster *seed = sc->seed();
00488 
00489       float superClusterEnergy = sc->energy();; 
00490       xana::out(8)<<"[OVAL] written electron super cluster energy "<<superClusterEnergy<<std::endl ;
00491       xElectron->setSuperClusterEnergy(superClusterEnergy);
00492       float theta = sc->theta();
00493       float x = sc->radius()*sin(theta)*cos(sc->phi());
00494       float y = sc->radius()*sin(theta)*sin(sc->phi());
00495       float z = sc->radius()*cos(theta);
00496       superClusterPosition=HepPoint3D(x,y,z);
00497       xana::out(8)<<"[OVAL] written electron super cluster position "<<superClusterPosition<<std::endl ;
00498       xElectron->setSuperClusterPosition(superClusterPosition);
00499       HepLorentzVector momentum;
00500       momentum.setPx(eltrack->momentumAtVertex().x());   
00501       momentum.setPy(eltrack->momentumAtVertex().y());   
00502       momentum.setPz(eltrack->momentumAtVertex().z());   
00503       momentum *= electron->SCE() / eltrack->momentumAtVertex().mag();
00504       momentum.setE(superClusterEnergy);        
00505       xana::out(8)<<"[OVAL] written electron momentum at vertex "<<momentum<<std::endl ;
00506       xElectron->setMomentumAtVertex(momentum); 
00507 
00508       // extrapolations from last track point
00509       TrajectoryStateOnSurface last = eltrack->outermostState(); 
00510       if (!last.isValid())
00511         throw Genexception("[writeESDForFamos::update], invalid tsos") ;
00512       // use 3D impactPointExtrapolator
00513       ImpactPointExtrapolator theExtrapolator ;
00514       // and an analytical (helix) propagator with material effect
00515       const MultipleScatteringUpdator aElectronMaterialEffectUpdator(0.000511);
00516       AnalyticalPropagator *ap = new AnalyticalPropagator(alongMomentum);
00517       PropagatorWithMaterial *thePropagator = new PropagatorWithMaterial(*(ap),aElectronMaterialEffectUpdator);
00518       delete ap;
00519 
00520       // extrapolation to super cluster
00521       GlobalPoint pos(x, y, z) ;
00522       TrajectoryStateOnSurface tssuper =
00523         theExtrapolator.extrapolate(*last.freeTrajectoryState(), pos, *thePropagator) ;  
00524       if (!tssuper.isValid()) tssuper=last;
00525       HepLorentzVector *trackMomentumAtCalo=new HepLorentzVector(tssuper.globalMomentum().x(),tssuper.globalMomentum().y(),tssuper.globalMomentum().z(),tssuper.globalMomentum().mag());
00526       xana::out(8)<<"[OVAL] written track momentum at super cluster "<<*trackMomentumAtCalo<<std::endl ;
00527       xElectron->setTrackMomentumAtCalo(*trackMomentumAtCalo);
00528       HepPoint3D *trackPositionAtCalo=new HepPoint3D(tssuper.globalPosition().x(),tssuper.globalPosition().y(),tssuper.globalPosition().z());
00529       xana::out(8)<<"[OVAL] written track position at super cluster "<<*trackPositionAtCalo<<std::endl ;
00530       xElectron->setTrackPositionAtCalo(*trackPositionAtCalo);
00531 
00532       float eSuperClusterOverP = -1.;   
00533       if (trackMomentumAtCalo->e()>0.) eSuperClusterOverP = superClusterEnergy / trackMomentumAtCalo->e();
00534       xana::out(8)<<"[OVAL] written E super cluster / p "<<eSuperClusterOverP<<std::endl ;
00535       xElectron->setESuperClusterOverP(eSuperClusterOverP);
00536       delete trackMomentumAtCalo;
00537 
00538       float deta = superClusterPosition.pseudoRapidity() - trackPositionAtCalo->pseudoRapidity();
00539       xana::out(8)<<"[OVAL] written deta (super - track) "<<deta<<std::endl ;
00540       xElectron->setDeltaEtaSuperClusterAtCalo(deta);
00541       float dphi=superClusterPosition.phi()-trackPositionAtCalo->phi();
00542       if (fabs(dphi) > pi) dphi = dphi < 0 ? 2.*pi + dphi : dphi - 2.*pi ;
00543       xana::out(8)<<"[OVAL] written dphi (super - track) "<<dphi<<std::endl ;
00544       xElectron->setDeltaPhiSuperClusterAtCalo(dphi);
00545       delete trackPositionAtCalo;
00546 
00547       // extrapolation to seed cluster
00548       Float_t thetas=2.0*atan(exp(-1*seed->Eta()));
00549       Float_t seedx=seed->Radius()*cos(seed->Phi())*sin(thetas);
00550       Float_t seedy=seed->Radius()*sin(seed->Phi())*sin(thetas);
00551       Float_t seedz=seed->Radius()*cos(thetas);
00552       GlobalPoint seedpos(seedx, seedy, seedz) ;
00553       TrajectoryStateOnSurface tsseed =
00554         theExtrapolator.extrapolate(*last.freeTrajectoryState(), seedpos, *thePropagator) ;  
00555       delete thePropagator;
00556       if (!tsseed.isValid()) tsseed=last;
00557       HepPoint3D *trackPositionAtSeed=new HepPoint3D(tsseed.globalPosition().x(),tsseed.globalPosition().y(),tsseed.globalPosition().z());
00558 
00559       float eSeedClusterOverP= -1. ;
00560       float thetaseed = 2.*atan(exp(-seed->Eta()));     
00561       float seedEnergy = 0.;
00562       if (thetaseed != 0.) seedEnergy = seed->Et() / sin(thetaseed) ;
00563       if( tsseed.globalMomentum().mag() > 0.) eSeedClusterOverP = seedEnergy / tsseed.globalMomentum().mag();
00564       xana::out(8)<<"[OVAL] written E seed cluster / p "<<eSeedClusterOverP<<std::endl ;
00565       xElectron->setESeedClusterOverP(eSeedClusterOverP);
00566 
00567       deta = seed->Eta() - trackPositionAtSeed->pseudoRapidity();
00568       xana::out(8)<<"[OVAL] written deta (seed - track) "<<deta<<std::endl ;
00569       xElectron->setDeltaEtaSeedClusterAtCalo(deta);
00570       dphi=seed->Phi()-trackPositionAtSeed->phi();
00571       if (fabs(dphi) > pi) dphi = dphi < 0 ? 2.*pi + dphi : dphi - 2.*pi ;
00572       xana::out(8)<<"[OVAL] written dphi (seed - track) "<<dphi<<std::endl ;
00573       xElectron->setDeltaPhiSeedClusterAtCalo(dphi);
00574       delete trackPositionAtSeed;
00575 
00576       // super cluster momentum, assuming perfect helix and vertex at origin
00577       GlobalPoint assumedVertex(0.,0.,0.);
00578       GlobalPoint measuredPoint(superClusterPosition.x(), superClusterPosition.y(), superClusterPosition.z()) ;                                             
00579       FTSFromVertexToPointFactory ftsFactory;
00580       FreeTrajectoryState ftsAtCalo = 
00581         ftsFactory(measuredPoint,assumedVertex,superClusterEnergy,eltrack->charge());
00582       HepLorentzVector superClusterMomentum;
00583       superClusterMomentum.setPx(ftsAtCalo.momentum().x());   
00584       superClusterMomentum.setPy(ftsAtCalo.momentum().y());   
00585       superClusterMomentum.setPz(ftsAtCalo.momentum().z());   
00586       superClusterMomentum.setE(superClusterEnergy);    
00587       xana::out(8)<<"[OVAL] written super cluster momentum  "<<superClusterMomentum<<std::endl ;
00588       xElectron->setSuperClusterMomentum(superClusterMomentum);
00589 
00590       float caloIsolation = ciso_->getIso(sc->eta(),sc->phi());
00591       xElectron->setCaloIsolation(caloIsolation);
00592     }
00593     int isTrackIsolated = electron->TRisISO();
00594     xElectron->setTrackIsolation(isTrackIsolated);
00595     float hadronicOverEm = electron->ele_HoE();
00596     xElectron->setHadronicOverEm(hadronicOverEm);
00597 
00598     xElectron->setAlgoName("EgammaCandidate");
00599 
00600     xana::out(2) << "[update] adding electron candidate No " << nbElectrons_ << std::endl;
00601     xanaEsdEvent_->addElectronCandidate(xElectron); 
00602 
00603     if (sc) {
00604       XANASuperCluster *xscluster=new XANASuperCluster();
00605       xscluster->setEnergy(sc->energy()); 
00606       xscluster->setPosition(sc->position()); 
00607       xscluster->setSum1(sc->seed()->getS1()); 
00608       xscluster->setSum4(sc->seed()->getS4()); 
00609       xscluster->setSum9(sc->seed()->getS9()); 
00610       xscluster->setSum25(sc->seed()->getS25()); 
00611       xscluster->setHadronicOverEm(sc->seed()->getHoe());
00612       // iso not available from endcap super clusters
00613       // compute from IsoCalculator
00614       float iso = ciso_->getIso(sc->eta(),sc->phi());
00615       xscluster->setCaloIsolation(iso); 
00616       xscluster->setDisc1(sc->seed()->getDisc1()); 
00617       xscluster->setDisc2(sc->seed()->getDisc2()); 
00618       xscluster->setDisc3(sc->seed()->getDisc3()); 
00619       HepSymMatrix cov(2);
00620       cov(1,1) = sc->seed()->getCovEE();
00621       cov(1,2) = sc->seed()->getCovEP();
00622       cov(2,2) = sc->seed()->getCovPP();
00623       xscluster->setPositionCovarianceMatrix(cov);
00624       xscluster->setEnergyScaleFactor(sc->energy()/sc->energyUncorrected());
00625       if ( fabs(sc->seed()->Eta())<1.4791 ) xscluster->setAlgoName(superClusterizerName_.value());
00626       else xscluster->setAlgoName(endcapSuperClusterizerName_.value());
00627       xanaEsdEvent_->addElectronSuperCluster(xscluster,xElectron);
00628       delete xscluster;
00629     }
00630 
00631 
00632       // electron seed
00633       XANAElectronSeed *xelseed= new XANAElectronSeed();
00634       const EPHLTElectronSeed * trseed = dynamic_cast<const EPHLTElectronSeed *>(&eltrack->seed().basicSeed()); 
00635       Short_t dir = 1;
00636       if (trseed->direction() == "oppositeToMomentum") dir = -1;
00637       xelseed->setDirection(dir);
00638       xelseed->setNumberOfHits(trseed->measurements().size());
00639       TrajectoryStateOnSurface tsseedfirst =
00640         trseed->measurements()[0].updatedState();
00641       HepPoint3D seedPositionAtFirst(tsseedfirst.globalPosition().x(),tsseedfirst.globalPosition().y(),
00642                                      tsseedfirst.globalPosition().z()); 
00643       HepVector3D seedMomentumAtFirst(tsseedfirst.globalMomentum().x(),tsseedfirst.globalMomentum().y(),
00644                                       tsseedfirst.globalMomentum().z());
00645       xelseed->setMomentumAtFirstPoint(seedMomentumAtFirst);
00646       xelseed->setPositionAtFirstPoint(seedPositionAtFirst);      
00647       TrajectoryStateOnSurface tsseedlast =
00648         trseed->measurements()[trseed->measurements().size()-1].updatedState();
00649       HepPoint3D seedPositionAtLast(tsseedlast.globalPosition().x(),tsseedlast.globalPosition().y(),
00650                                     tsseedlast.globalPosition().z()); 
00651       HepVector3D seedMomentumAtLast(tsseedlast.globalMomentum().x(),tsseedlast.globalMomentum().y(),
00652                                      tsseedlast.globalMomentum().z());
00653       xelseed->setMomentumAtLastPoint(seedMomentumAtLast);
00654       xelseed->setPositionAtLastPoint(seedPositionAtLast);
00655       xelseed->setAlgoName("Egammadefault");
00656 
00657       // we need an electron track just filled to make operator== work
00658       XANAElectronTrack *xTrack=new XANAElectronTrack;
00659       TrajectoryStateOnSurface tsi = eltrack->innermostState() ;
00660       TrajectoryStateOnSurface tso = eltrack->outermostState() ;
00661       HepPoint3D firstHit(tsi.globalPosition().x(),tsi.globalPosition().y(),
00662                           tsi.globalPosition().z()); 
00663       HepPoint3D lastHit(tso.globalPosition().x(),tso.globalPosition().y(),
00664                          tso.globalPosition().z()); 
00665       xTrack->setPositionAtFirstPoint(firstHit);
00666       xTrack->setPositionAtLastPoint(lastHit);
00667       
00668       float detavtx = superClusterPosition.pseudoRapidity() - XANAElectronTools::etaTransformation(xTrack->getMomentumAtFirstPoint().pseudoRapidity(),
00669                                                                                                 xTrack->getPositionAtFirstPoint().z(),xTrack->getPositionAtFirstPoint().perp()); 
00670       xElectron->setDeltaEtaSuperClusterAtVtx(detavtx);
00671       float dphivtx=superClusterPosition.phi()-XANAElectronTools::phiTransformation(xTrack->getMomentumAtFirstPoint().perp(),xTrack->getMomentumAtFirstPoint().pseudoRapidity(), 
00672                                                                          xTrack->getMomentumAtFirstPoint().phi(), xTrack->getCharge(),xTrack->getPositionAtFirstPoint().perp());
00673       if (fabs(dphivtx) > pi) dphivtx = dphivtx < 0 ? 2.*pi + dphivtx : dphivtx - 2.*pi ;
00674       xElectron->setDeltaPhiSuperClusterAtVtx(dphivtx);
00675       
00676       xanaEsdEvent_->addElectronSeed(xelseed,xTrack);
00677       xanaEsdEvent_->setElectronTrack(xTrack,xElectron);
00678       delete xelseed;
00679       delete xTrack;
00680  
00681       delete xElectron;
00682   }
00683 }

void XANAEsdBuilder::setElectronsGSF G3EventProxy *    [protected]
 

Referenced by upDate.

void XANAEsdBuilder::setElectronTracks G3EventProxy *    [protected]
 

Definition at line 895 of file writeESDForFAMOS.cpp.

References XANAEsdEvent::addElectronTrack, xana::out, XANATrack::setAlgoName, XANATrack::setCharge, XANATrack::setChi2OverDof, setEleTrackHits, XANATrack::setImpactParameter, XANATrack::setLongImpactParameter, XANATrack::setMomentumAtFirstPoint, XANATrack::setMomentumAtLastPoint, XANATrack::setMomentumAtVertex, XANATrack::setNumberOfHits, XANATrack::setNumberOfLostHits, XANATrack::setPositionAtFirstPoint, XANATrack::setPositionAtLastPoint, XANATrack::setTransImpactParameter, tracks, and xanaEsdEvent_.

Referenced by XANAEsdBuilderForFAMOS::upDate, and upDate.

00896 {// fill electron track container for normal electron tracks
00897 //  RecCollection<TTrack> tracks( RecQuery("EPTracks","1.0"));
00898   RecCollection<TTrack> tracks( RecQuery("EPFTracks","1.0"));
00899   RecCollection<TTrack>::const_iterator eltrack;
00900   xana::out(5) << "[update] "<<tracks.size()<<" electron tracks found " << std::endl;
00901   for (eltrack=tracks.begin(); eltrack!=tracks.end(); eltrack++) {
00902     XANAElectronTrack *xTrack = new XANAElectronTrack;
00903     TrajectoryStateOnSurface tsi = eltrack->innermostState() ;
00904     TrajectoryStateOnSurface tso = eltrack->outermostState() ;
00905     HepVector3D momentumAtVertex(eltrack->momentumAtVertex().x(), 
00906                                  eltrack->momentumAtVertex().y(),eltrack->momentumAtVertex().z());
00907     HepPoint3D firstHit(tsi.globalPosition().x(),tsi.globalPosition().y(),
00908                         tsi.globalPosition().z()); 
00909     HepVector3D momentumAtFirst(tsi.globalMomentum().x(),tsi.globalMomentum().y(),
00910                                   tsi.globalMomentum().z());
00911       HepPoint3D lastHit(tso.globalPosition().x(),tso.globalPosition().y(),
00912                          tso.globalPosition().z()); 
00913       HepVector3D momentumAtLast(tso.globalMomentum().x(),tso.globalMomentum().y(),
00914                                  tso.globalMomentum().z());
00915       xTrack->setCharge(eltrack->charge()); 
00916       xTrack->setChi2OverDof(eltrack->normalisedChiSquared());
00917       xTrack->setNumberOfHits(eltrack->foundHits());
00918       xTrack->setNumberOfLostHits(eltrack->lostHits());
00919       xTrack->setImpactParameter(eltrack->impactParameter3D().value());
00920       xTrack->setLongImpactParameter(eltrack->zImpactParameter().value());
00921       xTrack->setTransImpactParameter(eltrack->transverseImpactParameter().value());
00922       xTrack->setMomentumAtVertex(momentumAtVertex);
00923       xTrack->setPositionAtFirstPoint(firstHit);
00924       xTrack->setMomentumAtFirstPoint(momentumAtFirst);
00925       xTrack->setPositionAtLastPoint(lastHit);
00926       xTrack->setMomentumAtLastPoint(momentumAtLast);
00927       xTrack->setAlgoName("EPFTrack"); 
00928       //      xanaEsdEvent_->addElectronTrack(xTrack,xElectron);
00929       xanaEsdEvent_->addElectronTrack(xTrack);
00930 
00931       // hits (if requested)
00932       // must be done after having added electron track!
00933       if (writeEleTrackHits_) {
00934         std::vector<TrajectoryMeasurement> MyEleTrMeas = eltrack->measurements();
00935         setEleTrackHits(MyEleTrMeas,xTrack);
00936       }
00937       delete xTrack;
00938   }
00939 }

void XANAEsdBuilder::setEleTrackHits std::vector< TrajectoryMeasurement >   ,
XANAElectronTrack  
[protected]
 

Definition at line 322 of file writeESD.cpp.

References XANAEsdEvent::addEleTrackHit, xana::out, XANATrackHit::setIsBarrel, XANATrackHit::setIsStereo, and xanaEsdEvent_.

Referenced by setElectronTracks.

00323 {
00324   // add electron track hits for this track, if asked for
00325 
00326   //     std::vector<TrajectoryMeasurement> MyEleTrMeas = eltrack->measurements();
00327      std::vector<TrajectoryMeasurement>::const_iterator IterEleTrMeas;
00328 
00329      xana::out(2) << "[update] adding electronic track hits " << std::endl; 
00330      xana::out(2) << "[update] number of measurements " <<MyEleTrMeas.size() << std::endl;
00331      //     xana::out(2) << "[update] number of valid hits "<<eltrack->foundHits()<< std::endl;
00332 
00333      XANATrackHit *elethit=0;
00334      int nbhits=0;
00335      for (IterEleTrMeas=MyEleTrMeas.begin(); IterEleTrMeas!=MyEleTrMeas.end(); IterEleTrMeas++)
00336        {
00337         // taking the rec hit 
00338         RecHit IterEleRecHit = IterEleTrMeas->recHit();                
00339         // checking if it is valid or not  
00340         if( !(IterEleRecHit.isValid()) ){xana::out(2) << "[update] non valid hit" << std::endl;}
00341 
00342         // taking the updated state 
00343         TrajectoryStateOnSurface IterEleTSN = IterEleTrMeas->updatedState();                
00344         // checking if it is valid or not  
00345         if( !(IterEleTSN.isValid()) ){xana::out(2) << "[update] non valid updated state" << std::endl;}
00346 
00347 
00348         // analysis only if both are valid 
00349         if (!(IterEleRecHit.isValid()) && (IterEleTSN.isValid())){xana::out(2)<<"[update] non valid hit but valid updated state"<< std::endl;}
00350         if ((IterEleRecHit.isValid()) && !(IterEleTSN.isValid())){xana::out(2)<<"[update] non valid updated state but valid hit"<< std::endl;}
00351         if(  IterEleRecHit.isValid() && IterEleTSN.isValid() )
00352         {
00353           HepPoint3D elehitposition( (IterEleRecHit).globalPosition().x(), 
00354                                      (IterEleRecHit).globalPosition().y(), 
00355                                      (IterEleRecHit).globalPosition().z());
00356 
00357           HepPoint3D eleupdposition( (IterEleTSN).globalPosition().x(),
00358                                      (IterEleTSN).globalPosition().y(),
00359                                      (IterEleTSN).globalPosition().z());
00360 
00361           HepVector3D eleupdmomentum( (IterEleTSN).globalMomentum().x(),
00362                                       (IterEleTSN).globalMomentum().y(),
00363                                       (IterEleTSN).globalMomentum().z());
00364 
00365           elethit = new XANATrackHit( elehitposition, eleupdposition, eleupdmomentum ); 
00366           elethit->setIsStereo((IterEleRecHit).det().detUnits().front()->type().isStereo());
00367           Bool_t isBarrel = (((IterEleRecHit).det().detUnits().front()->type().part() == barrel) ? true : false);
00368           elethit->setIsBarrel(isBarrel);
00369 
00370             xana::out(1) << "[update] ELE - NEW STEP" << std::endl; 
00371             xana::out(1) << "[update] new hit" << std::endl;    
00372             xana::out(1) << (IterEleRecHit).globalPosition().x() << std::endl;     
00373             xana::out(1) << (IterEleRecHit).globalPosition().y() << std::endl;          
00374             xana::out(1) << (IterEleRecHit).globalPosition().z() << std::endl;          
00375             xana::out(1) << "[update] new updated state: position" << std::endl;        
00376             xana::out(1) << (IterEleTSN).globalPosition().x() << std::endl;     
00377             xana::out(1) << (IterEleTSN).globalPosition().y() << std::endl;     
00378             xana::out(1) << (IterEleTSN).globalPosition().z() << std::endl;     
00379             xana::out(1) << "[update] new updated state: momentum" << std::endl;        
00380             xana::out(1) << (IterEleTSN).globalMomentum().x() << std::endl;     
00381             xana::out(1) << (IterEleTSN).globalMomentum().y() << std::endl;     
00382             xana::out(1) << (IterEleTSN).globalMomentum().z() << std::endl;     
00383 
00384           xanaEsdEvent_->addEleTrackHit(elethit, xTrack);           
00385           ++nbhits;
00386           delete elethit;
00387 
00388        } // valid hit and upd state
00389        } // loop on measurements
00390      xana::out(2) << "[update] number of hits that were added "<<nbhits<< std::endl;
00391 }

void XANAEsdBuilder::setEmClusters G3EventProxy *    [protected]
 

Definition at line 251 of file writeESDForFAMOS.cpp.

References XANAEsdEvent::addEmCluster, XANAEsdEvent::addEmClusterHit, clusterizedCaloRecHits_, clusterizedCells_, clusterizerName_, clusters, getAlgoName, xana::out, and xanaEsdEvent_.

Referenced by XANAEsdBuilderForFAMOS::upDate, and upDate.

00252 {
00253   cout << "in setEmClusters " << endl;        
00254   xana::out(2) << "[update] em clusters " << std::endl;
00255   
00256   RecCollection<EgammaBasicCluster> clusters (RecQuery("EGBFCluster","1.0"));
00257   RecCollection<EgammaBasicCluster> ::const_iterator cluster ;
00258   xana::out(5) << "[update] " << clusters.size() << " " << clusterizerName_.value() <<" clusters found." << std::endl;
00259   XANAEmCluster *xcluster;
00260   clusterizedCaloRecHits_.clear();
00261   xana::out(2) << "[update] before cluster loop " << std::endl;     
00262   for (cluster=clusters.begin(); cluster!=clusters.end(); cluster++) {
00263     // hybrid is algo>=100   
00264  // ORIGINAL
00265      if ( (cluster->whichAlgo()>99 && fabs(cluster->eta())>1.4791) || 
00266       (cluster->whichAlgo()<99 && fabs(cluster->eta())<1.4791) ) continue;
00267  // MODIF CARO : ISLAND Partout
00268  //   if ( (cluster->whichAlgo()>99 && fabs(cluster->eta())>1.4791) || 
00269 //       (cluster->whichAlgo()>99 && fabs(cluster->eta())<1.4791) ) continue;
00270     xana::out(2) << "[update] creating new xanacluster "<< std::endl;
00271     xana::out(2) << "[update] cluster algoName is  "<< clusterizerName_.value() << " " << getAlgoName(cluster->whichAlgo())<<std::endl;
00272     xcluster = new XANAEmCluster(cluster->energy(), cluster->position(),
00273                                  cluster->chi2(),clusterizerName_.value());
00274     xana::out(2) << "[update] adding cluster " << std::endl;
00275     xanaEsdEvent_->addEmCluster(xcluster);
00276     std::vector<const CaloRecHit *> rhits=cluster->rHits();
00277     for (std::vector<const CaloRecHit *>::const_iterator
00278            it=rhits.begin(); it != rhits.end(); it++) {
00279       XANACaloRecHit *xhit = new XANACaloRecHit((*it)->energy(), (*it)->time(),
00280                                                 (*it)->chi2(), XANACellID((*it)->getMyCell().position()));
00281       xanaEsdEvent_->addEmClusterHit(xhit, xcluster);
00282       clusterizedCaloRecHits_.insert(pair<CellID,XANACaloRecHit>((*it)->getMyCell(),*xhit));
00283       clusterizedCells_.push_back((*it)->getMyCell());
00284       delete xhit;
00285     } 
00286     delete xcluster;
00287   }
00288 
00289 }

void XANAEsdBuilder::setEndcapClusters G3EventProxy *    [protected]
 

Definition at line 370 of file writeESDForFAMOS.cpp.

References XANAEsdEvent::addBremCluster, XANAEsdEvent::addSeedCluster, XANAEsdEvent::addSuperCluster, ciso_, clusterizerName_, endcapSuperClusterizerName_, endcapSuperClusters, XANACluster::getEnergy, xana::out, XANASuperCluster::setAlgoName, XANASuperCluster::setCaloIsolation, XANASuperCluster::setDisc1, XANASuperCluster::setDisc2, XANASuperCluster::setDisc3, XANASuperCluster::setEnergy, XANASuperCluster::setEnergyScaleFactor, XANASuperCluster::setHadronicOverEm, XANASuperCluster::setPosition, XANASuperCluster::setPositionCovarianceMatrix, XANASuperCluster::setSum1, XANASuperCluster::setSum25, XANASuperCluster::setSum4, XANASuperCluster::setSum9, and xanaEsdEvent_.

Referenced by XANAEsdBuilderForFAMOS::upDate, and upDate.

00371 {
00372            
00373   xana::out(2) << "[update] endcap superclusters " << std::endl;
00374   
00375   XANASuperCluster *xscluster;    
00376   RecCollection<EgammaEndcapCluster> endcapSuperClusters(RecQuery("EGEFCluster","1.0"));
00377   RecCollection<EgammaEndcapCluster>::const_iterator endcapSuperCluster ;
00378   xana::out(5) << "[update] " << endcapSuperClusters.size() << endcapSuperClusterizerName_.value() << " endcapSuperClusters found." << std::endl;
00379   for (endcapSuperCluster=endcapSuperClusters.begin(); endcapSuperCluster!=endcapSuperClusters.end(); endcapSuperCluster++) {
00380     //    nbClusters_++;
00381     xana::out(2) << "[update] constructing new supercluster from algo " << endcapSuperCluster->seed()->WhichAlgo()
00382               << " at eta " << endcapSuperCluster->eta() << " with energy " <<
00383       endcapSuperCluster->energy() << std::endl;
00384     xscluster = new XANASuperCluster;
00385     xscluster->setEnergy(endcapSuperCluster->energy()); 
00386     xscluster->setPosition(endcapSuperCluster->position()); 
00387     xscluster->setSum1(endcapSuperCluster->seed()->getS1()); 
00388     xscluster->setSum4(endcapSuperCluster->seed()->getS4()); 
00389     xscluster->setSum9(endcapSuperCluster->seed()->getS9()); 
00390     xscluster->setSum25(endcapSuperCluster->seed()->getS25()); 
00391     xscluster->setHadronicOverEm(endcapSuperCluster->seed()->getHoe());
00392     // iso not available from endcap super clusters
00393     // compute from IsoCalculator
00394     float iso = ciso_->getIso(endcapSuperCluster->eta(),endcapSuperCluster->phi());
00395     xscluster->setCaloIsolation(iso); 
00396     xscluster->setDisc1(endcapSuperCluster->seed()->getDisc1()); 
00397     xscluster->setDisc2(endcapSuperCluster->seed()->getDisc2()); 
00398     xscluster->setDisc3(endcapSuperCluster->seed()->getDisc3()); 
00399     HepSymMatrix cov(2);
00400     cov(1,1) = endcapSuperCluster->seed()->getCovEE();
00401     cov(1,2) = endcapSuperCluster->seed()->getCovEP();
00402     cov(2,2) = endcapSuperCluster->seed()->getCovPP();
00403     xscluster->setPositionCovarianceMatrix(cov);
00404     xscluster->setEnergyScaleFactor(endcapSuperCluster->energy()/endcapSuperCluster->energyUncorrected());
00405     xana::out(2) << "[update] supercluster algoName is " << endcapSuperClusterizerName_.value() << std::endl;
00406     xscluster->setAlgoName(endcapSuperClusterizerName_.value());
00407     xana::out(2) << "[update] adding super cluster " << std::endl;
00408     xanaEsdEvent_->addSuperCluster(xscluster);
00409 
00410     // add seed basic cluster
00411     // the seed is the first in BasicClusters list
00412     EgammaVSuperCluster::const_iterator icf = endcapSuperCluster->basicClusters().first;
00413     XANAEmCluster *seed 
00414       = new XANAEmCluster((*icf)->energy(),
00415                           (*icf)->position(),
00416                           (*icf)->chi2(),
00417                           clusterizerName_.value()); 
00418     xana::out(2) << "[update] adding seed " << std::endl;
00419     xanaEsdEvent_->addSeedCluster(seed, xscluster);
00420     delete seed;
00421 
00422     //  // now add brems clusters
00423     xana::out(2) << "[update] adding brems " << std::endl;
00424     XANAEmCluster *brem = 0;
00425     // beware, the endcapSuperCluster::vector<EgammaBasicCluster> list includes the seed cluster
00426     EgammaVSuperCluster::const_iterator ic = endcapSuperCluster->basicClusters().first+1;
00427     for (;ic != endcapSuperCluster->basicClusters().second; ic++) {
00428               brem = new XANAEmCluster((*ic)->energy(),
00429                                       (*ic)->position(),
00430                                       (*ic)->chi2(),
00431                                       clusterizerName_.value());            
00432       xana::out(2) << "[upDate] brem energy " << brem->getEnergy() << std::endl;
00433       xanaEsdEvent_->addBremCluster(brem, xscluster);
00434       delete brem;
00435     } 
00436     //  finally add preshower info when relevant (endcap)
00437     xana::out(2) << "[update] adding presh info " << std::endl;
00438     //  XANAPreshowerInfo *preshowerInfo = 0;
00439     // FIXME: currently not stored
00440 //      if (endcapSuperCluster->energy_P1()+endcapSuperCluster->energy_P2() != 0. ) {
00441 //           cout << "[update] constructing a  XANAPreshowerInfo" << std::endl;
00442 //        preshowerInfo = new XANAPreshowerInfo(endcapSuperCluster->energy_P1(), 
00443 //         endcapSuperCluster->energy_P2(), endcapSuperCluster->position_P1(),
00444 //         endcapSuperCluster->position_P2(), endcapSuperCluster->calibP1(), endcapSuperCluster->calibP2(), 
00445 //         endcapSuperCluster->calibSC());
00446 //        xanaEsdEvent_->addPreshCluster(preshowerInfo, xscluster);
00447 //      } 
00448     delete xscluster;
00449   }
00450 
00451 }

void XANAEsdBuilder::setHadClusters G3EventProxy *    [protected]
 

Referenced by upDate.

void XANAEsdBuilder::setHeader G3EventProxy *    [protected]
 

used for initialisation (e.g. if the tracker geometry must have been initialised before).

Definition at line 240 of file writeESDForFAMOS.cpp.

Referenced by XANAEsdBuilderForFAMOS::upDate, and upDate.

00241 {
00242 /*
00243   xana::out(8) << "[update] ============================  " << std::endl;
00244   xana::out(8) << "[update] Run #" << ev->simSignal()->id().runNumber() << "; ";
00245   xana::out(8) << " Event #" << ev->simSignal()->id().eventInRun() << std::endl;     
00246   xana::out(8) << "[update] ============================  " << std::endl;
00247   xanaEsdEvent_->setHeader(ev->simSignal()->id().runNumber(),ev->simSignal()->id().eventInRun());
00248 */
00249 }

void XANAEsdBuilder::setJets G3EventProxy *    [protected]
 

Referenced by upDate.

void XANAEsdBuilder::setMcTruth G3EventProxy *    [protected, virtual]
 

Reimplemented in XANAEsdBuilderForFAMOS.

Definition at line 892 of file writeESDForFAMOS.cpp.

Referenced by upDate.

00893 { }

void XANAEsdBuilder::setMet G3EventProxy *    [protected]
 

Referenced by upDate.

void XANAEsdBuilder::setMuons G3EventProxy *    [protected]
 

Referenced by upDate.

void XANAEsdBuilder::setSuperClusters G3EventProxy *    [protected]
 

Definition at line 292 of file writeESDForFAMOS.cpp.

References XANAEsdEvent::addBremCluster, XANAEsdEvent::addSeedCluster, XANAEsdEvent::addSuperCluster, clusterizerName_, XANACluster::getEnergy, xana::out, XANASuperCluster::setAlgoName, XANASuperCluster::setCaloIsolation, XANASuperCluster::setDisc1, XANASuperCluster::setDisc2, XANASuperCluster::setDisc3, XANASuperCluster::setEnergy, XANASuperCluster::setEnergyScaleFactor, XANASuperCluster::setHadronicOverEm, XANASuperCluster::setPosition, XANASuperCluster::setPositionCovarianceMatrix, XANASuperCluster::setSum1, XANASuperCluster::setSum25, XANASuperCluster::setSum4, XANASuperCluster::setSum9, superClusterizerName_, superClusters, and xanaEsdEvent_.

Referenced by XANAEsdBuilderForFAMOS::upDate, and upDate.

00293 {
00294            
00295   xana::out(2) << "[update] superclusters " << std::endl;
00296   
00297   // Barrel superclusters (Hybrid clustering algo chosen for the moment)
00298   RecQuery q1 = FastBasicReco::fastSCConfig();
00299   RecCollection<EgammaSuperCluster> superClusters(q1);
00300   RecCollection<EgammaSuperCluster>::const_iterator superCluster ; 
00301   xana::out(5) << "[update] " << superClusters.size() << superClusterizerName_.value() << " superclusters found." << std::endl;
00302   XANASuperCluster *xscluster;    
00303 
00304   for (superCluster=superClusters.begin(); superCluster!=superClusters.end(); superCluster++) {
00305 // ORIGINAL
00306     if ( (fabs(superCluster->eta())>1.4791) ||
00307        (superCluster->seed()->getBasicCluster()->whichAlgo()<99 &&
00308         fabs(superCluster->eta())<1.4791) ) continue;
00309 // MODIF CARO : ISLAND Partout!
00310 //    if ( (fabs(superCluster->eta())>1.4791) || 
00311 //       (superCluster->seed()->getBasicCluster()->whichAlgo()>99 && 
00312 //        fabs(superCluster->eta())<1.4791) ) continue;
00313     xana::out(2) << "[update] constructing new supercluster from algo " << superCluster->seed()->WhichAlgo()
00314               << " at eta " << superCluster->eta() << " with energy " <<superCluster->energy() << std::endl;
00315     xscluster = new XANASuperCluster;
00316     xscluster->setEnergy(superCluster->energy()); 
00317     xscluster->setPosition(superCluster->position()); 
00318     xscluster->setSum1(superCluster->seed()->getS1()); 
00319     xscluster->setSum4(superCluster->seed()->getS4()); 
00320     xscluster->setSum9(superCluster->seed()->getS9()); 
00321     xscluster->setSum25(superCluster->seed()->getS25()); 
00322     xscluster->setHadronicOverEm(superCluster->seed()->getHoe());
00323     xscluster->setCaloIsolation(superCluster->iso()); 
00324     xscluster->setDisc1(superCluster->seed()->getDisc1()); 
00325     xscluster->setDisc2(superCluster->seed()->getDisc2()); 
00326     xscluster->setDisc3(superCluster->seed()->getDisc3()); 
00327     HepSymMatrix cov(2);
00328     cov(1,1) = superCluster->seed()->getCovEE();
00329     cov(1,2) = superCluster->seed()->getCovEP();
00330     cov(2,2) = superCluster->seed()->getCovPP();
00331     xscluster->setPositionCovarianceMatrix(cov);
00332     xscluster->setEnergyScaleFactor(superCluster->energy()/superCluster->energyUncorrected());
00333     xana::out(2) << "[update] supercluster algoName is " << superClusterizerName_.value() << std::endl;
00334     xscluster->setAlgoName(superClusterizerName_.value());
00335     xana::out(2) << "[update] adding super cluster " << std::endl;
00336     xanaEsdEvent_->addSuperCluster(xscluster);
00337 
00338     // add seed basic cluster
00339     // the seed is the first in BasicClusters list
00340     EgammaVSuperCluster::const_iterator icf = superCluster->basicClusters().first;
00341     XANAEmCluster *seed 
00342       = new XANAEmCluster((*icf)->energy(),
00343                           (*icf)->position(),
00344                           (*icf)->chi2(),
00345                           clusterizerName_.value()); 
00346     xana::out(2) << "[update] adding seed " << std::endl;
00347     xanaEsdEvent_->addSeedCluster(seed, xscluster);
00348     delete seed;
00349 
00350     // now add brems clusters
00351     xana::out(2) << "[update] adding brems " << std::endl;
00352     XANAEmCluster *brem = 0;
00353     // beware, the superCluster::vector<EgammaBasicCluster> list includes the seed cluster
00354     EgammaVSuperCluster::const_iterator ic = superCluster->basicClusters().first+1;
00355     for (;ic != superCluster->basicClusters().second; ic++) {
00356               brem = new XANAEmCluster((*ic)->energy(),
00357                                       (*ic)->position(),
00358                                       (*ic)->chi2(),
00359                                       clusterizerName_.value());            
00360       xana::out(2) << "[upDate] brem energy " << brem->getEnergy() << std::endl;
00361       xanaEsdEvent_->addBremCluster(brem, xscluster);
00362       delete brem;
00363     } 
00364     delete xscluster;
00365   }    
00366 
00367 }

void XANAEsdBuilder::setTracks G3EventProxy *    [protected]
 

Referenced by upDate.

void XANAEsdBuilder::setTriggerInfo G3EventProxy *    [protected]
 

Referenced by upDate.

void XANAEsdBuilder::setVertices G3EventProxy *    [protected]
 

Referenced by upDate.

void XANAEsdBuilder::upDate G3SetUp *    [protected]
 

Definition at line 262 of file writeESD.cpp.

References electronReconstructorName_, gsfForwardFit_, xana::out, and theRegionalTrackFinder.

00263 {
00264 
00265     xana::out(5) << "Starting initSetUp==================================" << std::endl;
00266     if (strcmp(electronReconstructorName_.value().c_str(),"GSF"))     return;
00267     
00268     // new from Wolfgang
00269     
00270     // RecQuery for regional tracks
00271     RecQuery regionalQuery("RegionalCombinatorialTrackFinder");
00272 
00273     // Building:
00274     RecQuery builderQuery("CombinatorialTrajectoryBuilder");
00275     builderQuery.setParameter("chiSquarCut",100000.);
00276     builderQuery.setParameter("mass",0.000511);
00277     builderQuery.setParameter("maxCand",2);
00278     builderQuery.setParameter("maxLostHit",1);
00279     builderQuery.setParameter("maxConsecLostHit",1);
00280     builderQuery.setParameter("lostHitPenalty",50.);
00281     builderQuery.setParameter("intermediateCleaning",true);
00282     builderQuery.setParameter("minimumNumberOfHits",5);
00283     builderQuery.setParameter("ptCut", 3.);
00284     builderQuery.setParameter("alwaysUseInvalidHits",true);
00285 
00286     // Fit & smooth part
00287     RecQuery fitQuery("KFFittingSmoother");
00288     fitQuery.setParameter("mass",0.000511); 
00289     
00290     // to fit forward with the gsf:
00291     if (!strcmp(gsfForwardFit_.value().c_str(),"GSF") ) 
00292       {
00293         RecQuery fwdQuery("GsfElectronFitter");
00294         fwdQuery.setParameter("mass",0.000511);
00295         fitQuery.setComponent("Fitter",fwdQuery);
00296       }
00297 
00298     // to fit forward with the kf:
00299     if (!strcmp(gsfForwardFit_.value().c_str(),"KF") ) 
00300       {
00301         RecQuery fwdQuery("KFTrajectoryFitter");   
00302         fwdQuery.setParameter("mass",0.000511); 
00303         fitQuery.setComponent("Fitter",fwdQuery);
00304       }
00305 
00306     // Smoother
00307     RecQuery bwdQuery("GsfElectronSmoother");
00308     fitQuery.setComponent("Smoother",bwdQuery);
00309 
00310     // Complete query for regional tracks 
00311     regionalQuery.setParameter("mass",0.000511);
00312     regionalQuery.setComponent("TrajectoryBuilder",builderQuery); 
00313     regionalQuery.setComponent("Smoother",fitQuery);
00314 
00315     // Create ConfigAlgorithm
00316     theRegionalTrackFinder = createAlgo<RegionalTrackFinder>(regionalQuery);
00317     // end new from Wolfgang
00318 
00319  }

void XANAEsdBuilder::upDate G3EventProxy *    [protected, virtual]
 

Reimplemented in XANAEsdBuilderForFAMOS.

Definition at line 219 of file writeESD.cpp.

References XANAGeantEvent::clear, XANAGeneratorEvent::clear, XANAEsdEvent::clear, electronReconstructorName_, XANAMemLog::fill, xana::out, setAllTrackHits, setCaloRecHits, setElectrons, setElectronsGSF, setElectronTracks, setEmClusters, setEndcapClusters, setHadClusters, setHeader, setJets, setMcTruth, setMet, setMuons, setSuperClusters, setTracks, setTriggerInfo, setVertices, writeTree, xanaEsdEvent_, xanaGeantEvent_, xanaGenEvent_, and xanamemlog_.

00220 { 
00221     
00222   xana::out(1) << "[update] updating XANAEsdBuilder for event " << std::endl;  
00223   if (!ev) return ;    
00224 
00225   //    UInt_t saveNumber=TProcessID::GetObjectCount();
00226      
00227   setHeader(ev);
00228   if (writeCaloRecHits_) setCaloRecHits(ev);
00229   setEmClusters(ev);
00230   setSuperClusters(ev);
00231   setEndcapClusters(ev);
00232   setHadClusters(ev);
00233   setTracks(ev);
00234   if (writeAllTrackHits_) setAllTrackHits(ev);
00235   setVertices(ev);
00236   setMuons(ev);
00237   if (!strcmp(electronReconstructorName_.value().c_str(),"GSF")) {
00238     setElectronsGSF(ev);
00239   }
00240   else {
00241     setElectronTracks(ev);
00242     setElectrons(ev);
00243   }
00244   setJets(ev);
00245   setMet(ev);
00246   setMcTruth(ev);
00247   setTriggerInfo(ev);
00248 
00249   if (writeTree_) writeTree();
00250   
00251   if (memlog_) xanamemlog_->fill();
00252 
00253   xanaEsdEvent_->clear();
00254   xanaGenEvent_->clear();
00255   xanaGeantEvent_->clear();
00256 
00257 //      TProcessID::SetObjectCount(saveNumber);
00258 
00259 }      

void XANAEsdBuilder::writeTree   [protected]
 

Definition at line 394 of file writeESD.cpp.

References xana::out, and xanaEsdTree_.

Referenced by XANAEsdBuilderForFAMOS::upDate, and upDate.

00395 {
00396 
00397   xana::out(2) << "[update] writing event " << std::endl;     
00398   
00399   xanaEsdTree_->Fill();  //fill the tree
00400 
00401 }


Member Data Documentation

map<CellID, XANACaloRecHit, less<CellID> > XANAEsdBuilder::allCaloRecHits_ [protected]
 

Definition at line 132 of file writeESD.h.

vector<CellID> XANAEsdBuilder::allCells_ [protected]
 

Definition at line 134 of file writeESD.h.

SimpleConfigurable<int> XANAEsdBuilder::autosave_
 

Definition at line 66 of file writeESD.h.

Referenced by XANAEsdBuilder.

SimpleConfigurable<int> XANAEsdBuilder::bufferSize_
 

Definition at line 69 of file writeESD.h.

Referenced by XANAEsdBuilder.

IsoCalculator* XANAEsdBuilder::ciso_ [protected]
 

Definition at line 126 of file writeESD.h.

Referenced by setElectrons, setEndcapClusters, and XANAEsdBuilder.

map<CellID, XANACaloRecHit, less<CellID> > XANAEsdBuilder::clusterizedCaloRecHits_ [protected]
 

Definition at line 133 of file writeESD.h.

Referenced by setEmClusters.

vector<CellID> XANAEsdBuilder::clusterizedCells_ [protected]
 

Definition at line 135 of file writeESD.h.

Referenced by setEmClusters.

SimpleConfigurable<std::string> XANAEsdBuilder::clusterizerName_
 

Definition at line 76 of file writeESD.h.

Referenced by setEmClusters, setEndcapClusters, setSuperClusters, and XANAEsdBuilder.

RecCollection<EgammaBasicCluster>* XANAEsdBuilder::clusters [protected]
 

Definition at line 102 of file writeESD.h.

Referenced by setEmClusters.

SimpleConfigurable<int> XANAEsdBuilder::compressionLevel_
 

Definition at line 68 of file writeESD.h.

Referenced by XANAEsdBuilder.

SimpleConfigurable<std::string> XANAEsdBuilder::electronReconstructorName_
 

Definition at line 83 of file writeESD.h.

Referenced by upDate, and XANAEsdBuilder.

RecCollection<ElectronCandidate>* XANAEsdBuilder::electrons [protected]
 

Definition at line 109 of file writeESD.h.

Referenced by setElectrons.

RecCollection<TTrack>* XANAEsdBuilder::eltracks [protected]
 

Definition at line 111 of file writeESD.h.

SimpleConfigurable<std::string> XANAEsdBuilder::endcapSuperClusterizerName_
 

Definition at line 78 of file writeESD.h.

Referenced by setElectrons, setEndcapClusters, and XANAEsdBuilder.

RecCollection<EgammaEndcapCluster>* XANAEsdBuilder::endcapSuperClusters [protected]
 

Definition at line 104 of file writeESD.h.

Referenced by setEndcapClusters.

SimpleConfigurable<std::string> XANAEsdBuilder::fileName_
 

Definition at line 64 of file writeESD.h.

Referenced by XANAEsdBuilder.

SimpleConfigurable<std::string> XANAEsdBuilder::gsfForwardFit_
 

Definition at line 86 of file writeESD.h.

Referenced by upDate, and XANAEsdBuilder.

SimpleConfigurable<std::string> XANAEsdBuilder::hcalClusterizerName_
 

Definition at line 79 of file writeESD.h.

Referenced by XANAEsdBuilder.

RecCollection<HighLevelTriggerResult>* XANAEsdBuilder::hlt [protected]
 

Definition at line 114 of file writeESD.h.

SimpleConfigurable<std::string> XANAEsdBuilder::hltMenu_
 

Definition at line 94 of file writeESD.h.

Referenced by XANAEsdBuilder.

RecCollection<RecJet>* XANAEsdBuilder::jets [protected]
 

Definition at line 112 of file writeESD.h.

SimpleConfigurable<bool> XANAEsdBuilder::jetsFromTrueInformation_
 

Definition at line 89 of file writeESD.h.

Referenced by XANAEsdBuilder.

SimpleConfigurable<std::string> XANAEsdBuilder::l1Menu_
 

Definition at line 93 of file writeESD.h.

Referenced by XANAEsdBuilder.

SimpleConfigurable<bool> XANAEsdBuilder::memlog_
 

Definition at line 63 of file writeESD.h.

Referenced by XANAEsdBuilder.

RecCollection<RecMET>* XANAEsdBuilder::mets [protected]
 

Definition at line 113 of file writeESD.h.

SimpleConfigurable<bool> XANAEsdBuilder::metsFromTrueInformation_
 

Definition at line 90 of file writeESD.h.

Referenced by XANAEsdBuilder.

SimpleConfigurable<std::string> XANAEsdBuilder::muonReconstructorName_
 

Definition at line 82 of file writeESD.h.

Referenced by XANAEsdBuilder.

RecCollection<RecMuon>* XANAEsdBuilder::muons [protected]
 

Definition at line 108 of file writeESD.h.

int XANAEsdBuilder::nbClusters_ [protected]
 

Definition at line 130 of file writeESD.h.

int XANAEsdBuilder::nbElectrons_ [protected]
 

Definition at line 130 of file writeESD.h.

Referenced by setElectrons.

int XANAEsdBuilder::nbTracks_ [protected]
 

Definition at line 130 of file writeESD.h.

SimpleConfigurable<int> XANAEsdBuilder::splitMode_
 

Definition at line 70 of file writeESD.h.

Referenced by XANAEsdBuilder.

SimpleConfigurable<std::string> XANAEsdBuilder::superClusterizerName_
 

Definition at line 77 of file writeESD.h.

Referenced by setElectrons, setSuperClusters, and XANAEsdBuilder.

RecCollection<EgammaSuperCluster>* XANAEsdBuilder::superClusters [protected]
 

Definition at line 103 of file writeESD.h.

Referenced by setSuperClusters.

Collection* XANAEsdBuilder::theCollection [protected]
 

Definition at line 100 of file writeESD.h.

RegionalTrackFinder* XANAEsdBuilder::theRegionalTrackFinder [protected]
 

Definition at line 138 of file writeESD.h.

Referenced by upDate.

RecCollection<EcalPlusHcalTower>* XANAEsdBuilder::towers [protected]
 

Definition at line 105 of file writeESD.h.

SimpleConfigurable<std::string> XANAEsdBuilder::trackReconstructorName_
 

Definition at line 80 of file writeESD.h.

Referenced by XANAEsdBuilder.

RecCollection<TTrack>* XANAEsdBuilder::tracks [protected]
 

Definition at line 106 of file writeESD.h.

Referenced by setElectronTracks.

SimpleConfigurable<std::string> XANAEsdBuilder::treeName_
 

Definition at line 65 of file writeESD.h.

Referenced by XANAEsdBuilder.

SimpleConfigurable<std::string> XANAEsdBuilder::vertexReconstructorName_
 

Definition at line 81 of file writeESD.h.

Referenced by XANAEsdBuilder.

RecCollection<RecoVertex>* XANAEsdBuilder::vertices [protected]
 

Definition at line 107 of file writeESD.h.

SimpleConfigurable<bool> XANAEsdBuilder::writeAllTrackHits_
 

Definition at line 72 of file writeESD.h.

Referenced by XANAEsdBuilder.

SimpleConfigurable<bool> XANAEsdBuilder::writeCaloRecHits_
 

Definition at line 67 of file writeESD.h.

Referenced by XANAEsdBuilder.

SimpleConfigurable<bool> XANAEsdBuilder::writeEleTrackHits_
 

Definition at line 73 of file writeESD.h.

Referenced by XANAEsdBuilder.

SimpleConfigurable<bool> XANAEsdBuilder::writeTrackHits_
 

Definition at line 71 of file writeESD.h.

Referenced by XANAEsdBuilder.

SimpleConfigurable<bool> XANAEsdBuilder::writeTree_
 

Definition at line 62 of file writeESD.h.

Referenced by XANAEsdBuilder.

XANAEsdEvent* XANAEsdBuilder::xanaEsdEvent_ [protected]
 

Definition at line 119 of file writeESD.h.

Referenced by setElectrons, setElectronTracks, setEleTrackHits, setEmClusters, setEndcapClusters, setSuperClusters, XANAEsdBuilderForFAMOS::upDate, upDate, and XANAEsdBuilder.

TBranch* XANAEsdBuilder::xanaEsdEventBranch_ [protected]
 

Definition at line 117 of file writeESD.h.

Referenced by XANAEsdBuilder.

TFile* XANAEsdBuilder::xanaEsdFile_ [protected]
 

Definition at line 118 of file writeESD.h.

Referenced by XANAEsdBuilder, and ~XANAEsdBuilder.

TTree* XANAEsdBuilder::xanaEsdTree_ [protected]
 

Definition at line 116 of file writeESD.h.

Referenced by writeTree, XANAEsdBuilder, and ~XANAEsdBuilder.

XANAGeantEvent* XANAEsdBuilder::xanaGeantEvent_ [protected]
 

Definition at line 124 of file writeESD.h.

Referenced by XANAEsdBuilderForFAMOS::upDate, upDate, and XANAEsdBuilder.

TBranch* XANAEsdBuilder::xanaGeantEventBranch_ [protected]
 

Definition at line 123 of file writeESD.h.

Referenced by XANAEsdBuilder.

XANAGeneratorEvent* XANAEsdBuilder::xanaGenEvent_ [protected]
 

Definition at line 122 of file writeESD.h.

Referenced by XANAEsdBuilderForFAMOS::setMcTruth, XANAEsdBuilderForFAMOS::upDate, upDate, and XANAEsdBuilder.

TBranch* XANAEsdBuilder::xanaGenEventBranch_ [protected]
 

Definition at line 121 of file writeESD.h.

Referenced by XANAEsdBuilder.

XANAMemLog* XANAEsdBuilder::xanamemlog_ [protected]
 

Definition at line 128 of file writeESD.h.

Referenced by XANAEsdBuilderForFAMOS::upDate, upDate, XANAEsdBuilder, and ~XANAEsdBuilder.


The documentation for this class was generated from the following files:
Generated on Tue May 10 10:01:38 2005 for XANADOO by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002