Fork me on GitHub

Changeset 4d999a57 in git for examples


Ignore:
Timestamp:
Oct 15, 2014, 2:27:37 PM (10 years ago)
Author:
Christophe Delaere <christophe.delaere@…>
Branches:
ImprovedOutputFile, Timing, dual_readout, llp, master
Children:
cfc3160
Parents:
b3c42d3
Message:

Still broken, but better.

debugging may require to transfer chuncks of the code to compiled code.
I have in mind the geometry and the code that prepares the GUI.
Right now I got a segfault + funny cint errors.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • examples/geometry.C

    rb3c42d3 r4d999a57  
    1919//#include "display/DelphesCaloData.h"
    2020//#include "display/DelphesDisplay.h"
    21 //#include "display/DelphesBranchElement.h"
     21#include "../display/DelphesBranchElement.h"
    2222//#include "classes/DelphesClasses.h"
    2323#include "TF2.h"
     
    6262void load_event();
    6363void delphes_read();
     64void delphes_read_towers(TClonesArray* data, DelphesBranchBase* element);
     65void delphes_read_tracks(TClonesArray* data, DelphesBranchBase* element);
     66void delphes_read_jets(TClonesArray* data, DelphesBranchBase* element);
     67void delphes_read_vectors(TClonesArray* data, DelphesBranchBase* element);
    6468void readConfig(const char *configFile, const Delphes3DGeometry& det3D, std::vector<DelphesBranchBase*>& elements, std::vector<TClonesArray*>& arrays);
    6569
     
    496500   DelphesBranchElement<TEveTrackList>* tlist;
    497501   DelphesBranchElement<DelphesCaloData>* clist;
    498    DelphesBranchElement<TEveTrackList>* elist;
     502   DelphesBranchElement<TEveElementList>* elist;
    499503   for(Int_t b = 0; b<nBranches; ++b) {
    500504     TString input = branches[b*3].GetString();
     
    503507     if(className=="Track") {
    504508       if(input.Contains("eflow",TString::kIgnoreCase) || name.Contains("eflow",TString::kIgnoreCase)) continue; //no eflow
    505        elist = new DelphesBranchElement<TEveTrackList>(name,"track",kBlue);
    506        elements.push_back(elist);
    507        TEveTrackPropagator *trkProp = elist->GetContainer()->GetPropagator();
     509       tlist = new DelphesBranchElement<TEveTrackList>(name,"track",kBlue);
     510       elements.push_back(tlist);
     511       TEveTrackPropagator *trkProp = tlist->GetContainer()->GetPropagator();
    508512       trkProp->SetMagField(0., 0., -tk_Bz);
    509513       trkProp->SetMaxR(tk_radius);
     
    622626   gDelphesDisplay->ImportGeomRhoZ(geometry);
    623627   // find the first calo data and use that to initialize the calo display
    624    for(std::vector<DelphesBranchBase*>::iterator data=gElements.begin();data<gElements.end();++Data) {
     628   for(std::vector<DelphesBranchBase*>::iterator data=gElements.begin();data<gElements.end();++data) {
    625629     if(TString((*data)->GetType())=="tower") {
    626        TEveCalo3D *calo3d = new TEveCalo3D((*data)->GetContainer());
     630//TODO: why do I have to split this in two lines??? seems a cint bug?
     631       DelphesBranchElement<DelphesCaloData>* data_tmp = dynamic_cast<DelphesBranchElement<DelphesCaloData>*>(*data);
     632       DelphesCaloData* container =  data_tmp->GetContainer();
     633//       DelphesCaloData* container = dynamic_cast<DelphesBranchElement<DelphesCaloData>*>((*data))->GetContainer();
     634       assert(container);
     635       TEveCalo3D *calo3d = new TEveCalo3D(container);
    627636       calo3d->SetBarrelRadius(gRadius);
    628637       calo3d->SetEndCapPos(gHalfLength);
     
    630639       gDelphesDisplay->ImportCaloRPhi(calo3d);
    631640       gDelphesDisplay->ImportCaloRhoZ(calo3d);
    632        TEveCaloLego *lego = new TEveCaloLego((*data)->GetContainer());
     641       TEveCaloLego *lego = new TEveCaloLego(container);
    633642       lego->InitMainTrans();
    634643       lego->RefMainTrans().SetScale(TMath::TwoPi(), TMath::TwoPi(), TMath::Pi());
     
    653662   // clear the previous event
    654663   gEve->GetViewers()->DeleteAnnotations();
    655    for(std::vector<DelphesBranchBase*>::iterator data=gElements.begin();data<gElements.end();++Data) {
    656      (*data)->Reset()
     664   for(std::vector<DelphesBranchBase*>::iterator data=gElements.begin();data<gElements.end();++data) {
     665     (*data)->Reset();
    657666   }
    658667
     
    691700    TString type = (*element)->GetType();
    692701    // keep the most generic track collection for the end
    693     if(type=="track" && (*element)->GetClassName()=="Track" && nTracks=0) {
     702    if(type=="track" && TString((*element)->GetClassName())=="Track" && nTracks==0) {
    694703      data_tracks = data;
    695704      element_tracks = element;
     
    698707    }
    699708    // branch on the element type
    700     // TODO : I understand that we will have to cast the elements.
    701709    if(type=="tower") delphes_read_towers(*data,*element);
    702710    else if(type=="track" || type=="photon") delphes_read_tracks(*data,*element);
     
    705713  }
    706714  // finish whith what we consider to be the main track collection
    707   if(nTracks>0) delphes_read_tracks(*data,(*element)->GetContainer());
    708 }
    709 
    710 void delphes_read_towers(TClonesArray* data, DelphesBranchElement<TEveElementList>* element) {
    711   DelphesCaloData* container = element->GetContainer();
     715  if(nTracks>0) delphes_read_tracks(*data,*element);
     716}
     717
     718void delphes_read_towers(TClonesArray* data, DelphesBranchBase* element) {
     719  DelphesCaloData* container = dynamic_cast<DelphesBranchElement<DelphesCaloData>*>(element)->GetContainer();
     720  assert(container);
    712721  // Loop over all towers
    713722  TIter itTower(data);
     
    722731}
    723732
    724 void delphes_read_tracks(TClonesArray* data, DelphesBranchElement<TEveTrackList>* element) {
    725   TEveTrackList* container = element->GetContainer();
     733void delphes_read_tracks(TClonesArray* data, DelphesBranchBase* element) {
     734  TEveTrackList* container = dynamic_cast<DelphesBranchElement<TEveTrackList>*>(element)->GetContainer();
     735  assert(container);
    726736  TString className = element->GetClassName();
    727737  TIter itTrack(data);
     
    741751      eveTrack->SetName(Form("%s [%d]", pb.GetName(), counter++));
    742752      eveTrack->SetStdTitle();
    743       eveTrack->SetAttLineAttMarker(gTrackList);
     753      eveTrack->SetAttLineAttMarker(container);
    744754      container->AddElement(eveTrack);
    745755      eveTrack->SetLineColor(element->GetColor());
     
    749759    // Loop over all electrons
    750760    Electron *electron;
    751     while((electron = (Electron *) itElectron.Next())) {
     761    while((electron = (Electron *) itTrack.Next())) {
    752762      TParticle pb(electron->Charge<0?11:-11, 1, 0, 0, 0, 0,
    753763                   electron->P4().Px(), electron->P4().Py(),
     
    758768      eveTrack->SetName(Form("%s [%d]", pb.GetName(), counter++));
    759769      eveTrack->SetStdTitle();
    760       eveTrack->SetAttLineAttMarker(gElectronList);
     770      eveTrack->SetAttLineAttMarker(container);
    761771      container->AddElement(eveTrack);
    762772      eveTrack->SetLineColor(element->GetColor());
     
    766776    // Loop over all muons
    767777    Muon *muon;
    768     while((muon = (Muon *) itMuon.Next())) {
     778    while((muon = (Muon *) itTrack.Next())) {
    769779      TParticle pb(muon->Charge<0?13:-13, 1, 0, 0, 0, 0,
    770780                   muon->P4().Px(), muon->P4().Py(),
     
    775785      eveTrack->SetName(Form("%s [%d]", pb.GetName(), counter++));
    776786      eveTrack->SetStdTitle();
    777       eveTrack->SetAttLineAttMarker(gMuonList);
     787      eveTrack->SetAttLineAttMarker(container);
    778788      container->AddElement(eveTrack);
    779789      eveTrack->SetLineColor(element->GetColor());
     
    783793    // Loop over all photons
    784794    Photon *photon;
    785     while((photon = (Photon *) itPhoton.Next())) {
     795    while((photon = (Photon *) itTrack.Next())) {
    786796      TParticle pb(22, 1, 0, 0, 0, 0,
    787797                   photon->P4().Px(), photon->P4().Py(),
     
    792802      eveTrack->SetName(Form("%s [%d]", pb.GetName(), counter++));
    793803      eveTrack->SetStdTitle();
    794       eveTrack->SetAttLineAttMarker(gPhotonList);
     804      eveTrack->SetAttLineAttMarker(container);
    795805      container->AddElement(eveTrack);
    796806      eveTrack->SetLineColor(element->GetColor());
     
    800810}
    801811
    802 void delphes_read_jets(TClonesArray* data, DelphesBranchElement<TEveElementList>* element) {
    803   TEveElementList* container = element->GetContainer();
     812void delphes_read_jets(TClonesArray* data, DelphesBranchBase* element) {
     813  TEveElementList* container = dynamic_cast<DelphesBranchElement<TEveElementList>*>(element)->GetContainer();
     814  assert(container);
    804815  TIter itJet(data);
    805816  Jet *jet;
     
    822833}
    823834
    824 void delphes_read_vectors(TClonesArray* data, DelphesBranchElement<TEveElementList>* element) {
    825   TEveElementList* container = element->GetContainer();
     835void delphes_read_vectors(TClonesArray* data, DelphesBranchBase* element) {
     836  TEveElementList* container = dynamic_cast<DelphesBranchElement<TEveElementList>*>(element)->GetContainer();
     837  assert(container);
    826838  TIter itMet(data);
    827839  MissingET *MET;
Note: See TracChangeset for help on using the changeset viewer.