ROOT logo
#ifndef ALI_TPC_PERFORMANCE_SUMMARY_H
#define ALI_TPC_PERFORMANCE_SUMMARY_H

//------------------------------------------------------------------------------
// Class to extract some TPC Performance parameters from AliPerformanceTPC and
// AliPerformanceDEdx objects and produce trend graphs.  
// 
// by M.Knichel 15/10/2010 
//------------------------------------------------------------------------------

class TTree;

class TTreeSRedirector;
class AliPerformanceTPC;
class AliPerformanceDEdx;
class AliPerformanceDCA;
class AliPerformanceMatch;

class AliTPCPerformanceSummary
{
    public:
    AliTPCPerformanceSummary() {} // default contructor 
    virtual ~AliTPCPerformanceSummary() {} // destructor
    
    static void WriteToTTreeSRedirector(const AliPerformanceTPC* pTPC, const AliPerformanceDEdx* pTPCgain, const AliPerformanceMatch* pTPCMatch, const AliPerformanceMatch* pTPCPull, const AliPerformanceMatch* pConstrain, TTreeSRedirector* const pcstream, Int_t run = -1); // called by WriteToFile
    
    static void WriteToFile(const AliPerformanceTPC* pTPC, const AliPerformanceDEdx* pTPCgain, const AliPerformanceMatch* pMatch,const AliPerformanceMatch* pPull, const AliPerformanceMatch* pConstrain, const Char_t* outfile, Int_t run = -1); // calles by MakeReport
    
    // the two key functions
    static Int_t MakeReport(const Char_t* infile, const Char_t* outfile, Int_t run);
    static Int_t ProduceTrends(const Char_t* infilelist, const Char_t* outfile);
    
    static Bool_t GetForceTHnSparse() { return fgForceTHnSparse; }
    static void SetForceTHnSparse(Bool_t forceSparse = kTRUE) { fgForceTHnSparse = forceSparse; }      
  
    private:
    
    static Bool_t fgForceTHnSparse;   // force to use THnSparse 
    // save graphs to current directory
    
    static Int_t SaveGraph(TTree* tree, const Char_t* y, const Char_t* x, const Char_t* condition);
    
    // helper functions to extract parameter and write to TTreeSRedirector
    static Int_t AnalyzeDCARPhi(const AliPerformanceTPC* pTPC, TTreeSRedirector* const pcstream);
    static Int_t AnalyzeDCARPhiPos(const AliPerformanceTPC* pTPC, TTreeSRedirector* const pcstream);
    static Int_t AnalyzeDCARPhiNeg(const AliPerformanceTPC* pTPC, TTreeSRedirector* const pcstream);
    static Int_t AnalyzeNCL(const AliPerformanceTPC* pTPC, TTreeSRedirector* const pcstream);
    static Int_t AnalyzeDrift(const AliPerformanceTPC* pTPC, TTreeSRedirector* const pcstream);
    static Int_t AnalyzeDriftPos(const AliPerformanceTPC* pTPC, TTreeSRedirector* const pcstream);
    static Int_t AnalyzeDriftNeg(const AliPerformanceTPC* pTPC, TTreeSRedirector* const pcstream);
    static Int_t AnalyzeGain(const AliPerformanceDEdx* pTPCgain, TTreeSRedirector* const pcstream);
    static Int_t AnalyzeEvent(const AliPerformanceTPC* pTPC, TTreeSRedirector* const pcstream);
    static Int_t AnalyzeMatch(const AliPerformanceMatch* pMatch, TTreeSRedirector* const pcstream);
    static Int_t AnalyzePull(const AliPerformanceMatch* pPull, TTreeSRedirector* const pcstream);
    static Int_t AnalyzePt(const AliPerformanceTPC* pTPC, TTreeSRedirector* pcstream);
    static Int_t AnalyzeChargeOverPt(const AliPerformanceTPC* pTPC, TTreeSRedirector* pcstream);
    static Int_t AnalyzeConstrain(const AliPerformanceMatch* pConstrain, TTreeSRedirector* pcstream);
    static Int_t AnalyzeQAPosNegDpT(const AliPerformanceTPC* pTPC, TTreeSRedirector* const pcstream);
    static Int_t AnalyzeQADCAFitParameter(const AliPerformanceTPC* pTPC, TTreeSRedirector* const pcstream);
    static Int_t AnalyzeOcc(const AliPerformanceTPC* pTPC, TTreeSRedirector* const pcstream);
    
