#ifndef HQATREEMAKER_H
#define HQATREEMAKER_H
#include "TObject.h"
#define NSTART_STRIPS 64
class HQAFileInfoTree : public TObject{
public:
    TString fTFileName; 
    Int_t fTNumEvents;  
    Int_t fTYear;       
    Int_t fTDay;        
    Int_t fTHour;       
    Int_t fTMin;        
    Int_t fTSec;        
    Int_t fTEvB;        
    TString fTType;  
    Int_t fTRunId;      
    Int_t fTRefId;      
    
    HQAFileInfoTree(){
	fTNumEvents=-10000;
	fTYear     =-10000;
	fTDay      =-10000;
	fTHour     =-10000;
	fTMin      =-10000;
	fTEvB      =-10000;
	fTRunId    =-10000;
	fTRefId    =-10000;
        fTFileName = "notset";
    }
    ~HQAFileInfoTree(){}
    ClassDef(HQAFileInfoTree, 1)
};
class HQAStartTree : public TObject{
public:
    Float_t fTHitTimeMean;  
    Float_t fTHitTimeRms;   
    Float_t fTHitToNoveto;  
    Float_t fTStCalTime[NSTART_STRIPS]; 
    Float_t fTVtCalTime[NSTART_STRIPS]; 
    Float_t fTVertexX;      
    Float_t fTVertexY;      
    Float_t fTVertexZ;      
    HQAStartTree(){
	fTHitTimeMean=-10000.0;
	fTHitTimeRms=-10000.0;
	fTHitToNoveto=-10000.0;
	fTVertexX=-10000.0;
	fTVertexY=-10000.0;
	fTVertexZ=-10000.0;
	for(Int_t i=0; i<NSTART_STRIPS;i++)
	{
	    fTStCalTime[i]=-10000.0;
	    fTVtCalTime[i]=-10000.0;
	}
    }
    ~HQAStartTree(){}
    ClassDef(HQAStartTree, 1)
};
class HQARichTree : public TObject{
public:
    Float_t fTAvChargeMax[6];  
    Float_t fTNumPadsMax[6];   
    Float_t fTNumRingsMax[6];  
    Float_t fTAvChargeMean[6];  
    Float_t fTNumPadsMean[6];   
    Float_t fTNumRingsMean[6];  
    Float_t fTHVMean[6];        
    Float_t fTHVSigma[6];       
    Float_t fTHVMin[6];         
    Float_t fTHVMax[6];         
    Float_t fTHVNData[6];       
    HQARichTree(){
	for(Int_t i=0; i<6;i++)
	{
	    fTAvChargeMax[i]=-10000.0;
	    fTNumPadsMax[i]=-10000.0;
	    fTNumRingsMax[i]=-10000.0;
	    fTAvChargeMean[i]=-10000.0;
	    fTNumPadsMean[i]=-10000.0;
	    fTNumRingsMean[i]=-10000.0;
            fTHVMean[i]=-10.0;
	    fTHVSigma[i]=-10.0;
	    fTHVMin[i]=-10.0;
	    fTHVMax[i]=-10.0;
	    fTHVNData[i]=-10.0;
	}
    }
    ~HQARichTree(){}
    ClassDef(HQARichTree, 1)
};
class HQAMdcTree : public TObject{
public:
    Float_t fTMboCounts[6][4][16];      
    Float_t fTLayerCounts[6][4][6];     
    Float_t fTCountsRaw[6][4];          
    Float_t fTCountsCal[6][4];          
    Float_t fTToTCalMean[6][4][6];      
    Float_t fTToTCalMax[6][4][6];       
    Float_t fTTime1CalMean[6][4][6];    
    Float_t fTTime1CalMax[6][4][6];     
    Float_t fTSegCounter[6][2];         
    Float_t fTSegCounterFit[6][2];      
    Float_t fTSegChi2Mean[6][2];        
    Float_t fTSegChi2Max[6][2];         
    
