#ifndef __HPARTICLEEVTINFO_H__
#define __HPARTICLEEVTINFO_H__
#include "TObject.h"
#define MAXSECTOR 6
#define MAXIOSEG 2
class HParticleEvtInfo : public TObject
{
private:
Int_t aRichMult [MAXSECTOR];
Int_t aRichCorrMult [MAXSECTOR];
Int_t aRichClusMult [MAXSECTOR];
Int_t aMdcClusMult [MAXSECTOR][MAXIOSEG];
Int_t aMdcSegFittedMult [MAXSECTOR][MAXIOSEG];
Int_t aMdcSegUnfittedMult [MAXSECTOR][MAXIOSEG];
Int_t aTofMult [MAXSECTOR];
Int_t aShowerMult [MAXSECTOR];
Int_t aRpcMult [MAXSECTOR];
Int_t aRpcMultHit [MAXSECTOR];
Int_t aTofMultCut [MAXSECTOR];
Int_t aRpcMultCut [MAXSECTOR];
Int_t aRpcMultHitCut [MAXSECTOR];
Int_t aParticleCandMult [MAXSECTOR];
Int_t aSelectedParticleCandMult[MAXSECTOR];
Int_t aPrimaryParticleCandMult [MAXSECTOR];
Short_t aMdcWires [MAXSECTOR][4][6];
Short_t aMdcWiresUnused [MAXSECTOR][4][6];
Short_t aMdcWiresRaw [MAXSECTOR][4][6];
Short_t aMdcFlashWires [MAXSECTOR][4];
Short_t aMdcDeltaElWires [MAXSECTOR][4];
Int_t nFWallMult;
Double_t fFWallVector;
Double_t fRPlanePhi;
Float_t fwallPhiA;
Float_t fwallPhiB;
Float_t fwallPhiAB;
Float_t fwallNA;
Float_t fwallNB;
UInt_t fEventSelector;
Float_t fMeanMult;
Float_t fMeanMIPSMult;
Float_t fMeanLEPMult;
Float_t fMeanMultSec [6];
Float_t fMeanMIPSMultSec[6];
Float_t fMeanLEPMultSec [6];
Float_t fSigmaMult;
Float_t fSigmaMIPSMult;
Float_t fSigmaLEPMult;
Float_t fSigmaMultSec [6];
Float_t fSigmaMIPSMultSec[6];
Float_t fSigmaLEPMultSec [6];
public:
HParticleEvtInfo(void);
~HParticleEvtInfo(void) {}
void setRichMult (const Int_t m[MAXSECTOR]) { for (Int_t s = 0; s < MAXSECTOR; ++s) aRichMult [s] = m[s]; }
void setRichCorrMult (const Int_t m[MAXSECTOR]) { for (Int_t s = 0; s < MAXSECTOR; ++s) aRichCorrMult [s] = m[s]; }
void setRichClusMult (const Int_t m[MAXSECTOR]) { for (Int_t s = 0; s < MAXSECTOR; ++s) aRichClusMult [s] = m[s]; }
void setTofMult (const Int_t m[MAXSECTOR]) { for (Int_t s = 0; s < MAXSECTOR; ++s) aTofMult [s] = m[s]; }
void setRpcMult (const Int_t m[MAXSECTOR]) { for (Int_t s = 0; s < MAXSECTOR; ++s) aRpcMult [s] = m[s]; }
void setRpcMultHit (const Int_t m[MAXSECTOR]) { for (Int_t s = 0; s < MAXSECTOR; ++s) aRpcMultHit [s] = m[s]; }
void setTofMultCut (const Int_t m[MAXSECTOR]) { for (Int_t s = 0; s < MAXSECTOR; ++s) aTofMultCut [s] = m[s]; }
void setRpcMultCut (const Int_t m[MAXSECTOR]) { for (Int_t s = 0; s < MAXSECTOR; ++s) aRpcMultCut [s] = m[s]; }
void setRpcMultHitCut (const Int_t m[MAXSECTOR]) { for (Int_t s = 0; s < MAXSECTOR; ++s) aRpcMultHitCut [s] = m[s]; }
void setShowerMult (const Int_t m[MAXSECTOR]) { for (Int_t s = 0; s < MAXSECTOR; ++s) aShowerMult [s] = m[s]; }
void setEmcMult (const Int_t m[MAXSECTOR]) { for (Int_t s = 0; s < MAXSECTOR; ++s) aShowerMult [s] = m[s]; }
void setParticleCandMult (const Int_t m[MAXSECTOR]) { for (Int_t s = 0; s < MAXSECTOR; ++s) aParticleCandMult [s] = m[s]; }
void setSelectedParticleCandMult(const Int_t m[MAXSECTOR]) { for (Int_t s = 0; s < MAXSECTOR; ++s) aSelectedParticleCandMult[s] = m[s]; }
void setPrimaryParticleCandMult (const Int_t m[MAXSECTOR]) { for (Int_t s = 0; s < MAXSECTOR; ++s) aPrimaryParticleCandMult [s] = m[s]; }
void setMdcClusMult(const Int_t m[MAXSECTOR][MAXIOSEG]) {
for (Int_t s = 0; s < MAXSECTOR; ++s)
for (Int_t io = 0; io < MAXIOSEG; ++io)
aMdcClusMult[s][io] = m[s][io];
}
void setMdcSegFittedMult(const Int_t m[MAXSECTOR][MAXIOSEG]) {
for (Int_t s = 0; s < MAXSECTOR; ++s)
for (Int_t io = 0; io < MAXIOSEG; ++io)
aMdcSegFittedMult[s][io] = m[s][io];
}
void setMdcSegUnfittedMult(const Int_t m[MAXSECTOR][MAXIOSEG]) {
for (Int_t s = 0; s < MAXSECTOR; ++s)
for (Int_t io = 0; io < MAXIOSEG; ++io)
aMdcSegUnfittedMult[s][io] = m[s][io];
}
void setMdcWires (Int_t s,Int_t m,Int_t l,Int_t nw) { aMdcWires [s][m][l] = nw; }
void setMdcWiresUnused (Int_t s,Int_t m,Int_t l,Int_t nw) { aMdcWiresUnused [s][m][l] = nw; }
void setMdcWiresRaw (Int_t s,Int_t m,Int_t l,Int_t nw) { aMdcWiresRaw [s][m][l] = nw; }
void setMdcFlashWires (Int_t s,Int_t m,Int_t nw) { aMdcFlashWires [s][m] = nw; }
void setMdcDeltaElWires (Int_t s,Int_t m,Int_t nw) { aMdcDeltaElWires [s][m] = nw; }
void setFWallMult (Int_t m) { nFWallMult = m; }
void setFWallVector(Double_t d) { fFWallVector = d; }
void setRPlanePhi (Double_t d) { fRPlanePhi = d; }
void setPhiA (Float_t val){ fwallPhiA = val; }
void setPhiB (Float_t val){ fwallPhiB = val; }
void setPhiAB (Float_t val){ fwallPhiAB = val; }
void setNA (Float_t val){ fwallNA = val; }
void setNB (Float_t val){ fwallNB = val; }
void setMeanMult (Float_t mean) { fMeanMult = mean; }
void setMeanMIPSMult(Float_t mean) { fMeanMIPSMult = mean; }
void setMeanLEPMult (Float_t mean) { fMeanLEPMult = mean; }
void setMeanMult (Int_t s,Float_t mean) { fMeanMultSec[s] = mean; }
void setMeanMIPSMult(Int_t s,Float_t mean) { fMeanMIPSMultSec[s] = mean; }
void setMeanLEPMult (Int_t s,Float_t mean) { fMeanLEPMultSec [s] = mean; }
void setSigmaMult (Float_t sig) { fSigmaMult = sig; }
void setSigmaMIPSMult(Float_t sig) { fSigmaMIPSMult = sig; }
void setSigmaLEPMult (Float_t sig) { fSigmaLEPMult = sig; }
void setSigmaMult (Int_t s,Float_t sig) { fSigmaMultSec[s] = sig; }
void setSigmaMIPSMult(Int_t s,Float_t sig) { fSigmaMIPSMultSec[s] = sig; }
void setSigmaLEPMult (Int_t s,Float_t sig) { fSigmaLEPMultSec [s] = sig; }
Float_t getMeanMult () { return fMeanMult ; }
Float_t getMeanMIPSMult() { return fMeanMIPSMult ; }
Float_t getMeanLEPMult () { return fMeanLEPMult ; }
Float_t getMeanMult (Int_t s) { return fMeanMultSec[s] ; }
Float_t getMeanMIPSMult(Int_t s) { return fMeanMIPSMultSec[s]; }
Float_t getMeanLEPMult (Int_t s) { return fMeanLEPMultSec [s]; }
Float_t getSigmaMult () { return fSigmaMult ; }
Float_t getSigmaMIPSMult() { return fSigmaMIPSMult ; }
Float_t getSigmaLEPMult () { return fSigmaLEPMult ; }
Float_t getSigmaMult (Int_t s) { return fSigmaMultSec[s] ; }
Float_t getSigmaMIPSMult(Int_t s) { return fSigmaMIPSMultSec[s]; }
Float_t getSigmaLEPMult (Int_t s) { return fSigmaLEPMultSec [s]; }
Int_t getRichMult (Int_t s) const { return ( s >= 0 && s < MAXSECTOR ) ? aRichMult [s] : -1; }
Int_t getRichCorrMult (Int_t s) const { return ( s >= 0 && s < MAXSECTOR ) ? aRichCorrMult [s] : -1; }
Int_t getRichClusMult (Int_t s) const { return ( s >= 0 && s < MAXSECTOR ) ? aRichClusMult [s] : -1; }
Int_t getTofMult (Int_t s) const { return ( s >= 0 && s < MAXSECTOR ) ? aTofMult [s] : -1; }
Int_t getRpcMult (Int_t s) const { return ( s >= 0 && s < MAXSECTOR ) ? aRpcMult [s] : -1; }
Int_t getRpcMultHit (Int_t s) const { return ( s >= 0 && s < MAXSECTOR ) ? aRpcMultHit [s] : -1; }
Int_t getTofMultCut (Int_t s) const { return ( s >= 0 && s < MAXSECTOR ) ? aTofMultCut [s] : -1; }
Int_t getRpcMultCut (Int_t s) const { return ( s >= 0 && s < MAXSECTOR ) ? aRpcMultCut [s] : -1; }
Int_t getRpcMultHitCut (Int_t s) const { return ( s >= 0 && s < MAXSECTOR ) ? aRpcMultHitCut [s] : -1; }
Int_t getShowerMult (Int_t s) const { return ( s >= 0 && s < MAXSECTOR ) ? aShowerMult [s] : -1; }
Int_t getEmcMult (Int_t s) const { return ( s >= 0 && s < MAXSECTOR ) ? aShowerMult [s] : -1; }
Int_t getParticleCandMult (Int_t s) const { return ( s >= 0 && s < MAXSECTOR ) ? aParticleCandMult [s] : -1; }
Int_t getSelectedParticleCandMult(Int_t s) const { return ( s >= 0 && s < MAXSECTOR ) ? aSelectedParticleCandMult[s] : -1; }
Int_t getPrimaryParticleCandMult (Int_t s) const { return ( s >= 0 && s < MAXSECTOR ) ? aPrimaryParticleCandMult [s] : -1; }
Int_t getMdcClusMult (Int_t s, Int_t io) const { return ( s >= 0 && s < MAXSECTOR && io >= 0 && io < MAXIOSEG ) ? aMdcClusMult [s][io] : -1; }
Int_t getMdcSegFittedMult (Int_t s, Int_t io) const { return ( s >= 0 && s < MAXSECTOR && io >= 0 && io < MAXIOSEG ) ? aMdcSegFittedMult [s][io] : -1; }
Int_t getMdcSegUnfittedMult (Int_t s, Int_t io) const { return ( s >= 0 && s < MAXSECTOR && io >= 0 && io < MAXIOSEG) ? aMdcSegUnfittedMult[s][io] : -1; }
Int_t getSumRichMult() const {
Int_t sum = 0;
for (Int_t s = 0; s < MAXSECTOR; ++s ) sum += aRichMult[s];
return sum;
}
Int_t getSumRichCorrMult() const {
Int_t sum = 0;
for (Int_t s = 0; s < MAXSECTOR; ++s ) sum += aRichCorrMult[s];
return sum;
}
Int_t getSumRichClusMult() const {
Int_t sum = 0;
for (Int_t s = 0; s < MAXSECTOR; ++s ) sum += aRichClusMult[s];
return sum;
}
Int_t getSumTofMult() const {
Int_t sum = 0;
for (Int_t s = 0; s < MAXSECTOR; ++s ) sum += aTofMult[s];
return sum;
}
Int_t getSumRpcMult() const {
Int_t sum = 0;
for (Int_t s = 0; s < MAXSECTOR; ++s ) sum += aRpcMult[s];
return sum;
}
Int_t getSumRpcMultHit() const {
Int_t sum = 0;
for (Int_t s = 0; s < MAXSECTOR; ++s ) sum += aRpcMultHit[s];
return sum;
}
Int_t getSumTofMultCut() const {
Int_t sum = 0;
for (Int_t s = 0; s < MAXSECTOR; ++s ) sum += aTofMultCut[s];
return sum;
}
Int_t getSumRpcMultCut() const {
Int_t sum = 0;
for (Int_t s = 0; s < MAXSECTOR; ++s ) sum += aRpcMultCut[s];
return sum;
}
Int_t getSumRpcMultHitCut() const {
Int_t sum = 0;
for (Int_t s = 0; s < MAXSECTOR; ++s ) sum += aRpcMultHitCut[s];
return sum;
}
Int_t getSumShowerMult() const {
Int_t sum = 0;
for (Int_t s = 0; s < MAXSECTOR; ++s ) sum += aShowerMult[s];
return sum;
}
Int_t getSumEmcMult() const {
Int_t sum = 0;
for (Int_t s = 0; s < MAXSECTOR; ++s ) sum += aShowerMult[s];
return sum;
}
Int_t getSumParticleCandMult() const {
Int_t sum = 0;
for (Int_t s = 0; s < MAXSECTOR; ++s ) sum += aParticleCandMult[s];
return sum;
}
Int_t getSumSelectedParticleCandMult() const {
Int_t sum = 0;
for (Int_t s = 0; s < MAXSECTOR; ++s ) sum += aSelectedParticleCandMult[s];
return sum;
}
Int_t getSumPrimaryParticleCandMult() const {
Int_t sum = 0;
for (Int_t s = 0; s < MAXSECTOR; ++s ) sum += aPrimaryParticleCandMult[s];
return sum;
}
Int_t getSumMdcClusMult(Int_t io) const {
Int_t sum = 0;
for (Int_t s = 0; s < MAXSECTOR; ++s ) sum += aMdcClusMult[s][io];
return sum;
}
Int_t getSumMdcSegFittedMult(Int_t io) const {
Int_t sum = 0;
for (Int_t s = 0; s < MAXSECTOR; ++s ) sum += aMdcSegFittedMult[s][io];
return sum;
}
Int_t getSumMdcSegUnfittedMult(Int_t io) const {
Int_t sum = 0;
for (Int_t s = 0; s < MAXSECTOR; ++s ) sum += aMdcSegUnfittedMult[s][io];
return sum;
}
Int_t getMdcAllWiresLay (Int_t s,Int_t m,Int_t l) { return aMdcWires[s][m][l]+aMdcWiresUnused[s][m][l]; }
Int_t getMdcAllWiresMod (Int_t s,Int_t m) { Int_t sum = 0; for(Int_t l=0;l<6;l++) sum += aMdcWires[s][m][l] + aMdcWiresUnused[s][m][l]; return sum; }
Int_t getMdcAllWiresSec (Int_t s) { Int_t sum = 0; for(Int_t m=0;m<4;m++) for(Int_t l=0;l<6;l++) sum += aMdcWires[s][m][l] + aMdcWiresUnused[s][m][l]; return sum; }
Int_t getMdcAllWires () { Int_t sum = 0; for(Int_t s=0;s<6;s++) for(Int_t m=0;m<4;m++) for(Int_t l=0;l<6;l++) sum += aMdcWires[s][m][l] + aMdcWiresUnused[s][m][l]; return sum; }
Int_t getMdcWiresLay (Int_t s,Int_t m,Int_t l) { return aMdcWires[s][m][l]; }
Int_t getMdcWiresMod (Int_t s,Int_t m) { Int_t sum = 0; for(Int_t l=0;l<6;l++) sum += aMdcWires[s][m][l]; return sum; }
Int_t getMdcWiresSec (Int_t s) { Int_t sum = 0; for(Int_t m=0;m<4;m++) for(Int_t l=0;l<6;l++) sum += aMdcWires[s][m][l]; return sum; }
Int_t getMdcWires () { Int_t sum = 0; for(Int_t s=0;s<6;s++) for(Int_t m=0;m<4;m++) for(Int_t l=0;l<6;l++) sum += aMdcWires[s][m][l]; return sum; }
Int_t getMdcWiresUnusedLay (Int_t s,Int_t m,Int_t l) { return aMdcWiresUnused[s][m][l]; }
Int_t getMdcWiresUnusedMod (Int_t s,Int_t m) { Int_t sum = 0; for(Int_t l=0;l<6;l++) sum += aMdcWiresUnused[s][m][l]; return sum; }
Int_t getMdcWiresUnusedSec (Int_t s) { Int_t sum = 0; for(Int_t m=0;m<4;m++) for(Int_t l=0;l<6;l++) sum += aMdcWiresUnused[s][m][l]; return sum; }
Int_t getMdcWiresUnused () { Int_t sum = 0; for(Int_t s=0;s<6;s++) for(Int_t m=0;m<4;m++) for(Int_t l=0;l<6;l++) sum += aMdcWiresUnused[s][m][l]; return sum; }
Int_t getMdcWiresRawLay (Int_t s,Int_t m,Int_t l) { return aMdcWiresRaw[s][m][l]; }
Int_t getMdcWiresRawMod (Int_t s,Int_t m) { Int_t sum = 0; for(Int_t l=0;l<6;l++) sum += aMdcWiresRaw[s][m][l]; return sum; }
Int_t getMdcWiresRawSec (Int_t s) { Int_t sum = 0; for(Int_t m=0;m<4;m++) for(Int_t l=0;l<6;l++) sum += aMdcWiresRaw[s][m][l]; return sum; }
Int_t getMdcWiresRaw () { Int_t sum = 0; for(Int_t s=0;s<6;s++) for(Int_t m=0;m<4;m++) for(Int_t l=0;l<6;l++) sum += aMdcWiresRaw[s][m][l]; return sum; }
Int_t getMdcFlashWiresMod (Int_t s,Int_t m) { return aMdcFlashWires[s][m]; }
Int_t getMdcFlashWiresSec (Int_t s) { Int_t sum = 0; for(Int_t m=0;m<4;m++) sum += aMdcFlashWires[s][m]; return sum; }
Int_t getMdcFlashWires () { Int_t sum = 0; for(Int_t s=0;s<6;s++) for(Int_t m=0;m<4;m++) sum += aMdcFlashWires[s][m]; return sum; }
Int_t getMdcFlashWiresSeg (Int_t s,Int_t g) const {
Int_t m1 = g*2;
return aMdcFlashWires[s][m1]+aMdcFlashWires[s][m1+1];
}
Int_t getMaxNrFlashWiresPerSeg (void) const {
Int_t maxn = 0;
for(Int_t s=0;s<MAXSECTOR;s++) for(Int_t g=0;g<2;g++) {
Int_t n = getMdcFlashWiresSeg(s,g);
if(n > maxn) maxn = n;
}
return maxn;
}
Int_t getMdcDeltaElWiresMod (Int_t s,Int_t m) { return aMdcDeltaElWires[s][m]; }
Int_t getMdcDeltaElWiresSec (Int_t s) { Int_t sum = 0; for(Int_t m=0;m<4;m++) sum += aMdcDeltaElWires[s][m]; return sum; }
Int_t getMdcDeltaElWires () { Int_t sum = 0; for(Int_t s=0;s<6;s++) for(Int_t m=0;m<4;m++) sum += aMdcDeltaElWires[s][m]; return sum; }
Int_t getMdcDeltaElWiresSeg (Int_t s,Int_t g) const {
Int_t m1 = g*2;
return aMdcDeltaElWires[s][m1]+aMdcDeltaElWires[s][m1+1];
}
Int_t getMaxNrDeltaElWiresPerSeg (void) const {
Int_t maxn = 0;
for(Int_t s=0;s<MAXSECTOR;s++) for(Int_t g=0;g<2;g++) {
Int_t n = getMdcDeltaElWiresSeg(s,g);
if(n > maxn) maxn = n;
}
return maxn;
}
Int_t getFWallMult (void) const { return nFWallMult; }
Double_t getFWallVector(void) const { return fFWallVector; }
Double_t getRPlanePhi (void) const { return fRPlanePhi; }
Float_t getPhiA (void) const { return fwallPhiA; }
Float_t getPhiB (void) const { return fwallPhiB; }
Float_t getPhiAB (void) const { return fwallPhiAB; }
Float_t getNA (void) const { return fwallNA; }
Float_t getNB (void) const { return fwallNB; }
UInt_t getEventSelector(void) const { return fEventSelector;}
void setEventSelector(UInt_t flag){ fEventSelector=flag;}
Bool_t isGoodEvent (UInt_t flag){ return (flag==(fEventSelector&flag));}
void setSelectorBit (UInt_t flag){ fEventSelector=(fEventSelector|flag);}
void unsetSelectorBit(UInt_t flag){ fEventSelector&=~flag;}
void clearMembers(void);
ClassDef(HParticleEvtInfo, 7)
};
#endif //__HPARTICEEVTINFO_H__