Środowisko programistyczne GEANT4

Podobne dokumenty
Środowisko programistyczne GEANT4

Środowisko programistyczne GEANT4

Środowisko programistyczne GEANT4

GEANT4. Leszek Adamczyk. Interfejs użytkownika -2 Geometria -2

Środowisko programistyczne GEANT4

Środowisko programistyczne GEANT4

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

PARADYGMATY PROGRAMOWANIA Wykład 4

Programowanie 2. Język C++. Wykład 9.

Środowisko programistyczne GEANT4

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Wykład V. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14

Środowisko programistyczne GEANT4

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programowanie obiektowe

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Programowanie obiektowe

Programowanie obiektowe

GEANT4. Leszek Adamczyk. Geometria detektora

PHP 5 język obiektowy

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Zaawansowane programowanie w C++ (PCP)

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Enkapsulacja, dziedziczenie, polimorfizm

Projektowanie obiektowe oprogramowania Wykład 7 wzorce czynnościowe (2) Wiktor Zychla 2018

Zaawansowane programowanie w C++ (PCP)

Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.

Wstęp do Programowania 2

Plik klasy. h deklaracje klas

Programowanie obiektowe Wykład 7. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20

TEMAT : KLASY POLIMORFIZM

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Programowanie obiektowe

Szablony klas, zastosowanie szablonów w programach

Zaawansowane programowanie w C++ (PCP)

Środowisko programistyczne GEANT4

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Programowanie obiektowe i zdarzeniowe

Zaawansowane programowanie w C++ (PCP)

PARADYGMATY PROGRAMOWANIA Wykład 3

Wykład 5 Okna MDI i SDI, dziedziczenie

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Platformy Programistyczne Podstawy języka Java

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Algorytmy i Struktury Danych. Anna Paszyńska

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

Materiały do zajęć VII

Kurs WWW. Paweł Rajba.

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

Modelowanie Procesów Jądrowych

C++ Przeładowanie operatorów i wzorce w klasach

TEMAT : KLASY DZIEDZICZENIE

Programowanie, część I

Programowanie, część I

Wykład I. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Lista dwukierunkowa - przykład implementacji destruktorów

Programowanie obiektowe w C++ Wykład 12

Języki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk. tel: Konsultacje: piątek:

Wykład 4. Klasa List Kolejki Stosy Słowniki

Programowanie obiektowe w VB cz 2

Dziedziczenie & W slajdach są materiały zapożyczone z

PARADYGMATY PROGRAMOWANIA Wykład 2

The Graphics View Framework. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. he Graphics View Framework - architektura

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Programowanie 2. Język C++. Wykład 3.

Podstawy programowania obiektowego

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

UML a kod. C++, Java i C#

Metodyki zwinne wytwarzania oprogramowania

Wskaźniki do funkcji i metod

KLASY cz.1. Dorota Pylak

Programowanie obiektowe

Klasy i obiekty cz II

Polimorfizm, metody wirtualne i klasy abstrakcyjne

ATD. Wykład 8. Programowanie (język C++) abstrakcyjny typ danych. Abstrakcyjne typy danych (ATD) Metody czysto wirtualne. Definicje i uwagi:

Imi i nazwisko... Egzamin - Programowanie Obiektowe II rok informatyki, studia pierwszego stopnia, niestacjonarne Termin zerowy

Abstrakcyjny typ danych

KLASY, INTERFEJSY, ITP

Programowanie Obiektowew języku C++ Zadania L9

Rzutowanie i konwersje

Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Programowanie obiektowe i C++ dla matematyków

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Szablony funkcji i szablony klas

Programowanie 2. Język C++. Wykład Relacje między klasami, klasy zagnieŝdŝone, klasy lokalne

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Podstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Do czego służą klasy?

Transkrypt:

Środowisko programistyczne GEANT4 Leszek Adamczyk Wydział Fizyki i Informatyki Stosowanej Akademia Górniczo-Hutnicza Wykłady w semestrze zimowym 2013/2014

G4VHit - przykład Przykład z warsztatów implementacji klasy wyprowadzonej z klasy G4VHit Wyprowadzimy klasę np. MyPhotonHit zawierajac a informację o energii i pozycji każdego fotonu docierajacego do sfery otaczajacej tarczę berylowa. Klasa G4VHit zawiera dwie czysto wirtualne metody Draw oraz Print które można zaimplementować jeśli chce się np. wizualizować hity

MyPhotonHit.hh class MyPhotonHit : public G4VHit { public: // Constructor MyPhotonHit(); // Destructor virtual ~MyPhotonHit(); // Methods // void Draw() // void Print() // Photon energy inline void SetEnergy(G4double energy) {fenergy = energy;} inline G4double GetEnergy() const {return fenergy;} // Photon position inline void SetPosition(G4ThreeVector position) {fposition = position;} inline G4ThreeVector GetPosition() const {return fposition;} private: //Data Members G4double fenergy; G4ThreeVector fposition; };

MyPhotonHit.cc #include "MyPhotonHit.hh" MyPhotonHit::MyPhotonHit() :fenergy(0),fposition() {} MyPhotonHit::~MyPhotonHit() {}

G4VSensitiveDetector Aby zaimplementować własna klasę SensitiveDetector użytkownik musi: w konstruktorze dodać nazwy HitCollection s do wektora collectionname oraz dokonać instancji klasy G4VSensitiveDetector utworzyć i dopisać HitCollection do obiektu G4HCOfThisEvent w jednej z dwóch metod Initialize() lub EndOfEvent() zaimplementować metodę ProcessHits(). W niej tworzymy hity oraz dodajemy je do HitCollection

MyPhotonSD.hh class MyPhotonSD : public G4VSensitiveDetector { public: // Constructor MyPhotonSD(const G4String& name); // Destructor virtual ~MyPhotonSD(); // Methods void Initialize(G4HCofThisEvent* hitscollectionofthisevent); G4bool ProcessHits(G4Step* astep,g4touchablehistory* history); void EndOfEvent(G4HCofThisEvent* hitscollectionofthisevent); private: }; // Data members G4THitsCollection<MyPhotonHit>* fphotoncollection; G4int fphotoncollectionid;

MyPhotonSD.cc MyPhotonSD::MyPhotonSD(const G4String& name) :G4VSensitiveDetector(name) { collectionname.insert("photoncollection"); fphotoncollectionid = -1; } MyPhotonSD::~MyPhotonSD() {} void MyPhotonSD::Initialize(G4HCofThisEvent* hitscollectionofthisevent) { // Create a new collection fphotoncollection = new G4THitsCollection<MyPhotonHit> (SensitiveDetectorName, collectionname[0]); if( fphotoncollectionid < 0) fphotoncollectionid = G4SDManager::GetSDMpointer() ->GetCollectionID(fPhotonCollection); // Add collection to the events hitscollectionofthisevent->addhitscollection (fphotoncollectionid,fphotoncollection); }

MyPhotonSD.cc G4bool MyPhotonSD::ProcessHits(G4Step* astep, G4TouchableHistory*) { // Create a new hit MyPhotonHit* ahit = new MyPhotonHit(); // Get energy and position G4double energy = astep->gettrack()->gettotalenergy(); G4ThreeVector position = astep->gettrack()->getposition(); // Set energy and position ahit->setenergy(energy); ahit->setposition(position); // Insert hit into the collection fphotoncollection->insert(ahit); }

G4Step Niektóre metody klasy G4Step umożliwiajace dostęp do informacji o symulacji: GetTrack() - dostęp do informacji o czastce która generuje krok; GetPre(Post)StepPoint() - dostęp do informacji geometrycznych o poczatku i końcu kroku (pozycja, czas, materiał,...) GetStepLength() - długość kroku; GetTotalEnergyDeposit() - całkowity depozyt energii w materiale podczas wykonywania kroku; GetDeltaXXXXX() - informacja o zmianie pędu, energii, pozycji,... czastki generujacej krok IsFirst(Last)StepInVolume() - wskazuje czy aktualny krok jest pierwszym(ostatnim) w danym obszarze detektora.

G4HCOfThisEvent Obiekt klasy G4HCOfThisEvent zawiera wszystkie kolekcje hitów dla danego przypadku. Wskaźnik do danej kolekcji może mieć wartość NULL jeśli dana kolekcja nie została utworzona. Kolekcje hitów sa dostępne za pomoca wskaźników do klasy bazowej G4VHitsCollection, zatem musza być rzutowane na konkretny typ danej kolekcji. Numer identyfikacyjny danej kolekcji jest unikalny i taki sam dla każdego przypadku. Można go uzyskać za pomoca funkcji: SDManager::GetCollectionID(nazwaSD/nazwaKolekcji) SDManager::GetCollectionID(G4VHitsCollection*)