    AliTPCPerformanceSummary(const AliTPCPerformanceSummary&); // copy contructor (not implemented)
    AliTPCPerformanceSummary& operator=(const AliTPCPerformanceSummary&); // assignment operator (not implemented)
      
    ClassDef(AliTPCPerformanceSummary, 3);
};

#endif
 AliTPCPerformanceSummary.h:1
 AliTPCPerformanceSummary.h:2
 AliTPCPerformanceSummary.h:3
 AliTPCPerformanceSummary.h:4
 AliTPCPerformanceSummary.h:5
 AliTPCPerformanceSummary.h:6
 AliTPCPerformanceSummary.h:7
 AliTPCPerformanceSummary.h:8
 AliTPCPerformanceSummary.h:9
 AliTPCPerformanceSummary.h:10
 AliTPCPerformanceSummary.h:11
 AliTPCPerformanceSummary.h:12
 AliTPCPerformanceSummary.h:13
 AliTPCPerformanceSummary.h:14
 AliTPCPerformanceSummary.h:15
 AliTPCPerformanceSummary.h:16
 AliTPCPerformanceSummary.h:17
 AliTPCPerformanceSummary.h:18
 AliTPCPerformanceSummary.h:19
 AliTPCPerformanceSummary.h:20
 AliTPCPerformanceSummary.h:21
 AliTPCPerformanceSummary.h:22
 AliTPCPerformanceSummary.h:23
 AliTPCPerformanceSummary.h:24
 AliTPCPerformanceSummary.h:25
 AliTPCPerformanceSummary.h:26
 AliTPCPerformanceSummary.h:27
 AliTPCPerformanceSummary.h:28
 AliTPCPerformanceSummary.h:29
 AliTPCPerformanceSummary.h:30
 AliTPCPerformanceSummary.h:31
 AliTPCPerformanceSummary.h:32
 AliTPCPerformanceSummary.h:33
 AliTPCPerformanceSummary.h:34
 AliTPCPerformanceSummary.h:35
 AliTPCPerformanceSummary.h:36
 AliTPCPerformanceSummary.h:37
 AliTPCPerformanceSummary.h:38
 AliTPCPerformanceSummary.h:39
 AliTPCPerformanceSummary.h:40
 AliTPCPerformanceSummary.h:41
 AliTPCPerformanceSummary.h:42
 AliTPCPerformanceSummary.h:43
 AliTPCPerformanceSummary.h:44
 AliTPCPerformanceSummary.h:45
 AliTPCPerformanceSummary.h:46
 AliTPCPerformanceSummary.h:47
 AliTPCPerformanceSummary.h:48
 AliTPCPerformanceSummary.h:49
 AliTPCPerformanceSummary.h:50
 AliTPCPerformanceSummary.h:51
 AliTPCPerformanceSummary.h:52
 AliTPCPerformanceSummary.h:53
 AliTPCPerformanceSummary.h:54
 AliTPCPerformanceSummary.h:55
 AliTPCPerformanceSummary.h:56
 AliTPCPerformanceSummary.h:57
 AliTPCPerformanceSummary.h:58
 AliTPCPerformanceSummary.h:59
 AliTPCPerformanceSummary.h:60
 AliTPCPerformanceSummary.h:61
 AliTPCPerformanceSummary.h:62
 AliTPCPerformanceSummary.h:63
 AliTPCPerformanceSummary.h:64
 AliTPCPerformanceSummary.h:65
 AliTPCPerformanceSummary.h:66
 AliTPCPerformanceSummary.h:67
 AliTPCPerformanceSummary.h:68