    Float_t fTHVMean[6][4][12];         
    Float_t fTHVSigma[6][4][12];        
    Float_t fTHVMin[6][4][12];          
    Float_t fTHVMax[6][4][12];          
    Float_t fTHVNData[6][4][12];        
    HQAMdcTree(){
	for(Int_t i=0; i<6;i++)
	{
	    for(Int_t j=0; j<2; j++)
	    {
		fTSegCounter[i][j]=0.0;
		fTSegCounterFit[i][j]=0.0;
		fTSegChi2Mean[i][j]=-10.0;
                fTSegChi2Max[i][j]=-10.0;
	    }
	    for(Int_t j=0; j<4; j++)
	    {
		for(Int_t k=0; k<16; k++)
		{   
		    fTMboCounts[i][j][k]=0.0;
		}
                for(Int_t k=0; k<6; k++)
		{   
		    fTLayerCounts[i][j][k]=0.0;
		    fTToTCalMean[i][j][k]=-10.0;
		    fTToTCalMax[i][j][k]=-10.0;
		    fTTime1CalMean[i][j][k]=-10.0;
                    fTTime1CalMax[i][j][k]=-10.0;
		}
		fTCountsRaw[i][j]=0.0;
                fTCountsCal[i][j]=0.0;
	    }
	}
	for(Int_t i=0; i<6; i++)
	{
	    for(Int_t j=0; j<4; j++)
	    {
		for(Int_t k=0; k<12; k++)
		{
		    fTHVMean[i][j][k]=-10.0;
		    fTHVSigma[i][j][k]=-10.0;
		    fTHVMin[i][j][k]=-10.0;
		    fTHVMax[i][j][k]=-10.0;
		    fTHVNData[i][j][k]=-10.0;
		}
	    }
	}
    }
    ~HQAMdcTree(){}
    ClassDef(HQAMdcTree, 1)
};
class HQATofTree : public TObject{
public:
    Float_t fTHitMultiMax[6];   
    Float_t fTHitMultiMean[6];  
    Float_t fTHitTotMultiMax;   
    Float_t fTHitTotMultiMax2;  
    Float_t fTHitTotMultiMean;  
    Float_t fTHits[6];          
    Float_t fTHitTofMax;        
    Float_t fTHitTofMean;       
    HQATofTree(){
	for(Int_t i=0; i<6;i++)
	{
	    fTHitMultiMax[i]=-10.0;
	    fTHitMultiMean[i]=-10.0;
            fTHits[i]=0.0;
	    
	}
	fTHitTotMultiMax=-10.0;
        fTHitTotMultiMax2=-10.0;
	fTHitTotMultiMean=-10.0;
	fTHitTofMax=-10.0;
        fTHitTofMean=-10.0;
    }
    ~HQATofTree(){}
    ClassDef(HQATofTree, 1)
};
class HQARpcTree : public TObject{
public:
    Float_t fTHitMultiMax[6];   
    Float_t fTHitMultiMean[6];  
    Float_t fTHitTotMultiMax;   
    Float_t fTHitTotMultiMax2;  
    Float_t fTHitTotMultiMean;  
    Float_t fTHits[6];          
    Float_t fTHitTofMax;        
    Float_t fTHitTofMean;       
    HQARpcTree(){
	for(Int_t i=0; i<6;i++)
	{
	    fTHitMultiMax[i]=-10.0;
	    fTHitMultiMean[i]=-10.0;
            fTHits[i]=0.0;
	    
	}
	fTHitTotMultiMax=-10.0;
        fTHitTotMultiMax2=-10.0;
	fTHitTotMultiMean=-10.0;
	fTHitTofMax=-10.0;
        fTHitTofMean=-10.0;
    }
    ~HQARpcTree(){}
    ClassDef(HQARpcTree, 1)
};
class HQAShowerTree : public TObject{
public:
    Float_t fTHitMultiMax[6][3];   
    Float_t fTHitMultiMean[6][3];  
    Float_t fTHitChargeMax[6][3];   
    Float_t fTHitChargeMean[6][3];  
    HQAShowerTree(){
	for(Int_t i=0; i<6;i++)
	{
	    for(Int_t j=0; j<3; j++)
	    {
		fTHitMultiMax[i][j]=-10.0;
		fTHitMultiMean[i][j]=-10.0;
		fTHitChargeMax[i][j]=-10.0;
                fTHitChargeMean[i][j]=-10.0;
	    }
	}
    }
    ~HQAShowerTree(){}
    ClassDef(HQAShowerTree, 1)
};
class HQAPhysicsTree : public TObject{
public:
   
   Float_t fTMass_proton;              
   Float_t fTMass_pip;                 
   Float_t fTMass_pim;                 
   Float_t fTMass_proton_RPC;          
   Float_t fTMass_pip_RPC;             
   Float_t fTMass_pim_RPC;             
   Float_t fTMass_proton_TOF;          
   Float_t fTMass_pip_TOF;             
   Float_t fTMass_pim_TOF;             
   Float_t fTChi2_proton;              
   Float_t fTChi2_pip;                 
   Float_t fTChi2_pim;                 
   Float_t fTChi2_proton_RPC;          
   Float_t fTChi2_pip_RPC;             
   Float_t fTChi2_pim_RPC;             
   Float_t fTChi2_proton_TOF;          
   Float_t fTChi2_pip_TOF;             
   Float_t fTChi2_pim_TOF;             
   Float_t fTMetaMatchTofMean[6];         
   Float_t fTMetaMatchTofMax[6];          
   Float_t fTMetaMatchTofMax2[6];         
   Float_t fTMetaMatchRpcMean[6];         
   Float_t fTMetaMatchRpcMax[6];          
   Float_t fTMetaMatchRpcMax2[6];         
   Float_t fTMetaMatchShwMean[6];         
   Float_t fTMetaMatchShwMax[6];          
   Float_t fTMetaMatchShwMax2[6];         
   Float_t fTMultiMax[6][2];              
   Float_t fTMultiMean[6][2];             
   Float_t fTMultiMaxSelect[6][2];        
   Float_t fTMultiMeanSelect[6][2];       
   Float_t fTTimeLepSumSys0Mean;          
   Float_t fTTimeLepSumSys0Max;           
   Float_t fTTimeLepSumSys0Sig;           
   Float_t fTTimeLepStaSys0Mean[NSTART_STRIPS];       
   Float_t fTTimeLepStaSys0Max[NSTART_STRIPS];        
   Float_t fTTimeLepStaSys0Sig[NSTART_STRIPS];        
   Float_t fTTimeLepSumSys1Mean;          
   Float_t fTTimeLepSumSys1Max;           
   Float_t fTTimeLepSumSys1Sig;           
   Float_t fTTimeLepStaSys1Mean[NSTART_STRIPS];       
   Float_t fTTimeLepStaSys1Max[NSTART_STRIPS];        
   Float_t fTTimeLepStaSys1Sig[NSTART_STRIPS];        
   Float_t fTTimePiSumSys0Mean;           
   Float_t fTTimePiSumSys0Max;            
   Float_t fTTimePiSumSys0Sig;            
   Float_t fTTimePiStaSys0Mean[NSTART_STRIPS];        
   Float_t fTTimePiStaSys0Max[NSTART_STRIPS];         
   Float_t fTTimePiStaSys0Sig[NSTART_STRIPS];         
   Float_t fTTimePiSumSys1Mean;           
   Float_t fTTimePiSumSys1Max;            
   Float_t fTTimePiSumSys1Sig;            
   Float_t fTTimePiStaSys1Mean[NSTART_STRIPS];        
   Float_t fTTimePiStaSys1Max[NSTART_STRIPS];         
   Float_t fTTimePiStaSys1Sig[NSTART_STRIPS];         
   Float_t fTTimePiSumSys0FitMean;        
   Float_t fTTimePiSumSys1FitMean;        
   Float_t fTTimePiStaSys0FitMean[NSTART_STRIPS];     
   Float_t fTTimePiStaSys1FitMean[NSTART_STRIPS];     
   Float_t fTTofdEdxMean;                 
   Float_t fTTofdEdxMax;                  
    HQAPhysicsTree(){
	fTMass_proton=-10000.0;
	fTMass_pip=-10000.0;
	fTMass_pim=-10000.0;
	fTMass_proton_RPC=-10000.0;
	fTMass_pip_RPC=-10000.0;
	fTMass_pim_RPC=-10000.0;
	fTMass_proton_TOF=-10000.0;
	fTMass_pip_TOF=-10000.0;
	fTMass_pim_TOF=-10000.0;
	fTChi2_proton=-10000.0;
	fTChi2_pip=-10000.0;
	fTChi2_pim=-10000.0;
	fTChi2_proton_RPC=-10000.0;
	fTChi2_pip_RPC=-10000.0;
	fTChi2_pim_RPC=-10000.0;
	fTChi2_proton_TOF=-10000.0;
	fTChi2_pip_TOF=-10000.0;
	fTChi2_pim_TOF=-10000.0;
        fTTimeLepSumSys0Mean=-1000.0;
	fTTimeLepSumSys0Max=-1000.0;
	fTTimeLepSumSys0Sig=-1000.0;
        fTTimeLepSumSys1Mean=-1000.0;
	fTTimeLepSumSys1Max=-1000.0;
	fTTimeLepSumSys1Sig=-1000.0;
        fTTimePiSumSys0Mean=-1000.0;
	fTTimePiSumSys0Max=-1000.0;
	fTTimePiSumSys0Sig=-1000.0;
        fTTimePiSumSys1Mean=-1000.0;
	fTTimePiSumSys1Max=-1000.0;
	fTTimePiSumSys1Sig=-1000.0;
	fTTimePiSumSys0FitMean=-1000.0;
	fTTimePiSumSys1FitMean=-1000.0;
	fTTofdEdxMean=-1000.0;
        fTTofdEdxMax=-1000.0;
	for(Int_t i=0; i<6; i++)
	{
	    fTMetaMatchTofMean[i]=-10.0;
	    fTMetaMatchTofMax[i]=-10.0;
	    fTMetaMatchTofMax2[i]=-10.0;
	    fTMetaMatchRpcMean[i]=-10.0;
	    fTMetaMatchRpcMax[i]=-10.0;
	    fTMetaMatchRpcMax2[i]=-10.0;
	    fTMetaMatchShwMean[i]=-10.0;
	    fTMetaMatchShwMax[i]=-10.0;
	    fTMetaMatchShwMax2[i]=-10.0;
	    for(Int_t j=0; j<2; j++)
	    {
		fTMultiMax[i][j]=-10.0;
		fTMultiMean[i][j]=-10.0;
		fTMultiMaxSelect[i][j]=-10.0;
                fTMultiMeanSelect[i][j]=-10.0;
	    }
	}
	for(Int_t i=0; i<NSTART_STRIPS; i++)
	{
            fTTimeLepStaSys0Mean[i]=-1000.0;
	    fTTimeLepStaSys0Max[i]=-1000.0;
	    fTTimeLepStaSys0Sig[i]=-1000.0;
            fTTimeLepStaSys1Mean[i]=-1000.0;
	    fTTimeLepStaSys1Max[i]=-1000.0;
	    fTTimeLepStaSys1Sig[i]=-1000.0;
            fTTimePiStaSys0Mean[i]=-1000.0;
	    fTTimePiStaSys0Max[i]=-1000.0;
	    fTTimePiStaSys0Sig[i]=-1000.0;
            fTTimePiStaSys1Mean[i]=-1000.0;
	    fTTimePiStaSys1Max[i]=-1000.0;
	    fTTimePiStaSys1Sig[i]=-1000.0;
	    fTTimePiStaSys0FitMean[i]=-1000.0;
            fTTimePiStaSys1FitMean[i]=-1000.0;
	}
    }
    ~HQAPhysicsTree(){}
    ClassDef(HQAPhysicsTree, 1)
};
#endif