Changes required by adding of perfomrance tasks (Jacek)
authormarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 23 Apr 2009 18:03:40 +0000 (18:03 +0000)
committermarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 23 Apr 2009 18:03:40 +0000 (18:03 +0000)
PWG1/AliMCInfoCuts.cxx
PWG1/AliMCInfoCuts.h
PWG1/AliTPCtaskPID.cxx
PWG1/AliTPCtaskQA.h
PWG1/AliTreeDraw.cxx
PWG1/AliTreeDraw.h
PWG1/PWG1LinkDef.h
PWG1/libPWG1.pkg

index 6f2f473..bf32212 100644 (file)
@@ -39,6 +39,7 @@ AliAnalysisCuts(name, title)
 , fMaxVz(0)
 , fMinTPCSignal(0)
 , fMaxTPCSignal(0)
+, fMinTrackLength(0)
 , aTrackParticles(0)
 {
   // default constructor 
@@ -66,6 +67,7 @@ void AliMCInfoCuts::Init()
   SetMaxR();
   SetMaxVz();
   SetRangeTPCSignal();
+  SetMinTrackLength();
 
   // create aTrackParticles array
   aTrackParticles = new TArrayI(kNParticles); // max nb. of particles
index bb9f103..25b741f 100644 (file)
@@ -22,6 +22,7 @@ public:
   void SetMaxR(const Float_t max=1e99)         {fMaxR = max;}\r
   void SetMaxVz(const Float_t max=1e99)        {fMaxVz = max;}\r
   void SetRangeTPCSignal(const Float_t min=0, const Float_t max=1e99)  {fMinTPCSignal = min; fMaxTPCSignal = max;}\r
+  void SetMinTrackLength(const Int_t min=0)    {fMinTrackLength = min;}\r
 \r
   // getters \r
   Int_t GetMinRowsWithDigits() const {return fMinRowsWithDigits;}\r
@@ -29,6 +30,7 @@ public:
   Float_t GetMaxVz()           const {return fMaxVz;}\r
   Float_t GetMinTPCSignal()    const {return fMinTPCSignal;}\r
   Float_t GetMaxTPCSignal()    const {return fMaxTPCSignal;}\r
+  Float_t GetMinTrackLength()    const {return fMinTrackLength;}\r
 \r
   Float_t GetEP()  const       {return ep;}\r
   Float_t GetEM()  const       {return em;}\r
@@ -66,6 +68,7 @@ private:
   Float_t fMaxVz;           // max. Z distance from MC vertex\r
   Float_t fMinTPCSignal;    // min. TPC Signal calculated from Bethe Bloch formula\r
   Float_t fMaxTPCSignal;    // max. TPC Signal calculated from Bethe Bloch formula\r
+  Float_t fMinTrackLength;  // min. TPC minimum track length\r
  \r
   TArrayI* aTrackParticles; // array of tracked particles \r
 \r
index 7ecfec6..3e6f573 100644 (file)
@@ -164,7 +164,7 @@ void AliTPCtaskPID::Init(){
   //
   // 
   nbins[6]=60;
-  xmin[6]=1; xmax[6]=6;
+  xmin[6]=0.5; xmax[6]=6;
 
   nbins[5]=400;
   xmin[5]=20; xmax[5]=400;
@@ -334,7 +334,8 @@ void  AliTPCtaskPID::ProcessMCInfo(){
     //
     Double_t mom = in->GetP();
     if (track->GetP()>5)  mom= track->GetP();
-    if (out&&out->GetX()<300)  mom= (in->GetP()+out->GetP())*0.5;
+    if (out&&out->GetX()<260&&TMath::Abs(out->GetZ())<250)  mom= (in->GetP()+out->GetP())*0.5;
+    //
     Double_t dedx=track->GetTPCsignal();
     Double_t mass = particle->GetMass();
     Double_t bg  =mom/mass;
index 1c8a811..852cc09 100644 (file)
@@ -22,6 +22,7 @@ class AliESDEvent;
 class AliMCEvent;
 class THnSparse;
 class TObjArray;
+class TClonesArray;
 
 class AliTPCtaskQA : public AliAnalysisTask {
 public:
index 657ed62..f282253 100644 (file)
@@ -453,6 +453,109 @@ TH1F* AliTreeDraw::CreateResHistoI(TH2F* hRes2, TH1F **phMean, Int_t integ,  Boo
   return hRes;
 }
 
+TH1F* AliTreeDraw::CreateResHistoII(TH2F* hRes2, TH1F **phMean, Int_t integ,  Bool_t drawBinFits, Int_t cut)
+{
+  TVirtualPad* currentPad = gPad;
+  TAxis* axis = hRes2->GetXaxis();
+  Int_t nBins = axis->GetNbins();
+  Bool_t overflowBinFits = kFALSE;
+  TH1F* hRes, *hMean;
+  if (axis->GetXbins()->GetSize()){
+    hRes = new TH1F("hRes", "", nBins, axis->GetXbins()->GetArray());
+    hMean = new TH1F("hMean", "", nBins, axis->GetXbins()->GetArray());
+  }
+  else{
+    hRes = new TH1F("hRes", "", nBins, axis->GetXmin(), axis->GetXmax());
+    hMean = new TH1F("hMean", "", nBins, axis->GetXmin(), axis->GetXmax());
+
+  }
+  hRes->SetStats(false);
+  hRes->SetOption("E");
+  hRes->SetMinimum(0.);
+  //
+  hMean->SetStats(false);
+  hMean->SetOption("E");
+  // create the fit function
+  TF1 * fitFunc = new TF1("G","[0]*exp(-(x-[1])*(x-[1])/(2.*[2]*[2]))",-3,3);
+  
+  fitFunc->SetLineWidth(2);
+  fitFunc->SetFillStyle(0);
+  // create canvas for fits
+  TCanvas* canBinFits = NULL;
+  Int_t nPads = (overflowBinFits) ? nBins+2 : nBins;
+  Int_t nx = Int_t(sqrt(nPads-1.));// + 1;
+  Int_t ny = (nPads-1) / nx + 1;
+  if (drawBinFits) {
+    canBinFits = (TCanvas*)gROOT->FindObject("canBinFits");
+    if (canBinFits) delete canBinFits;
+    canBinFits = new TCanvas("canBinFits", "fits of bins", 200, 100, 500, 700);
+    canBinFits->Divide(nx, ny);
+  }
+
+  // loop over x bins and fit projection
+  Int_t dBin = ((overflowBinFits) ? 1 : 0);
+  for (Int_t bin = 1-dBin; bin <= nBins+dBin; bin++) {
+    if (drawBinFits) canBinFits->cd(bin + dBin);
+    Int_t bin0=TMath::Max(bin-integ,0);
+    Int_t bin1=TMath::Min(bin+integ,nBins);
+    TH1D* hBin = hRes2->ProjectionY("hBin", bin0, bin1);
+    //    
+    if (hBin->GetEntries() > cut) {
+      fitFunc->SetParameters(hBin->GetMaximum(),hBin->GetMean(),hBin->GetRMS());
+      hBin->Fit(fitFunc,"s");
+      Double_t sigma = TMath::Abs(fitFunc->GetParameter(2));
+
+      if (sigma > 0.){
+       hRes->SetBinContent(bin, TMath::Abs(fitFunc->GetParameter(2)));
+       hMean->SetBinContent(bin, fitFunc->GetParameter(1));    
+      }
+      else{
+       hRes->SetBinContent(bin, 0.);
+       hMean->SetBinContent(bin,0);
+      }
+      hRes->SetBinError(bin, fitFunc->GetParError(2));
+      hMean->SetBinError(bin, fitFunc->GetParError(1));
+      
+      //
+      //
+
+    } else {
+      hRes->SetBinContent(bin, 0.);
+      hRes->SetBinError(bin, 0.);
+      hMean->SetBinContent(bin, 0.);
+      hMean->SetBinError(bin, 0.);
+    }
+    
+
+    if (drawBinFits) {
+      char name[256];
+      if (bin == 0) {
+       sprintf(name, "%s < %.4g", axis->GetTitle(), axis->GetBinUpEdge(bin));
+      } else if (bin == nBins+1) {
+       sprintf(name, "%.4g < %s", axis->GetBinLowEdge(bin), axis->GetTitle());
+      } else {
+       sprintf(name, "%.4g < %s < %.4g", axis->GetBinLowEdge(bin),
+               axis->GetTitle(), axis->GetBinUpEdge(bin));
+      }
+      canBinFits->cd(bin + dBin);
+      hBin->SetTitle(name);
+      hBin->SetStats(kTRUE);
+      hBin->DrawCopy("E");
+      canBinFits->Update();
+      canBinFits->Modified();
+      canBinFits->Update();
+    }
+    
+    delete hBin;
+  }
+
+  delete fitFunc;
+  currentPad->cd();
+  *phMean = hMean;
+  return hRes;
+}
+
 
 
 
index 1055102..fbb57ee 100644 (file)
@@ -59,6 +59,8 @@ public:
 
   static TH1F*  CreateResHistoI(TH2F* hRes2, TH1F **phMean, Int_t integ=0, 
                               Bool_t drawBinFits = kTRUE);
+  static TH1F*  CreateResHistoII(TH2F* hRes2, TH1F **phMean, Int_t integ=0, 
+                              Bool_t drawBinFits = kTRUE, Int_t cut=0);
 
 
 
index 13cd9ec..d18bc4f 100644 (file)
 #pragma link C++ class AliTPCtaskPID+;
 #pragma link C++ class AliTPCtaskQA+;
 
+#pragma link C++ class AliPerformanceTask+;
+#pragma link C++ class AliPerformanceObject+;
+#pragma link C++ class AliPerformanceRes+;
+#pragma link C++ class AliPerformanceEff+;
+#pragma link C++ class AliPerformanceDEdx+;
+#pragma link C++ class AliPerformanceDCA+;
+#pragma link C++ class AliPerformanceTPC+;
+
 #endif
index b15997b..566ef36 100644 (file)
@@ -21,8 +21,14 @@ SRCS:=       AliTreeDraw.cxx \
        AliGenInfoTask.cxx  \
        AliMCTrackingTestTask.cxx \
        AliTPCtaskPID.cxx \
-       AliTPCtaskQA.cxx 
-
+       AliTPCtaskQA.cxx \
+       AliPerformanceTask.cxx \
+       AliPerformanceObject.cxx \
+       AliPerformanceRes.cxx \
+       AliPerformanceEff.cxx \
+       AliPerformanceDEdx.cxx \
+       AliPerformanceDCA.cxx \
+       AliPerformanceTPC.cxx
 
 HDRS:= $(SRCS:.cxx=.h)