///////////////////////////////////////////////////////////////////////////////
#include <TObject.h>
+#include <TArrayI.h>
class AliDCSSensorArray;
class AliTPCcalibDB;
class AliTPCCalPad;
class AliTPCmapper;
class AliTPCCalibRaw;
+class TGraph;
+class TGraphErrors;
+class TTreeSRedirector;
class AliTPCcalibDButil : public TObject
{
void UpdateFromCalibDB();
//data processing functions
void ProcessCEdata(const char* fitFormula, TVectorD &fitResultsA, TVectorD &fitResultsC,
- Int_t &noutliersCE, AliTPCCalPad *outCE=0);
+ Int_t &noutliersCE, Double_t & chi2A, Double_t &chi2C, AliTPCCalPad *outCE=0);
void ProcessCEgraphs(TVectorD &vecTEntries, TVectorD &vecTMean, TVectorD &vecTRMS, TVectorD &vecTMedian,
TVectorD &vecQEntries, TVectorD &vecQMean, TVectorD &vecQRMS, TVectorD &vecQMedian,
Float_t &driftTimeA, Float_t &driftTimeC );
{fRefALTROMasked=masked;}
//creation of derived pad by pad calibration data
- AliTPCCalPad *CreatePadTime0(Int_t model=0);
+ AliTPCCalPad *CreatePadTime0(Int_t model, Double_t &gyA, Double_t &gyC, Double_t &chi2A, Double_t &chi2C);
//
+ // create outlyer maps
+ //
+ AliTPCCalPad *CreateCEOutlyerMap(Int_t &noutliersCE, AliTPCCalPad *ceOut=0, Float_t minSignal=10, Float_t cutTrmsMin=0.9, Float_t cutTrmsMax=1.2, Float_t cutMaxDistT=0.7);
+ AliTPCCalPad *CreatePulserOutlyerMap(Int_t &noutliersPulser, AliTPCCalPad *pulserOut=0, Float_t cutTime=3, Float_t cutnRMSQ=5, Float_t cutnRMSrms=5);
+ //
+ AliTPCCalPad *CreatePadTime0CE(TVectorD &fitResultsA, TVectorD&fitResultsC, Int_t &nOut, Double_t &chi2A, Double_t &chi2C, const char *dumpfile=0);
+ //
+
void UpdatePulserOutlierMap();
void UpdateRefPulserOutlierMap();
void PulserOutlierMap(AliTPCCalPad *pulOut, const AliTPCCalPad *pulT, const AliTPCCalPad *pulQ);
+
+ //
+ // graph tools
+ //
+ static Double_t GetLaserTime0(Int_t run, Int_t timeStamp, Int_t deltaT, Int_t side);
+ static TGraph* FilterGraphMedian(TGraph * graph, Float_t sigmaCut, Double_t &medianY);
+ static TGraph* FilterGraphMedianAbs(TGraph * graph, Float_t cut, Double_t &medianY);
+ static TGraphErrors* FilterGraphMedianErr(TGraphErrors * graph, Float_t sigmaCut,Double_t &medianY);
+ //
+ static void Sort(TGraph *graph);
+ static void SmoothGraph(TGraph *graph, Double_t delta);
+ static Int_t GetNearest(TGraph *graph, Double_t xref, Double_t &dx, Double_t &y);
+ static Double_t EvalGraphConst(TGraph *graph, Double_t xref);
+
+ void FilterCE(Double_t deltaT=100, Double_t cutAbs=10, Double_t cutSigma=4., TTreeSRedirector *pcstream=0);
+ void FilterTracks(Int_t run, Double_t cutSigma=20., TTreeSRedirector *pcstream=0);
+
+ void FilterGoofie(AliDCSSensorArray * goofieArray, Double_t deltaT=2, Double_t cutSigma=4., TTreeSRedirector *pcstream=0);
+ static Double_t GetTriggerOffsetTPC(Int_t run, Int_t timeStamp, Double_t deltaT=86400, Double_t deltaTLaser=3600, Int_t valType=0);
+ static Double_t GetVDriftTPC(Double_t &dist, Int_t run, Int_t timeStamp, Double_t deltaT=86400, Double_t deltaTLaser=3600, Int_t valType=0);
+ static Double_t GetVDriftTPCLaserTracks(Double_t &dist,Int_t run, Int_t timeStamp, Double_t deltaT=43200, Int_t side=2);
+ static Double_t GetVDriftTPCCE(Double_t &dist, Int_t run, Int_t timeStamp, Double_t deltaT=43200, Int_t side=2);
+ Int_t MakeRunList(Int_t startRun, Int_t stopRun); // find the list of usable runs
+ Int_t FindRunTPC(Int_t itime, Bool_t debug=kFALSE);
private:
AliTPCcalibDB *fCalibDB; //pointer to calibDB object
AliTPCCalPad *fPadNoise; //noise information
Float_t fPulTmaxLimitAbs; //maximum variation of Pulser Signals (time) before pads will be treated as outliers
Float_t fPulQmaxLimitAbs; //maximum variation of Pulser Signals (charge) before pads will be treated as outliers
Float_t fPulQminLimit; //minimum charge value for Pulser Signals before pads will be treated as outliers
+
+ //
+ // helpers to get the run number for given time stamps
+ //
+ // filters
+public:
+ TArrayI fRuns; // run list with OCDB info
+ TArrayI fRunsStart; // start time for given run
+ TArrayI fRunsStop; // stop time for given run
+private:
AliTPCcalibDButil (const AliTPCcalibDButil& );
AliTPCcalibDButil& operator= (const AliTPCcalibDButil& );