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 6f2f47323382a722968361f2b2961e23fea443b7..bf32212bb0cd236dc3f3036fe312db2bdafc8d4d 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 bb9f103dbd20f04959f106539bfbd7a26fadb8d7..25b741fa7a75beec72ce9e23e83b57069bba83e1 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 7ecfec65f9c2431753b954dcade1652704eba4a7..3e6f5739fefb0a52b1594a35d85584d2e3d5c965 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 1c8a811b77455aa4d03affa986d4c5a515565b79..852cc0930239b92afde42f9714fc0bbf4068a843 100644 (file)
@@ -22,6 +22,7 @@ class AliESDEvent;
 class AliMCEvent;
 class THnSparse;
 class TObjArray;
+class TClonesArray;
 
 class AliTPCtaskQA : public AliAnalysisTask {
 public:
index 657ed62ba1abbdd3c04c2489a5fb933b27dda671..f282253decbef921ded0d142488222882856dba6 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 105510236ab804a0a466284dd696c03e4c66bccf..fbb57ee48642c2d6214f3fcb44c37f93aad5a86a 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 13cd9ec70d78f6801bd4000838256685a0115520..d18bc4f1f44753ef9b238d75988459ca722c08fc 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 b15997b57018fdcdea0ac2c234b25f2441686a36..566ef36c056a5bc066edccd35f6d23a1219db67a 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)