#ifndef HSHOWERCHECKIPU_H
#define HSHOWERCHECKIPU_H
#include "hreconstructor.h"
#include "TString.h"
class HIterator;
class TH1;
class TFile;
class HQAMaker;
class HShowerHitIPUAddres
{
public:
HShowerHitIPUAddres(Char_t s = 0, Char_t x = 0, Char_t y = 0)
: cS(s), cX(x), cY(y), bMask(kFALSE) {}
void set(Char_t s = 0, Char_t x = 0, Char_t y = 0)
{ cS = s; cX = x; cY = y; bMask = kFALSE; }
void print(void) const { printf("%s\n", toString()); }
inline const Char_t* toString(void) const;
void mask(void) { bMask = kTRUE; }
Bool_t isMasked(void) { return bMask; }
void clearMask(void) { bMask = kFALSE; }
Char_t cS;
Char_t cX;
Char_t cY;
Bool_t bMask;
};
inline const Char_t* HShowerHitIPUAddres::toString(void) const
{
static Char_t s[100];
sprintf(s, "%s S: %d X: %2d Y: %2d", (bMask) ? "M" : " ", cS, cX, cY);
return s;
}
inline Bool_t operator==(const HShowerHitIPUAddres &l,
const HShowerHitIPUAddres &r)
{
return ((l.cS == r.cS) && (l.cX == r.cX) && (l.cY == r.cY)
&& (l.bMask == r.bMask));
}
class HShowerCheckIPU : public HReconstructor
{
public:
HShowerCheckIPU(Int_t iRatio = 100,
const Char_t *pOut = "");
HShowerCheckIPU(const Text_t name[],const Text_t title[],
Int_t iRatio = 100, const Char_t *pOut = "");
~HShowerCheckIPU(void);
virtual Bool_t init(void);
virtual Int_t execute(void);
virtual Bool_t finalize(void);
void setInfoRate(Int_t iRate) { iInfoRatio = iRate; }
Int_t getInfoRate(void) const { return iInfoRatio; }
void setVerbose(Int_t i) { iVerbose = i; }
Int_t getVerbose(void) const { return iVerbose; }
void setOutputFile(const Char_t *pName)
{ sOutputFile = pName; }
const Char_t* getOutputFile(void) const
{ return sOutputFile.Data(); }
void setHistEvents(Int_t i) { iHistEvents = i; }
Int_t getHistEvents(void) const { return iHistEvents; }
Int_t getEvents(void) const { return iEvents; }
Int_t getErrors(void) const { return iErrors; }
inline const TH1* getHist(UInt_t i) const;
const TH1* getHistCorrX(void) const
{ return getHist(kHistCorrX); }
const TH1* getHistCorrY(void) const
{ return getHist(kHistCorrY); }
const TH1* getHistNoCorrAna(void) const
{ return getHist(kHistNoCorrAna); }
const TH1* getHistNoCorrIPU(void) const
{ return getHist(kHistNoCorrIPU); }
const TH1* getHistDoubleAna(void) const
{ return getHist(kHistDoubleAna); }
const TH1* getHistDoubleIPU(void) const
{ return getHist(kHistDoubleIPU); }
Bool_t writeHistograms(void);
void dumpEvent(void) const;
void writeInfo(void) const;
void setQA(HQAMaker *p) { pQA = p; }
HQAMaker* getQA(void) const { return pQA; }
Bool_t putHistograms(TList *pList);
protected:
enum {
kHistCorrX = 0,
kHistCorrY,
kHistCorr,
kHistNoCorrAna,
kHistNoCorrIPU,
kHistNoCorrXY,
kHistDoubleAna,
kHistDoubleIPU,
kHistIPUInEvent,
kHistAnaInEvent,
kHistErrorInEvent,
kHistMax,
kMaxAna = 6000,
kMaxIPU = 6000
};
HIterator *pitAna;
HIterator *pitIPU;
HShowerHitIPUAddres asAna[kMaxAna];
HShowerHitIPUAddres asIPU[kMaxIPU];
Int_t iAnaNum;
Int_t iIPUNum;
TH1 *ahOut[kHistMax];
TString sOutputFile;
Int_t iInfoRatio;
Int_t iVerbose;
Int_t iEvents;
Int_t iErrors;
Bool_t bInitOk;
Int_t iHistEvents;
HQAMaker *pQA;
void setDefault(Int_t iRatio, const Char_t *pOut);
void checkDoubles(void);
Int_t checkDoubles(HShowerHitIPUAddres *pArr,
Int_t iMax, Int_t iType);
void matchHits(void);
ClassDef(HShowerCheckIPU, 0)
};
inline const TH1* HShowerCheckIPU::getHist(UInt_t i) const
{
if(i >= kHistMax)
{
Error("getHist", "Out of bounds: %d / %d\n", i, kHistMax);
return NULL;
}
return ahOut[i];
}
#undef DEFAULT_OPTIONS
#endif //HSHOWERCHECKIPU_H
Last change: Sat May 22 13:13:20 2010
Last generated: 2010-05-22 13:13
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.