#ifndef __TEXPERIMENT_H
#define __TEXPERIMENT_H
#ifndef __ROOTDEFINE_H
#define __ROOTDEFINE_H
#include "rootDefine.h"
#endif
#include "TTarget.h"
#include "TBufferHeader.h"
#ifdef HIRACLASS_FLAG
#include "THiRA.h"
#endif
#ifdef S800CLASS_FLAG
#include "TS800.h"
#endif
#ifdef FOURPICLASS_FLAG
#include "TFourPi.h"
#endif
#ifdef MCPCLASS_FLAG
#include "TMcp.h"
#endif
#ifdef EPICSCLASS_FLAG
#include "TEpics.h"
#endif
#ifdef SCALERCLASS_FLAG
#include "TScaler.h"
#endif
#include <string>
#include <TChain.h>
#include <TFile.h>
#include <TBranch.h>
#include <TEventList.h>
#include <TFolder.h>
#include <TGeoElement.h>
#include <TGeoManager.h>
#include <TH2S.h>
#include <TROOT.h>
#include <TTree.h>
using namespace std;
class TExperiment : public TNamed {
private:
UShort_t *p;
TGeoManager *fGManager;
public:
TNamed *analysisState;
TNamed *expNumber;
TNamed *runTitle;
TNamed *runNumber;
TNamed *elapsedTime;
TNamed *dateCreated;
TNamed *dateEnded;
TNamed *timeCreated;
TNamed *timeEnded;
TNamed *nPauses;
TNamed *nResumes;
TNamed *nBuffers;
TNamed *nTotalEntities;
TNamed *nTotalType1Entities;
TNamed *nTotalWords;
TNamed *nTotalType1Words;
TNamed *avgEventRate;
TNamed *avgType1EventRate;
TNamed *avgWordRate;
TNamed *avgType1WordRate;
TNamed *evtSize;
TNamed *rootSize;
TNamed *runType;
TNamed *runComments;
TNamed *primaryBeam;
TNamed *secondaryBeam;
TNamed *primaryEnergy;
TNamed *secondaryEnergy;
TNamed *note;
TObjArray notesArray;
TFolder f_constants;
TFolder f_scaler;
Bool_t kHiraFill;
Bool_t kHiraCsIFill;
Bool_t kMcpFill;
Bool_t kS800Fill;
Bool_t kFourPiFill;
Bool_t kEpicsFill;
Bool_t kScalerFill;
Bool_t kElogFill;
public:
Char_t *evtFilePath;
Char_t *rootFilePath;
TBufferHeader *header;
TObjArray *fTargets;
TTarget *fTarget;
#ifdef MCPCLASS_FLAG
TMcp *mcp;
#endif
#ifdef HIRACLASS_FLAG
THiRA *hira;
TBranch *b_hira;
#endif
#ifdef S800CLASS_FLAG
TS800 *s800;
#endif
#ifdef FOURPICLASS_FLAG
TFourPi *fourpi;
#endif
#ifdef EPICSCLASS_FLAG
TEpics *epics;
#endif
#ifdef SCALERCLASS_FLAG
TScaler *scalers;
#endif
TTree *fChain;
Int_t fCurrent;
private:
public:
TExperiment() { }
TExperiment(const char *name);
~TExperiment();
void AddTarget(const char *name, const char *title,
Int_t ladder, Int_t ladderPos, Double_t thickness,
Int_t Z, Int_t A);
void Calculate();
void Calibrate();
void Clear(Option_t *option="");
Bool_t ConvertEvtFile(Char_t *evtFile,Char_t *rootFile,
Option_t *nBufs="0");
Bool_t ConvertEvtFile(Char_t *evtFileList);
void CreateFolders();
void DumpInfo();
void DumpClassInfo();
void InitClass();
void InitTree(TTree *itree);
Long64_t LoadTree(Long64_t entry);
void SetTarget(const char *targetName);
Bool_t SetEventFilePath(Char_t *path);
Bool_t SetExperimentNumber(Char_t *number);
Bool_t SetRootFilePath(Char_t *path);
template <class T> TH2F* DrawSummary(TH2F* h,TBranch* b,T *d,
Int_t c,Float_t range,
Option_t *eventList = "");
ClassDef(TExperiment,7)
};
template<class T>
TH2F* TExperiment::DrawSummary(TH2F* h, TBranch* b, T *d, Int_t c,
Float_t range, Option_t *eventList)
{
if(!fChain){ printf("TTree or TChain has not been initialized!!!\n"); return 0;}
Long64_t nEntries = fChain->GetEntries();
h->SetBins(c, 0, c, h->GetNbinsY(), 0, range);
h->Reset();
if(eventList == ""){
for (Long64_t jentry=0; jentry<nEntries; jentry++) {
Long64_t ientry = LoadTree(jentry);
if (ientry < 0) break;
b->GetEntry(ientry);
for(Int_t i=0; i<c; i++) {
if (d[i]>0) h->Fill(i, d[i]);
}
}
}else {
TEventList *list = (TEventList*)gDirectory->Get(eventList);
for (Long64_t jentry=0; jentry<list->GetN(); jentry++) {
Long64_t ientry = LoadTree(jentry);
if (ientry < 0) break;
b->GetEntry(list->GetEntry(jentry));
for(Int_t i=0; i<c; i++) {
if (d[i]>0) h->Fill(i, d[i]);
}
}
}
h->Draw("COLZ");
return h;
}
#endif
Last change: Tue Dec 16 22:01:06 2008
Last generated: 2008-12-16 22:01
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.