Possibility to retrun Covariance and parameter matrix from the Global Fit
authormarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 19 Mar 2008 14:44:39 +0000 (14:44 +0000)
committermarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 19 Mar 2008 14:44:39 +0000 (14:44 +0000)
(Jens Wiechula)

TPC/AliTPCCalPad.cxx
TPC/AliTPCCalPad.h

index 8d8f5f1..5cd745a 100644 (file)
@@ -477,7 +477,7 @@ AliTPCCalPad* AliTPCCalPad::LocalFit(const char* padName, Int_t rowRadius, Int_t
 }
 
 
-AliTPCCalPad* AliTPCCalPad::GlobalFit(const char* padName, AliTPCCalPad* PadOutliers, Bool_t robust, Int_t fitType, Double_t chi2Threshold, Double_t robustFraction){
+AliTPCCalPad* AliTPCCalPad::GlobalFit(const char* padName, AliTPCCalPad* PadOutliers, Bool_t robust, Int_t fitType, Double_t chi2Threshold, Double_t robustFraction, Double_t err, TObjArray *fitParArr, TObjArray *fitCovArr){
    //
    // Loops over all AliTPCCalROCs and performs a globalFit in each ROC
    // AliTPCCalPad with fit-data is returned
@@ -485,6 +485,8 @@ AliTPCCalPad* AliTPCCalPad::GlobalFit(const char* padName, AliTPCCalPad* PadOutl
    // robustFraction: Fraction of data that will be used in EvalRobust
    // chi2Threshold: Threshold for chi2 when EvalRobust is called
    // robustFraction: Fraction of data that will be used in EvalRobust
+   // err: error of the data points
+   // if fitParArr and/or fitCovArr is given, write fitParameters and/or covariance Matrices into the array
    //
    AliTPCCalPad* pad = new AliTPCCalPad(padName, padName);
    TVectorD fitParam(0);
@@ -492,10 +494,15 @@ AliTPCCalPad* AliTPCCalPad::GlobalFit(const char* padName, AliTPCCalPad* PadOutl
    Float_t chi2 = 0;
    for (Int_t isec = 0; isec < 72; isec++){
       if (PadOutliers)
-         GetCalROC(isec)->GlobalFit(PadOutliers->GetCalROC(isec), robust, fitParam, covMatrix, chi2, fitType, chi2Threshold, robustFraction);
+         GetCalROC(isec)->GlobalFit(PadOutliers->GetCalROC(isec), robust, fitParam, covMatrix, chi2, fitType, chi2Threshold, robustFraction, err);
       else 
-         GetCalROC(isec)->GlobalFit(0, robust, fitParam, covMatrix, chi2, fitType, chi2Threshold, robustFraction);
-      pad->SetCalROC(AliTPCCalROC::CreateGlobalFitCalROC(fitParam, isec));
+         GetCalROC(isec)->GlobalFit(0, robust, fitParam, covMatrix, chi2, fitType, chi2Threshold, robustFraction, err);
+
+      AliTPCCalROC *roc=AliTPCCalROC::CreateGlobalFitCalROC(fitParam, isec);
+      pad->SetCalROC(roc);
+      delete roc;
+      if ( fitParArr ) fitParArr->AddAtAndExpand(new TVectorD(fitParam), isec);
+      if ( fitCovArr ) fitCovArr->AddAtAndExpand(new TMatrixD(covMatrix), isec);
    }
    return pad;
 }
index d2a5fbb..3fb2dee 100644 (file)
@@ -56,7 +56,7 @@ class AliTPCCalPad : public TNamed {
   TH1F    *MakeHisto1D(Float_t min=4, Float_t max=-4, Int_t type=0);  
 
   AliTPCCalPad* LocalFit(const char* padName, Int_t rowRadius, Int_t padRadius, AliTPCCalPad* Padoutliers = 0, Bool_t robust = kFALSE, Double_t chi2Threshold = 5, Double_t robustFraction = 0.7, Bool_t printCurrentSector = kFALSE) const;
-  AliTPCCalPad* GlobalFit(const char* padName, AliTPCCalPad* Padoutliers = 0, Bool_t robust = kFALSE, Int_t fitType = 1, Double_t chi2Threshold = 5, Double_t robustFraction = 0.7);
+  AliTPCCalPad* GlobalFit(const char* padName, AliTPCCalPad* Padoutliers = 0, Bool_t robust = kFALSE, Int_t fitType = 1, Double_t chi2Threshold = 5, Double_t robustFraction = 0.7, Double_t err=1, TObjArray *fitParArr=0x0, TObjArray *fitCovArr=0x0);
   void GlobalSidesFit(const AliTPCCalPad* PadOutliers, TVectorD &fitParamSideA, TVectorD &fitParamSideC, TMatrixD &covMatrixSideA, TMatrixD &covMatrixSideC, Float_t &chi2SideA, Float_t &chi2SideC, Int_t fitType = 1, Bool_t robust = kFALSE, Double_t chi2Threshold = 5, Double_t robustFraction = 0.7);
 
  protected: