#include "TAlEncUser.hh" #include #include "TRandom.h" #include "TArtAnaLoop.hh" #include "TArtAnaFile.hh" #include "EAnalyser.hh" #include "EWNum.hh" TAlEncUser::TAlEncUser() : TAlEncSub() {;} TAlEncUser::~TAlEncUser() { Destruct(); } void TAlEncUser::Construct() {;} bool TAlEncUser::Calculate() { // ここで新しく計算したい物理用をごにょごにょする。 // Getしたときに計算されていない量にアクセスした場合はNaNが返ってくるので、 // 特に条件別けする必要はない(NaNは数字と比較したときに必ず偽になるので注意)。 // Add(Analyser, WNum, ID, Value); fAnaLoop->Add(100, 1, 1, gRandom->Gaus()); // 単純に新しく何かぶち込むこともできる。 for(int i=0; i<144; ++i){ double quraw = fAnaLoop->Get(Analyser::NEBULA, WNum::NEBULA::QURaw, i); // 何か物理量を取ってくる。 // std::cout << "id: " << i << ", val: " << quraw << std::endl; } double quraw1 = fAnaLoop->Get(Analyser::NEBULA, WNum::NEBULA::QURaw, 1); double quraw2 = fAnaLoop->Get(Analyser::NEBULA, WNum::NEBULA::QURaw, 2); fAnaLoop->Add(100, 1, 102, quraw1-quraw2); // 他とかぶらなければ三つの添字は何でもいい。 fAnaLoop->Add(100, 2, 102, sqrt(quraw1*quraw2)); return true; } void TAlEncUser::Destruct() {;} const char* TAlEncUser::ClassName() const { return "TAlEncUser"; } static TAlEncUserFactory alencuserfactory; TAlEncUserFactory::TAlEncUserFactory() : TAlEncFactory() { // staticなオブジェクトのコンストラクタで他のクラスのstaticな関数を呼のは本当は // コンストラクトの順番が不定なのでだめなのだけれど、 // 手製のmacroは必ず後から呼ぶことになるのでok TArtAnaFile::RegisterEncFactory(100, this); } TAlEncUserFactory::~TAlEncUserFactory() {;} TAlEncSub* TAlEncUserFactory::CreateEnc() { return new TAlEncUser; }