Конструктор и деструктор
Среди методов класса есть два специальных, которые называются конструктором и деструктором. Имя конструктора всегда совпадает с именем класса, а имя деструктора - это тильда (~) плюс имя класса. Конструктор вызывается автоматически при создании экземпляра класса, деструктор - при его уничтожении. Основные свойства: 1. Конструктор представляет собой метод класса, который облегчает вашим программам инициализацию элементов данных класса. 2. Конструктор имеет такое же имя, как и класс. 3. Конструктор не имеет возвращаемого значения. 4. Каждый раз, когда ваша программа создает переменную класса, C++ вызывает конструктор класса, если конструктор существует. 5. Многие объекты могут распределять память для хранения информации; когда вы уничтожаете такой объект, C++ будет вызывать специальный деструктор, который может освобождать эту память, очищая ее после объекта. 6. Деструктор имеет такое же имя, как и класс, за исключением того, что вы должны предварять его имя символом тильды (~). 7. Деструктор не имеет возвращаемого значения. Конструктор класса SensitiveDetector. Он принимает в качестве параметра имя, которое имеет тип G4String. При создании объекта это записывается так: new SensitiveDetector(«a name»). Кроме того здесь же инициализируются константы, задающие верхний и нижний предел на графике.
Основная функция этого класса — ProcessHits(). Всякий раз, когда очередной шаг моделирования попадает в объем, которому принадлежит данный SensitiveDetector, вызывается эта функция.
Получаем кинетическую энергию частицы
Теперь заносим полученное значение в гистограмму. Эта задача сводится к увеличению на 1 столбца гистограммы, соответствующего данной энергии. В данном случае шкала логарифмическая
Для линейной шкалы заменятся две первые строки на
В последнюю очередь уничтожаем данную частицу, чтобы не регистрировать ее дважды.
Деструктор ~SensitiveDetector. Эта функция вызывается автоматически при удалении объекта, поэтому здесь удобно разместить вывод результатов в файл.
В Си++ работа с файлами происходит так же, как и с экраном, через потоки. Создаем поток, вывод которого направляется в файл spectrum.csv.
Записываем в файл данные в следующем формате: «энергия;число отсчетов»
|