updates in the PWGPP/TRD
authorabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 12 Sep 2012 09:19:41 +0000 (09:19 +0000)
committerabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 12 Sep 2012 09:19:41 +0000 (09:19 +0000)
- align MC performance to data in resolution task
- fix MC settings for efficiency
- extend trendings

14 files changed:
PWGPP/TRD/AliTRDefficiency.cxx
PWGPP/TRD/AliTRDefficiency.h
PWGPP/TRD/AliTRDinfoGen.cxx
PWGPP/TRD/AliTRDrecoTask.cxx
PWGPP/TRD/AliTRDrecoTask.h
PWGPP/TRD/AliTRDresolution.cxx
PWGPP/TRD/AliTRDresolution.h
PWGPP/TRD/info/AliTRDtrackInfo.cxx
PWGPP/TRD/info/AliTRDtrackInfo.h
PWGPP/TRD/info/AliTRDtrendingManager.cxx
PWGPP/TRD/info/AliTRDtriggerInfo.cxx
PWGPP/TRD/macros/AddTRDefficiency.C
PWGPP/TRD/macros/AddTRDinfoGen.C
PWGPP/TRD/macros/makeTrendingDB.C

index ad0f390..59f50a6 100644 (file)
@@ -132,19 +132,23 @@ TH1* AliTRDefficiency::PlotBasicEff(const AliTRDtrackV1 *track)
   val[0] =((status&AliESDtrack::kTRDin)?1:0) +
           ((status&AliESDtrack::kTRDStop)?1:0) +
           ((status&AliESDtrack::kTRDout)?2:0);
-  val[1] = fkESD->Phi();
-  val[2] = fkESD->Eta();
-  val[3] = DebugLevel()>=1?GetPtBin(fkESD->Pt()):GetPtBinSignificant(fkESD->Pt());
+  val[1] = fPhi;//fkESD->Phi();
+  val[2] = fEta;//fkESD->Eta();
+  val[3] = GetPtBin(fPt/*fkESD->Pt()*/);
   val[4] = 0.;
   if(fkMC){
     if(fkMC->GetLabel() == fkMC->GetTRDlabel()) val[4] = 0.;
     else if(fkMC->GetLabel() == -fkMC->GetTRDlabel()) val[4] = 1.;
     else val[4] = -1.;
   }
-  val[5] = 0;//fkTrack->GetNumberOfTracklets();
+  val[5] = fkTrack?fkTrack->GetNumberOfTracklets():0;
   // down scale PID resolution
-  Int_t spc(fSpecies); if(spc==3) spc=2; if(spc==-3) spc=-2; if(spc>3) spc=3; if(spc<-3) spc=-3;
+  Int_t spc(fSpecies); if(spc==-6) spc=0; if(spc==3) spc=2; if(spc==-3) spc=-2; if(spc>3) spc=3; if(spc<-3) spc=-3;
   val[6] = spc;
+
+  if(fkTrack) AliDebug(2, Form("%3d[%s] tracklets[%d] label[%2d %+2d] species[%d %d] in[%c] out[%c] stop[%c]",
+    fkESD->GetId(), fkTrack->IsTPCseeded()?"TPC":"ITS", Int_t(val[5]), fkMC->GetLabel(), fkMC->GetTRDlabel(), fSpecies, spc,
+    (status&AliESDtrack::kTRDin)?'x':'o', (status&AliESDtrack::kTRDout)?'x':'o', (status&AliESDtrack::kTRDStop)?'x':'o'));
   H->Fill(val);
   return NULL;
 }
@@ -447,12 +451,11 @@ TObjArray* AliTRDefficiency::Histos()
   // cluster to detector
   if(!(H = (THnSparseI*)gROOT->FindObject("hEFF"))){
     const Int_t mdim(7);
-    Int_t npt=DebugLevel()>=1?20:3;
     Int_t nlabel(1);
-    const Char_t *eTitle[mdim] = {"label", "#phi [rad]", "eta", "p_{t} [bin]", "MClabel", "n_trklt", "chg*spec*rc"};
-    const Int_t eNbins[mdim]   = {   5,         180,       50,         npt,      nlabel, AliTRDgeometry::kNlayer-2, 5};
-    const Double_t eMin[mdim]  = { -0.5,    -TMath::Pi(),  -1.,       -0.5,       -0.5,        0.5,               -2.5},
-                   eMax[mdim]  = {  4.5,     TMath::Pi(),   1.,       npt-.5,  nlabel-0.5,     4.5,                2.5};
+    const Char_t *eTitle[mdim] = {"status", "#phi [rad]", "eta", "p_{t} [bin]", "label", "N_{trklt}", "chg*spec*rc"};
+    const Int_t eNbins[mdim]   = {   5,         180,       50,         fNpt,     nlabel, AliTRDgeometry::kNlayer-2, 5};
+    const Double_t eMin[mdim]  = { -0.5,    -TMath::Pi(),  -1.,       -0.5,       -0.5,        1.5,               -2.5},
+                   eMax[mdim]  = {  4.5,     TMath::Pi(),   1.,       fNpt-.5,  nlabel-0.5,    5.5,                2.5};
     st = "basic efficiency;";
     // define minimum info to be saved in non debug mode
     Int_t ndim=DebugLevel()>=1?mdim:(HasMCdata()?5:4);
@@ -477,8 +480,17 @@ Bool_t AliTRDefficiency::PostProcess()
   }
   if(!fProj){
     AliInfo("Building array of projections ...");
-    fProj = new TObjArray(50); fProj->SetOwner(kTRUE);
+    fProj = new TObjArray(200); fProj->SetOwner(kTRUE);
   }
+  // set pt/p segmentation. guess from data
+  THnSparse *H(NULL);
+  if(!(H = (THnSparse*)fContainer->FindObject("hEFF"))){
+    AliError("Missing/Wrong data @ hEFF.");
+    return kFALSE;
+  }
+  fNpt=H->GetAxis(3)->GetNbins()+1;
+  if(!MakeMomSegmentation()) return kFALSE;
+
   if(!MakeProjectionBasicEff()) return kFALSE;
   return kTRUE;
 }
@@ -500,7 +512,6 @@ Bool_t AliTRDefficiency::MakeProjectionBasicEff()
   Int_t ndim(H->GetNdimensions()); //Bool_t debug(ndim>Int_t(kNdimCl));
   TAxis *aa[11], *al(NULL); memset(aa, 0, sizeof(TAxis*) * 11);
   for(Int_t id(0); id<ndim; id++) aa[id] = H->GetAxis(id);
-  if(aa[3]->GetNbins()>3) SetDebugLevel(1);
   if(H->GetNdimensions() > 4) al = H->GetAxis(4);
   Int_t nlab=al?3:1;
 
@@ -508,14 +519,12 @@ Bool_t AliTRDefficiency::MakeProjectionBasicEff()
   //const Int_t nEtaPhi(4); Int_t rebinEtaPhiX[nEtaPhi] = {1, 2, 5, 1}, rebinEtaPhiY[nEtaPhi] = {2, 1, 1, 5};
   AliTRDrecoProjection hp[15];  TObjArray php(15);
   const Char_t *stat[] = {"!TRDin", "TRDin", "TRDin&TRDStop", "TRDin&TRDout", "TRDin&TRDout&TRDStop"};
-  const Char_t *lab[] = {"Bad", "Good", "Accept"};
+  const Char_t *lab[] = {"MC-Bad", "MC-Good", "MC-Accept"};
   Int_t ih(0);
   for(Int_t ilab(0); ilab<nlab; ilab++){
     for(Int_t istat(0); istat<5; istat++){
-//      isel++; // new selection
       hp[ih].Build(Form("HEff%d%d", ilab, istat),
-                  Form("Efficiency ::  Lab[%s] Stat[#bf{%s}]", lab[ilab], stat[istat]),
-                  2, 1, 3, aa);
+                    Form("Efficiency ::  Stat[#bf{%s}] %s", stat[istat], nlab>1?lab[ilab]:""), 2, 1, 3, aa);
       //hp[ih].SetRebinStrategy(nEtaPhi, rebinEtaPhiX, rebinEtaPhiY);
       php.AddLast(&hp[ih++]); //np[isel]++;
     }
@@ -527,7 +536,7 @@ Bool_t AliTRDefficiency::MakeProjectionBasicEff()
   for (Long64_t ib(0); ib < H->GetNbins(); ib++) {
     v = H->GetBinContent(ib, coord); if(v<1.) continue;
     istatus = coord[0]-1;
-    if(al) ilab = coord[4];
+    ilab=al?0:coord[4];
     Int_t isel = ilab*5+istatus;
     if(isel>=ih){
       AliError(Form("Wrong selection %d [%3d]", isel, ih));
@@ -556,14 +565,13 @@ Bool_t AliTRDefficiency::MakeProjectionBasicEff()
     cwd->cd();
   }
 
-  TH2 *h2(NULL);  Int_t jh(0);
+  Int_t jh(0);
   for(; ih--; ){
     if(!hp[ih].H()) continue;
-    hp[ih].Projection2D(1, 10, -1, kFALSE);
-    if((h2 = (TH2*)gDirectory->Get(Form("%sEn", hp[ih].H()->GetName())))) fProj->AddAt(h2, jh++);
+    for(Int_t ipt(0); ipt<=fNpt; ipt++) fProj->AddAt(Projection2D(hp[ih].H(), ipt), jh++);
   }
 
-  AliTRDrecoProjection prLab;  TH2 *hLab[3] = {0}; TH1 *hpLab[3] = {0};
+/*  AliTRDrecoProjection prLab;  TH2 *hLab[3] = {0}; TH1 *hpLab[3] = {0};
   for(ilab=0; ilab<nlab; ilab++){
     if(!(pr0 = (AliTRDrecoProjection*)php.FindObject(Form("HEff%d%d", ilab, 3)))) continue;
     prLab=(*pr0);
@@ -574,80 +582,41 @@ Bool_t AliTRDefficiency::MakeProjectionBasicEff()
     prLab.Projection2D(1, 10, -1, kFALSE);
     if((hLab[ilab] = (TH2*)gDirectory->Get(Form("%sEn", prLab.H()->GetName())))) fProj->AddAt(hLab[ilab], jh++);
     if((hpLab[ilab] = prLab.H()->Project3D("z"))) fProj->AddAt(hpLab[ilab], jh++);
-  }
+  }*/
 
   for(Int_t istat(0); istat<5; istat++) {
     if((pr0 = (AliTRDrecoProjection*)php.FindObject(Form("HEff%d%d", 0, istat)))) {
+      // sum over MC labels if available
       for(ilab=1; ilab<nlab; ilab++){
         if(!(pr1 = (AliTRDrecoProjection*)php.FindObject(Form("HEff%d%d", ilab, istat)))) continue;
         (*pr0)+=(*pr1);
       }
       pr0->H()->SetNameTitle(Form("HEff%d", istat), Form("Efficiency :: Stat[#bf{%s}]", stat[istat]));
-      pr0->Projection2D(1, 10, -1, kFALSE);
-      if((h2 = (TH2*)gDirectory->Get(Form("%sEn", pr0->H()->GetName())))) fProj->AddAt(h2, jh++);
+      for(Int_t ipt(0); ipt<=fNpt; ipt++) fProj->AddAt(Projection2D(pr0->H(), ipt), jh++);
 
       if(istat>1 && (pr1 = (AliTRDrecoProjection*)php.FindObject("HEff01"))) (*pr1)+=(*pr0);
       if(istat>2 && (pr1 = (AliTRDrecoProjection*)php.FindObject("HEff02"))) (*pr1)+=(*pr0);
       if(istat>3 && (pr1 = (AliTRDrecoProjection*)php.FindObject("HEff03"))) (*pr1)+=(*pr0);
     }
   }
-  // All tracks
-  TH2 *hEff[3] = {0};TH1 *hpEff[3] = {0};
-  if((pr0 = (AliTRDrecoProjection*)php.FindObject(Form("HEff%d%d", 0, 1)))) {
-    pr0->H()->SetNameTitle("HEff", "Efficiency :: All Tracks");
-    pr0->Projection2D(1, 10, -1, kFALSE);
-    hEff[0] = (TH2*)gDirectory->Get(Form("%sEn", pr0->H()->GetName()));
-    hpEff[0]= pr0->H()->Project3D("z");
-  }
-  // Tracked tracks
-  if((pr0 = (AliTRDrecoProjection*)php.FindObject(Form("HEff%d%d", 0, 2)))) {
-    pr0->H()->SetNameTitle("HEffT", "Efficiency :: Tracked Tracks");
-    pr0->Projection2D(1, 10, -1, kFALSE);
-    hEff[1] = (TH2*)gDirectory->Get(Form("%sEn", pr0->H()->GetName()));
-    // remove fakes
-    for(Int_t ix(1); ix<=hEff[1]->GetNbinsX(); ix++){
-      for(Int_t iy(1); iy<=hEff[1]->GetNbinsY(); iy++){
-        if(hEff[1]->GetBinContent(ix, iy)<5) hEff[1]->SetBinContent(ix, iy, 0.);
-    }}
-    hpEff[1]= pr0->H()->Project3D("z");
-  }
-  // Propagated tracks
-  if((pr0 = (AliTRDrecoProjection*)php.FindObject(Form("HEff%d%d", 0, 3)))) {
-    pr0->H()->SetNameTitle("HEffP", "Efficiency :: Propagated Tracks");
-    pr0->Projection2D(1, 10, -1, kFALSE);
-    hEff[2] = (TH2*)gDirectory->Get(Form("%sEn", pr0->H()->GetName()));
-    // remove fakes
-    for(Int_t ix(1); ix<=hEff[2]->GetNbinsX(); ix++){
-      for(Int_t iy(1); iy<=hEff[2]->GetNbinsY(); iy++){
-        if(hEff[2]->GetBinContent(ix, iy)<5) hEff[2]->SetBinContent(ix, iy, 0.);
-    }}
-    hpEff[2]= pr0->H()->Project3D("z");
-  }
-  if(hEff[0]){
-    if(hEff[1]){
-      TH2 *hEff1 = (TH2*)hEff[1]->Clone(Form("%sN", hEff[1]->GetName()));
-      hEff1->Divide(hEff[0]);
-      fProj->AddAt(hEff1, jh++);
-    }
-    if(hEff[2]){
-      TH2 *hEff1 = (TH2*)hEff[2]->Clone(Form("%sN", hEff[2]->GetName()));
-      hEff1->Divide(hEff[0]);
-      fProj->AddAt(hEff1, jh++);
-    }
+  // Project 2D tracks
+  const char suffix[] = {'A', 'T', 'P'};
+  const char *sname[] = {"All", "Trk", "Prp"};
+  for(Int_t istat(0); istat<3; istat++){
+    if(!(pr0 = (AliTRDrecoProjection*)php.FindObject(Form("HEff%d%d", 0, istat+1)))) continue;
+    pr0->H()->SetNameTitle(Form("HEff%c", suffix[istat]), Form("Efficiency :: %s Tracks", sname[istat]));
+    for(Int_t ipt(-1); ipt<=fNpt; ipt++) fProj->AddAt(Projection2D(pr0->H(), ipt), jh++);
   }
-  if(hpEff[0]){
-    if(hpEff[1]){
-      TH1 *hpEff1 = (TH1*)hpEff[1]->Clone(Form("%sN", hpEff[1]->GetName()));
-      hpEff1->Divide(hpEff[0]);
-      fProj->AddAt(hpEff1, jh++);
-    }
-    if(hEff[2]){
-      TH1 *hpEff1 = (TH1*)hpEff[2]->Clone(Form("%sN", hpEff[2]->GetName()));
-      hpEff1->Divide(hpEff[0]);
-      fProj->AddAt(hpEff1, jh++);
-    }
+
+  // Efficiency
+  TH2F *h2T(NULL), *h2P(NULL);
+  for(Int_t ipt(-1); ipt<=fNpt; ipt++){
+    if(!(h2T = (TH2F*)fProj->FindObject(Form("HEffT%d_2D", ipt)))) continue;
+    if(!(h2P = (TH2F*)fProj->FindObject(Form("HEffP%d_2D", ipt)))) continue;
+    h2P->Divide(h2T);
+    PutTrendValue(ipt<0?"pt":(Form("pt%d", ipt)), GetMeanStat(h2P, 0.01, ">"));
   }
-  // process MC label
+/*  // process MC label
   if(hEff[2]){
     for(ilab=0; ilab<nlab; ilab++){
       if(!hLab[ilab]) continue;
@@ -668,7 +637,7 @@ Bool_t AliTRDefficiency::MakeProjectionBasicEff()
       hpEff1->Divide(hpEff[2]);
       fProj->AddAt(hpEff1, jh++);
     }
-  }
+  }*/
   AliInfo(Form("Done %3d 2D projections.", jh));
   return kTRUE;
 }
@@ -804,3 +773,27 @@ void AliTRDefficiency::MakeSummary()
   hs->GetYaxis()->CenterTitle();
   cOut->SaveAs(Form("%s.gif", cOut->GetName()));
 }
+
+
+//____________________________________________________________________
+TH2* AliTRDefficiency::Projection2D(TH3 *h3, Int_t ipt)
+{
+  TAxis *ax(h3->GetXaxis()), *ay(h3->GetYaxis());
+  TH2F *h2(NULL);
+  if(ipt<0){
+    h2 =(TH2F*)h3->Project3D("yx");
+    h2->SetNameTitle(Form("%s%d_2D", h3->GetName(), ipt), h3->GetTitle());
+  } else {
+    h2 = new TH2F(Form("%s%d_2D", h3->GetName(), ipt),
+                  Form("%s | #it{%4.2f<=p_{t}[GeV/c]<%4.2f};%s;%s;Entries", h3->GetTitle(),
+                  ipt?fgPt[ipt-1]:0., ipt==fNpt?9.99:fgPt[ipt], ax->GetTitle(), ay->GetTitle()),
+                  ax->GetNbins(), ax->GetXmin(), ax->GetXmax(),
+                  ay->GetNbins(), ay->GetXmin(), ay->GetXmax());
+    for(Int_t ix(1); ix<=ax->GetNbins(); ix++){
+      for(Int_t iy(1); iy<=ay->GetNbins(); iy++){
+        h2->SetBinContent(ix, iy, h3->GetBinContent(ix, iy, ipt));
+      }
+    }
+  }
+  return h2;
+}
index 538954e..b8e84dd 100644 (file)
@@ -16,6 +16,8 @@
 #endif
 
 class AliTRDtrackV1;
+class TH2;
+class TH3;
 class TObjArray;
 class TList;
 class TClonesArray;
@@ -47,6 +49,7 @@ protected:
 private:
   AliTRDefficiency(const AliTRDefficiency&);
   AliTRDefficiency& operator=(const AliTRDefficiency&);
+  TH2*         Projection2D(TH3 *h3, Int_t ipt);
 
   TClonesArray     *fMissed;          // Missed ?
   TObjArray        *fProj;            //! result holder - sigma values
index 930d8e4..e4d8402 100644 (file)
@@ -521,6 +521,7 @@ void AliTRDinfoGen::UserExec(Option_t *){
     // read MC info\r
     Int_t fPdg = -1;\r
     Int_t label = -1; UInt_t alab=UINT_MAX;\r
+    Int_t nRefs = 0;\r
     if(HasMCdata()){\r
       label = esdTrack->GetLabel(); \r
       alab = TMath::Abs(label);\r
@@ -537,7 +538,7 @@ void AliTRDinfoGen::UserExec(Option_t *){
         continue;\r
       }\r
       fPdg = mcParticle->Particle()->GetPdgCode();\r
-      Int_t nRefs = mcParticle->GetNumberOfTrackReferences();\r
+      nRefs = mcParticle->GetNumberOfTrackReferences();\r
       Int_t iref = 0; AliTrackReference *ref = NULL; \r
       while(iref<nRefs){\r
         ref = mcParticle->GetTrackReference(iref);\r
index ee4b781..b948a56 100644 (file)
@@ -46,7 +46,7 @@
 \r
 ClassImp(AliTRDrecoTask)\r
 \r
-Float_t AliTRDrecoTask::fgPt0[AliTRDrecoTask::fgNPt0] = {0.5, 0.8, 1.5, 5};\r
+Float_t AliTRDrecoTask::fgPt[AliTRDrecoTask::fgNPt] = {0.};\r
 TTreeSRedirector* AliTRDrecoTask::fgDebugStream(NULL);\r
 //_______________________________________________________\r
 AliTRDrecoTask::AliTRDrecoTask()\r
@@ -67,6 +67,7 @@ AliTRDrecoTask::AliTRDrecoTask()
   ,fPt(-1.)\r
   ,fPhi(0.)\r
   ,fEta(0.)\r
+  ,fNpt(0)\r
   ,fTriggerList(NULL)\r
   ,fPlotFuncList(NULL)\r
   ,fDetFuncList(NULL)\r
@@ -95,6 +96,7 @@ AliTRDrecoTask::AliTRDrecoTask(const char *name, const char *title)
   ,fPt(-1.)\r
   ,fPhi(0.)\r
   ,fEta(0.)\r
+  ,fNpt(0)\r
   ,fTriggerList(NULL)\r
   ,fPlotFuncList(NULL)\r
   ,fDetFuncList(NULL)\r
@@ -164,22 +166,47 @@ Int_t AliTRDrecoTask::GetNRefFigures() const
 } \r
 \r
 //____________________________________________________________________\r
-Int_t AliTRDrecoTask::GetPtBinSignificant(Float_t pt)\r
+Int_t AliTRDrecoTask::GetPtBin(Float_t pt)\r
 {\r
 // Get significant (very low, low, medium, high, very high) pt bin\r
 \r
   Int_t ipt(0);\r
-  while(ipt<fgNPt0){\r
-    if(pt<fgPt0[ipt]) break;\r
+  while(ipt<fNpt){\r
+    if(pt<fgPt[ipt]) break;\r
     ipt++;\r
   }\r
   return ipt-1;\r
 }\r
 \r
 //_______________________________________________________\r
+Bool_t AliTRDrecoTask::MakeMomSegmentation()\r
+{\r
+  switch(fNpt){\r
+  case fgNPt:\r
+    fgPt[0]=0.5;\r
+    for(Int_t j(1); j<=fgNPt; j++) fgPt[j]=fgPt[j-1]+(TMath::Exp(j*j*2.e-3)-1.);\r
+    AliDebug(2, "Using debug momentum segmentation");\r
+    break;\r
+  case 4:\r
+    fgPt[0]=0.5; fgPt[1]=0.8; fgPt[2]=1.5; fgPt[3]=5.;\r
+    AliDebug(2, "Using default momentum segmentation");\r
+    break;\r
+  default:\r
+    AliError(Form("Momentum segmentation %d not supported.", fNpt));\r
+    fNpt=0;\r
+    return kFALSE;\r
+  }\r
+  return kTRUE;\r
+}\r
+\r
+//_______________________________________________________\r
 void AliTRDrecoTask::UserCreateOutputObjects()\r
 {\r
   if(!HasFunctorList()) InitFunctorList();\r
+  if(DebugLevel()) fNpt = fgNPt;\r
+  else fNpt = 4;\r
+  MakeMomSegmentation();\r
+\r
   fContainer = Histos();\r
   PostData(1, fContainer);\r
 }\r
index 93ee684..3afd22d 100644 (file)
@@ -82,7 +82,7 @@ public:
   Int_t          GetNRefFigures() const; \r
   const Char_t*  GetNameId() const       { return fNameId;}\r
   TList*         GetPlotFunctors() const { return fPlotFuncList;}\r
-  static Int_t   GetPtBinSignificant(Float_t pt);\r
+  Int_t          GetPtBin(Float_t pt);\r
   virtual Bool_t GetRefFigure(Int_t ifig);\r
   virtual void   MakeSummary();\r
   void           MakeDetectorPlot(Int_t ly=0, const Option_t *opt="eta");\r
@@ -106,7 +106,7 @@ public:
   virtual void   SetPostProcess(Bool_t pp = kTRUE) {SetBit(kPostProcess, pp);}\r
   static Float_t SetNormZ(TH2 *h2, Int_t bxmin=1, Int_t bxmax=-1, Int_t bymin=1, Int_t bymax=-1, Float_t thr=0.);\r
   static void    SetRangeZ(TH2 *h2, Float_t m, Float_t M, Float_t thr=0.);\r
-  void SetRunTerminate(Bool_t runTerminate = kTRUE) { fRunTerminate = runTerminate; }\r
+  void           SetRunTerminate(Bool_t runTerminate = kTRUE) { fRunTerminate = runTerminate; }\r
   void           SetTriggerList(const Char_t *tl);\r
   virtual void   Terminate(Option_t *);\r
 \r
@@ -114,6 +114,7 @@ protected:
   static TTreeSRedirector* DebugStream() { return fgDebugStream;}\r
   virtual void   InitFunctorList();\r
   Bool_t         HasFunctorList() const { return fPlotFuncList != NULL; }\r
+  Bool_t         MakeMomSegmentation();\r
 \r
   Char_t                fNameId[10];       // unique identifier of task particularity\r
   UChar_t               fNRefFigures;      // no of reference figures reported by task\r
@@ -132,6 +133,7 @@ protected:
   Float_t                fPt;              //! p_t of the track being analyzed\r
   Float_t                fPhi;             //! phi of the track being analyzed\r
   Float_t                fEta;             //! eta of the track being analyzed\r
+  Int_t                  fNpt;             // no of pt/p bins actually used\r
   TObjArray             *fTriggerList;     //! optional trigger list to be monitored\r
 \r
 private:\r
@@ -140,10 +142,11 @@ private:
 \r
   TList             *fPlotFuncList;        //! track functors list\r
   TList             *fDetFuncList;         //! detector functors list\r
-  Bool_t            fRunTerminate;         // Switch for Terminate Function\r
+  Bool_t             fRunTerminate;        // Switch for Terminate Function\r
   static TTreeSRedirector *fgDebugStream;  //! Debug stream\r
-  static const Int_t fgNPt0 = 4;           // No of significant pt bins \r
-  static Float_t fgPt0[fgNPt0];            // Array with limits for significant pt bins \r
+  static const Int_t fgNPt = 25;           //! No of debug pt bins\r
+protected:\r
+  static Float_t         fgPt[fgNPt];      //! Array with limits for debug pt bins\r
 \r
   ClassDef(AliTRDrecoTask, 5) // base TRD reconstruction task\r
 };\r
index af56f68..ddd5868 100644 (file)
@@ -98,32 +98,32 @@ ClassImp(AliTRDresolution::AliTRDrecoProjection)
 
 Int_t const   AliTRDresolution::fgkNbins[kNdim] = {
   Int_t(kNbunchCross)/*bc*/,
-  180/*phi*/,
-  50/*eta*/,
+  144/*phi*/,
+  45/*eta*/,
   50/*dy*/,
   40/*dphi*/,
   50/*dz*/,
-  3/*chg*species*/,
+  5/*chg*species*/,
   kNpt/*pt*/
 };  //! no of bins/projection
 Double_t const AliTRDresolution::fgkMin[kNdim] = {
   -1.5,
   -TMath::Pi(),
-  -1.,
+  -0.9,
   -1.5,
   -5.,
   -2.5,
-  -1.5,
+  -2.5,
   -0.5
 };    //! low limits for projections
 Double_t const AliTRDresolution::fgkMax[kNdim] = {
   1.5,
   TMath::Pi(),
-  1.,
+  0.9,
   1.5,
   5.,
   2.5,
-  1.5,
+  2.5,
   kNpt-0.5
 };    //! high limits for projections
 Char_t const *AliTRDresolution::fgkTitle[kNdim] = {
@@ -149,7 +149,6 @@ Char_t const * AliTRDresolution::fgPerformanceName[kNclasses] = {
 //    ,"Tracklet2TRDout"
 //    ,"TRDout2MC"
 };
-Float_t AliTRDresolution::fgPtBin[25];
 
 //________________________________________________________
 AliTRDresolution::AliTRDresolution()
@@ -168,7 +167,6 @@ AliTRDresolution::AliTRDresolution()
   // Default constructor
   //
   SetNameTitle("TRDresolution", "TRD spatial and momentum resolution");
-  MakePtSegmentation();
   SetProcesses(kTRUE, kTRUE, kTRUE, kTRUE);
 }
 
@@ -190,7 +188,6 @@ AliTRDresolution::AliTRDresolution(char* name, Bool_t xchange)
   //
 
   InitFunctorList();
-  MakePtSegmentation();
   SetProcesses(kTRUE, kTRUE, kTRUE, kTRUE);
   if(xchange){
     SetUseExchangeContainers();
@@ -312,13 +309,17 @@ TH1* AliTRDresolution::DetCluster(const TObjArray *cls)
            cs(TMath::Cos(alpha)),
            sn(TMath::Sin(alpha));
   for(Int_t icl(0); icl<ncl; icl++){
-    if(!(cl = (AliTRDcluster*)(*fkClusters)[icl])) continue;
+    if(!(cl = (AliTRDcluster*)(*fkClusters)[icl])){
+      AliDebug(2, Form("Missing clusters @ %d", icl));
+      continue;
+    }
+    if(cl->IsMasked()) printf("Mask %03d[%02d_%d_%d] %d[%d]", det, AliTRDgeometry::GetSector(det), stk, ly, cl->GetPadMaskedPosition(), cl->GetPadMaskedStatus());
     val[kBC]  = ly;
     val[kPhi] = TMath::ATan2(cl->GetX()*sn + cl->GetY()*cs, cl->GetX()*cs - cl->GetY()*sn);
     val[kEta] = (5-stk)*16-cl->GetPadRow()-1-(stk<3?4:0);
     val[kYrez]= fEvent->GetMultiplicity();
     val[4]    = TMath::Abs(cl->GetQ());
-    val[5]    = cl->IsFivePad()?1:cl->GetNPads();
+    val[5]    = fTriggerList?fTriggerSlot:(cl->IsFivePad()?1:cl->GetNPads());
     H->Fill(val);
   }
   return NULL;
@@ -387,7 +388,7 @@ TH1* AliTRDresolution::PlotCluster(const AliTRDtrackV1 *track)
       if(ic) val[kZrez] /= (ic*q);
       val[kSpeciesChgRC]= fTracklet->IsRowCross()?0.:(TMath::Max(q*corr, Float_t(3.)));
       val[kNdim]   = fEvent?fEvent->GetMultiplicity():0.;
-      val[kNdim+1] = c->IsFivePad()?1:c->GetNPads();
+      val[kNdim+1] = fTriggerList?fTriggerSlot:(c->IsFivePad()?1:c->GetNPads());
       H->Fill(val);
 /*      // tilt rotation of covariance for clusters
       Double_t sy2(c->GetSigmaY2()), sz2(c->GetSigmaZ2());
@@ -474,11 +475,12 @@ TH1* AliTRDresolution::PlotTracklet(const AliTRDtrackV1 *track)
     return NULL;
   }
 
+  // down scale PID resolution
+  Int_t spc(fSpecies); if(spc==3) spc=2; if(spc==-3) spc=-2; if(spc>3) spc=3; if(spc<-3) spc=-3;
   const Int_t ndim(kNdim+8);
   Double_t val[ndim],
            alpha(0.), cs(-2.), sn(0.);
-  Float_t sz[AliTRDseedV1::kNtb], pos[AliTRDseedV1::kNtb];
-  Int_t ntbGap[AliTRDseedV1::kNtb];
+//  Float_t sz[AliTRDseedV1::kNtb], pos[AliTRDseedV1::kNtb]; Int_t ntbGap[AliTRDseedV1::kNtb];
   AliTRDseedV1 *fTracklet(NULL);
   for(Int_t il(0); il<AliTRDgeometry::kNlayer; il++){
     if(!(fTracklet = fkTrack->GetTracklet(il))) continue;
@@ -493,8 +495,8 @@ TH1* AliTRDresolution::PlotTracklet(const AliTRDtrackV1 *track)
     Float_t tgl = fTracklet->GetZ()/fTracklet->GetX()/TMath::Sqrt(1.+fTracklet->GetY()*fTracklet->GetY()/fTracklet->GetX()/fTracklet->GetX());//fTracklet->GetTgl();
     val[kEta] = -TMath::Log(TMath::Tan(0.5 *  (0.5*TMath::Pi() - TMath::ATan(tgl))));
 
-    val[kSpeciesChgRC]= fTracklet->IsRowCross()?0:fkTrack->Charge();// fSpecies;
-    val[kPt]  = GetPtBinSignificant(fPt); //fPt<0.8?0:(fPt<1.5?1:2);//GetPtBin(fTracklet->GetMomentum());
+    val[kSpeciesChgRC]= fTracklet->IsRowCross()?0:spc;// fSpecies;
+    val[kPt]  = GetPtBin(fPt); //fPt<0.8?0:(fPt<1.5?1:2);//GetPtBin(fTracklet->GetMomentum());
     Double_t dyt(fTracklet->GetYfit(0) - fTracklet->GetYref(0)),
              dzt(fTracklet->GetZfit(0) - fTracklet->GetZref(0)),
              dydx(fTracklet->GetYfit(1)),
@@ -505,8 +507,8 @@ TH1* AliTRDresolution::PlotTracklet(const AliTRDtrackV1 *track)
     dydx+= tilt*fTracklet->GetZref(1);
     val[kPrez] = TMath::ATan((dydx - fTracklet->GetYref(1))/(1.+ fTracklet->GetYref(1)*dydx)) * TMath::RadToDeg();
     val[kNdim] = fEvent?fEvent->GetMultiplicity():0;
-    val[kNdim+1] = 1.e2*fTracklet->GetTBoccupancy()/AliTRDseedV1::kNtb;
-    Int_t n = fTracklet->GetChargeGaps(sz, pos, ntbGap);
+    val[kNdim+1] = fTriggerList?fTriggerSlot:(1.e2*fTracklet->GetTBoccupancy()/AliTRDseedV1::kNtb);
+/*    Int_t n = fTracklet->GetChargeGaps(sz, pos, ntbGap);
     val[kNdim+2] = 0.; for(Int_t igap(0); igap<n; igap++) val[kNdim+2] += sz[igap];
     for(Int_t ifill(0); ifill<3; ifill++){ val[kNdim+3+ifill]=0.;val[kNdim+4+ifill]=0.;}
     for(Int_t igap(0), ifill(0); igap<n&&ifill<2; igap++){
@@ -514,7 +516,7 @@ TH1* AliTRDresolution::PlotTracklet(const AliTRDtrackV1 *track)
       val[kNdim+3+ifill] = sz[igap];
       val[kNdim+4+ifill] = pos[igap];
       ifill++;
-    }
+    }*/
     H->Fill(val);
 
 //     // compute covariance matrix
@@ -662,8 +664,8 @@ TH1* AliTRDresolution::PlotTrackIn(const AliTRDtrackV1 *track)
   val[kZrez]        = fTracklet->IsRowCross()?dz:(fTracklet->GetdQdl()*5.e-4 - 2.5);
   val[kPrez]        = dphi*TMath::RadToDeg();
   val[kSpeciesChgRC]= fTracklet->IsRowCross()?0:spc;
-  val[kPt]          = DebugLevel()>=1?GetPtBin(fPt):GetPtBinSignificant(fPt);
-  val[kNdim]        = DebugLevel()>=1?GetPtBin(fTracklet->GetMomentum()):GetPtBinSignificant(fTracklet->GetMomentum());
+  val[kPt]          = GetPtBin(fPt);
+  val[kNdim]        = GetPtBin(fTracklet->GetMomentum());
   val[kNdim+1]      = dx;
   //val[kNdim+2]      = fEvent?fEvent->GetBunchFill():0;
   H->Fill(val);
@@ -721,13 +723,14 @@ TH1* AliTRDresolution::PlotMC(const AliTRDtrackV1 *track)
   if(!fDBPDG) fDBPDG=TDatabasePDG::Instance();
   TParticlePDG *ppdg(fDBPDG->GetParticle(pdg));
   if(ppdg) sign = ppdg->Charge() > 0. ? 1 : -1;
+  if(sIdx==3) sIdx=2; if(sIdx>3) sIdx=3; // downscale PID
 
   TH1 *h(NULL);
   AliTRDgeometry *geo(AliTRDinfoGen::Geometry());
   AliTRDseedV1 *fTracklet(NULL); TObjArray *clInfoArr(NULL);
   UChar_t s;
   Double_t x, y, z, pt, dydx, dzdx, dzdl;
-  Float_t pt0, x0, y0, z0, dx, dy, dz, dydx0, dzdx0;
+  Float_t pt0, p0, x0, y0, z0, dx, dy, dz, dydx0, dzdx0;
   Double_t covR[7]/*, cov[3]*/;
 
 /*  if(DebugLevel()>=3){
@@ -761,14 +764,14 @@ TH1* AliTRDresolution::PlotMC(const AliTRDtrackV1 *track)
     }
   }*/
   AliTRDcluster *c(NULL);
-  Double_t val[kNdim+1];
+  Double_t val[kNdim+2];
   for(Int_t ily=0; ily<AliTRDgeometry::kNlayer; ily++){
     if(!(fTracklet = fkTrack->GetTracklet(ily)))/* ||
        !fTracklet->IsOK())*/ continue;
 
     x= x0 = fTracklet->GetX();
     Bool_t rc(fTracklet->IsRowCross()); Float_t eta, phi;
-    if(!fkMC->GetDirections(x0, y0, z0, dydx0, dzdx0, pt0, eta, phi, s)) continue;
+    if(!fkMC->GetDirections(x0, y0, z0, dydx0, dzdx0, pt0, p0, eta, phi, s)) continue;
 
     // MC track position at reference radial position
     dx  = x0 - x;
@@ -780,7 +783,8 @@ TH1* AliTRDresolution::PlotMC(const AliTRDtrackV1 *track)
     val[kPhi] = phi;
     val[kEta] = eta;
     val[kSpeciesChgRC]= rc?0.:sign*sIdx;
-    val[kPt]  = pt0<0.8?0:(pt0<1.5?1:2);//GetPtBin(pt0);
+    val[kPt]  = GetPtBin(pt0);
+    val[kNdim]= GetPtBin(p0);
     Double_t tilt(fTracklet->GetTilt());
 //             ,t2(tilt*tilt)
 //             ,corr(1./(1. + t2))
@@ -793,8 +797,9 @@ TH1* AliTRDresolution::PlotMC(const AliTRDtrackV1 *track)
       else{
         val[kBC]          = (bc>=kNbunchCross)?(kNbunchCross-1):bc;
         val[kYrez]        = tin->GetY()-ymc;
-        val[kZrez]        = rc?(tin->GetZ()-zmc):(fTracklet->GetdQdl()*1.8e-4 - 0.9);
+        val[kZrez]        = rc?(tin->GetZ()-zmc):(fTracklet->GetdQdl()*5e-4 - 2.5);
         val[kPrez]        = (TMath::ASin(tin->GetSnp())-TMath::ATan(dydx0))*TMath::RadToDeg();
+        val[kNdim+1]      = 0.;//dx;
         if((H = (THnSparseI*)fContainer->At(kMCtrackIn))) H->Fill(val);
       }
     }
@@ -814,6 +819,7 @@ TH1* AliTRDresolution::PlotMC(const AliTRDtrackV1 *track)
     val[kYrez] = dy;
     val[kPrez] = TMath::ATan((dydx - dydx0)/(1.+ dydx*dydx0))*TMath::RadToDeg();
     val[kZrez] = dz;
+    val[kPt]   = GetPtBin(pt0);
     val[kNdim] = 1.e2*(pt/pt0-1.);
     if((H = (THnSparse*)fContainer->At(kMCtrack))) H->Fill(val);
 /*      // theta resolution/ tgl pulls
@@ -866,6 +872,8 @@ TH1* AliTRDresolution::PlotMC(const AliTRDtrackV1 *track)
     val[kYrez] = dy - dz*tilt;
     val[kPrez] = TMath::ATan((dydx - dydx0)/(1.+ dydx*dydx0))*TMath::RadToDeg();
     val[kZrez] = rc?(dz + dy*tilt):(fTracklet->GetdQdl()*3.e-4 - 1.5);
+    val[kNdim] = fEvent?fEvent->GetMultiplicity():0;
+    val[kNdim+1] = 1.e2*fTracklet->GetTBoccupancy()/AliTRDseedV1::kNtb;
 //      val[kNdim] = pt/pt0-1.;
     if((H = (THnSparse*)fContainer->At(kMCtracklet))) H->Fill(val);
 
@@ -893,7 +901,8 @@ TH1* AliTRDresolution::PlotMC(const AliTRDtrackV1 *track)
     val[kPt]  = TMath::ATan(dydx0)*TMath::RadToDeg();
     //Float_t corr = 1./TMath::Sqrt(1.+dydx0*dydx0+dzdx0*dzdx0);
     Int_t row0(-1);
-    Float_t padCorr(tilt*fTracklet->GetPadLength());
+    Float_t padCorr(tilt*fTracklet->GetPadLength()),
+            corr(1./TMath::Sqrt(1.+dydx0*dydx0+dzdx0*dzdx0));
     fTracklet->ResetClusterIter(kTRUE);
     while((c = fTracklet->NextCluster())){
       if(row0<0) row0 = c->GetPadRow();
@@ -911,6 +920,8 @@ TH1* AliTRDresolution::PlotMC(const AliTRDtrackV1 *track)
       if((cc = fTracklet->GetClusters(tb-1))) {val[kZrez] += TMath::Abs(cc->GetQ()); ic++;}
       if((cc = fTracklet->GetClusters(tb-2))) {val[kZrez] += TMath::Abs(cc->GetQ()); ic++;}
       if(ic) val[kZrez] /= (ic*q);
+      val[kSpeciesChgRC]= rc?0.:(TMath::Max(q*corr, Float_t(3.)));
+      val[kNdim+1] = c->IsFivePad()?1:c->GetNPads();
       if(H) H->Fill(val);
 
 
@@ -951,20 +962,6 @@ TH1* AliTRDresolution::PlotMC(const AliTRDtrackV1 *track)
   return H?H->Projection(kYrez):NULL;
 }
 
-
-//__________________________________________________________________________
-Int_t AliTRDresolution::GetPtBin(Float_t pt)
-{
-// Find pt bin according to local pt segmentation
-  Int_t ipt(-1);
-  while(ipt<24){
-    if(pt<fgPtBin[ipt+1]) break;
-    ipt++;
-  }
-  return ipt;
-}
-
-
 //________________________________________________________
 void AliTRDresolution::GetRangeZ(TH2 *h2, Float_t &min, Float_t &max)
 {
@@ -1006,17 +1003,6 @@ Bool_t AliTRDresolution::GetRefFigure(Int_t ifig)
   return kFALSE;
 }
 
-
-//________________________________________________________
-void AliTRDresolution::MakePtSegmentation(Float_t pt0, Float_t dpt)
-{
-// Build pt segments
-  for(Int_t j(0); j<=24; j++){
-    pt0+=(TMath::Exp(j*j*dpt)-1.);
-    fgPtBin[j]=pt0;
-  }
-}
-
 //________________________________________________________
 void AliTRDresolution::MakeSummary()
 {
@@ -1191,6 +1177,20 @@ void AliTRDresolution::MakeSummary()
           AliInfo(Form("Missing H%sTrkIn%sEn", typName[ityp], chName[ich]));
           continue;
         }
+        Int_t irebin(0), dxBin(1), dyBin(1);
+        const Int_t nrebin(5); Int_t rebinX[nrebin] = {1, 2, 1, 2, 1}, rebinY[nrebin] = {2, 1, 2, 1, 2};
+        if(h2s->GetNbinsY()==180){ // old binning
+          rebinX[0] = 1; rebinY[0] = 2;
+          rebinX[1] = 2; rebinY[1] = 1;
+          rebinX[2] = 2; rebinY[2] = 1;
+          rebinX[3] = 1; rebinY[3] = 5;
+          rebinX[4] = 1; rebinY[4] = 1; // dummy
+        }
+        while(irebin<nrebin && (AliTRDrecoTask::GetMeanStat(h2s, .5, ">")<200)){
+          h2s->Rebin2D(rebinX[irebin], rebinY[irebin]);
+          dxBin*=rebinX[irebin];dyBin*=rebinY[irebin];irebin++;
+        }
+        AliDebug(2, Form("Rebin level[%d] @ chg[%d]. Binning[%2dx%2d]", irebin, ich, h2s->GetNbinsX(), h2s->GetNbinsY()));
         for(Int_t ispec(0); ispec<kNspc; ispec++){
           p=cOut->cd(ipad++); p->SetRightMargin(0.1572581); p->SetTopMargin(0.08262712);
           if(!(h2 = (TH2*)arr->FindObject(Form("H%sTrkInY%s%dEn", typName[ityp], chName[ich], ispec)))) {
@@ -1198,6 +1198,7 @@ void AliTRDresolution::MakeSummary()
             continue;
           }
           nplot++;
+          h2->Rebin2D(dxBin,dyBin);
           h2->Divide(h2, h2s, 1.e2);
           h2->SetContour(9);
           h2->GetZaxis()->SetRangeUser(zmin[ispec], zmax[ispec]);
@@ -1371,7 +1372,14 @@ Bool_t AliTRDresolution::MakeProjectionDetector()
   // build list of projections
   const Int_t nsel(8*AliTRDgeometry::kNlayer*AliTRDeventInfo::kCentralityClasses);
   // define rebinning strategy
-  const Int_t nEtaPhi(4); Int_t rebinEtaPhiX[nEtaPhi] = {1, 2, 2, 1}, rebinEtaPhiY[nEtaPhi] = {2, 1, 1, 5};
+  const Int_t nEtaPhi(5); Int_t rebinEtaPhiX[nEtaPhi] = {1, 2, 1, 2, 1}, rebinEtaPhiY[nEtaPhi] = {2, 1, 2, 1, 2};
+  if(aa[1]->GetNbins()==180){ // old binning
+    rebinEtaPhiX[0] = 1; rebinEtaPhiY[0] = 2;
+    rebinEtaPhiX[1] = 2; rebinEtaPhiY[1] = 1;
+    rebinEtaPhiX[2] = 2; rebinEtaPhiY[2] = 1;
+    rebinEtaPhiX[3] = 1; rebinEtaPhiY[3] = 5;
+    rebinEtaPhiX[4] = 1; rebinEtaPhiY[4] = 1; // dummy
+  }
   //const Char_t *cenName[AliTRDeventInfo::kCentralityClasses] = {"0-10%", "10-20%", "20-50%", "50-80%", "80-100%"};
   const Char_t *cenName[AliTRDeventInfo::kCentralityClasses] = {"2800-inf", "2100-2799", "1400-2099", "700-1399", "0-699"};
   AliTRDrecoProjection hp[kDetNproj];  TObjArray php(kDetNproj);
@@ -1472,7 +1480,14 @@ Bool_t AliTRDresolution::MakeProjectionCluster(Bool_t mc)
   // build list of projections
   const Int_t nsel(AliTRDgeometry::kNlayer*kNcharge*(kNpads+1)*AliTRDeventInfo::kCentralityClasses);
   // define rebinning strategy
-  const Int_t nEtaPhi(4); Int_t rebinEtaPhiX[nEtaPhi] = {1, 2, 5, 1}, rebinEtaPhiY[nEtaPhi] = {2, 1, 1, 5};
+  const Int_t nEtaPhi(5); Int_t rebinEtaPhiX[nEtaPhi] = {1, 3, 1, 3, 1}, rebinEtaPhiY[nEtaPhi] = {2, 1, 2, 1, 2};
+  if(aa[1]->GetNbins()==180){ // old binning
+    rebinEtaPhiX[0] = 1; rebinEtaPhiY[0] = 2;
+    rebinEtaPhiX[1] = 2; rebinEtaPhiY[1] = 1;
+    rebinEtaPhiX[2] = 5; rebinEtaPhiY[2] = 1;
+    rebinEtaPhiX[3] = 1; rebinEtaPhiY[3] = 5;
+    rebinEtaPhiX[4] = 1; rebinEtaPhiY[4] = 1; // dummy
+  }
   AliTRDrecoProjection hp[kClNproj];  TObjArray php(kClNproj);
   const Char_t chName[kNcharge] = {'n', 'p'};const Char_t chSgn[kNcharge] = {'-', '+'};
   const Char_t *cenName[AliTRDeventInfo::kCentralityClasses] = {"2800-inf", "2100-2799", "1400-2099", "700-1399", "0-699"};
@@ -1506,7 +1521,7 @@ Bool_t AliTRDresolution::MakeProjectionCluster(Bool_t mc)
       }
     }
   }
-  AliInfo(Form("Build %3d 3D projections.", ih));
+  AliInfo(Form("Build %3d 3D %s projections.", ih, mc?"MC":""));
 
   AliTRDrecoProjection *pr0(NULL), *pr1(NULL);
   Int_t ly(0), ch(0), rcBin(as?as->FindBin(0.):-1), chBin(apt?apt->FindBin(0.):-1), ioff(0), cen(0), npad(0);
@@ -1576,6 +1591,7 @@ Bool_t AliTRDresolution::MakeProjectionCluster(Bool_t mc)
       if((h2 = hp[ih].Projection2D(kNstat, kNcontours, 1))) arr->AddAt(h2, jh++);
     }
   }
+  Double_t m(0.), s(0.), trend(0.);
   for(Int_t ily(0); ily<AliTRDgeometry::kNlayer; ily++){
     for(Int_t ich(0); ich<nCh; ich++){
       for(Int_t icen(0); icen<nCen; icen++){
@@ -1658,6 +1674,7 @@ Bool_t AliTRDresolution::MakeProjectionCluster(Bool_t mc)
     if((pr0 = (AliTRDrecoProjection*)php.FindObject(Form("H%sClY%c%d%d%d", mc?"MC":"", chName[0], ily, 0, 0)))){
       pr0->H()->SetNameTitle(Form("H%sClY%d", mc?"MC":"", ily), Form("Clusters :: #Deltay Ly[%d]", ily));
       if((h2 = pr0->Projection2D(kNstat, kNcontours, 1))) arr->AddAt(h2, jh++);
+      if((trend=pr0->GetTrendValue(1,&m,&s))>-100.) PutTrendValue(Form("%sClS%d", mc?"MC":"", ily), s);
     }
     /*!YXPh*/
     if((pr0 = (AliTRDrecoProjection*)php.FindObject(Form("H%sClYXPh%c%d%d%d", mc?"MC":"", chName[0], ily, 0, 0)))){
@@ -1666,7 +1683,7 @@ Bool_t AliTRDresolution::MakeProjectionCluster(Bool_t mc)
     }
 
   }
-  AliInfo(Form("Done %3d 2D projections.", jh));
+  AliInfo(Form("Done %3d 2D %s projections.", jh, mc?"MC":""));
   return kTRUE;
 }
 
@@ -1706,7 +1723,14 @@ Bool_t AliTRDresolution::MakeProjectionTracklet(Bool_t mc)
   // build list of projections
   const Int_t nsel(AliTRDeventInfo::kCentralityClasses*AliTRDgeometry::kNlayer*(kNpt+2)*(AliPID::kSPECIES*kNcharge + 1));
   // define rebinning strategy
-  const Int_t nEtaPhi(4); Int_t rebinEtaPhiX[nEtaPhi] = {1, 2, 5, 1}, rebinEtaPhiY[nEtaPhi] = {2, 1, 1, 5};
+  const Int_t nEtaPhi(5); Int_t rebinEtaPhiX[nEtaPhi] = {1, 3, 1, 3, 1}, rebinEtaPhiY[nEtaPhi] = {2, 1, 2, 1, 2};
+  if(aa[1]->GetNbins()==180){ // old binning
+    rebinEtaPhiX[0] = 1; rebinEtaPhiY[0] = 2;
+    rebinEtaPhiX[1] = 2; rebinEtaPhiY[1] = 1;
+    rebinEtaPhiX[2] = 5; rebinEtaPhiY[2] = 1;
+    rebinEtaPhiX[3] = 1; rebinEtaPhiY[3] = 5;
+    rebinEtaPhiX[4] = 1; rebinEtaPhiY[4] = 1; // dummy
+  }
   AliTRDrecoProjection hp[kTrkltNproj]; TObjArray php(kTrkltNproj);
   Int_t ih(0), isel(-1), np[nsel]; memset(np, 0, nsel*sizeof(Int_t));
   const Char_t chName[kNcharge] = {'n', 'p'};const Char_t chSgn[kNcharge] = {'-', '+'};
@@ -1776,7 +1800,7 @@ Bool_t AliTRDresolution::MakeProjectionTracklet(Bool_t mc)
       }
     }
   }
-  AliInfo(Form("Build %3d 3D projections.", ih));
+  AliInfo(Form("Build %3d 3D %s projections.", ih, mc?"MC":""));
 
   AliTRDrecoProjection *pr0(NULL), *pr1(NULL);
   Int_t ly(0), ch(0), sp(2), rcBin(as?as->FindBin(0.):-1), pt(0), cen(0), ioff(0), jspc(nSpc*nCh+1), kspc(nSpc*nCh*4+1);
@@ -1852,6 +1876,7 @@ Bool_t AliTRDresolution::MakeProjectionTracklet(Bool_t mc)
     arr->AddAt(h2, jh++);
   }
   // build combined performance plots
+  Double_t m(0.), s(0.), trend(0.);
   for(Int_t ily(0); ily<AliTRDgeometry::kNlayer; ily++){
     for(Int_t ich(0); ich<nCh; ich++){
       for(Int_t icen(0); icen<nCen; icen++){
@@ -1973,6 +1998,10 @@ Bool_t AliTRDresolution::MakeProjectionTracklet(Bool_t mc)
     if((pr0 = (AliTRDrecoProjection*)php.FindObject(Form("H%sTrkltY%c%c%d%d%d", mc?"MC":"", chName[0], ptName[0], 0, ily, 0)))){
       pr0->H()->SetNameTitle(Form("H%sTrkltY%d", mc?"MC":"", ily), Form("Tracklets :: #Deltay Ly[%d]", ily));
       if((h2 = pr0->Projection2D(kNstat, kNcontours, 1))) arr->AddAt(h2, jh++);
+      if((trend=pr0->GetTrendValue(1,&m,&s))>-100.){
+        PutTrendValue(Form("%sTrkltY%d", mc?"MC":"", ily), trend);
+        PutTrendValue(Form("%sTrkltYS%d", mc?"MC":"", ily), s);
+      }
     }
     /*!dphi*/
     if((pr0 = (AliTRDrecoProjection*)php.FindObject(Form("H%sTrkltPh%c%c%d%d%d", mc?"MC":"", chName[0], ptName[0], 0, ily, 0)))){
@@ -2014,7 +2043,7 @@ Bool_t AliTRDresolution::MakeProjectionTracklet(Bool_t mc)
       if((h2 = pr0->Projection2D(kNstat, kNcontours, 1))) arr->AddAt(h2, jh++);
     }
   } // end layer loop
-  AliInfo(Form("Done %3d 2D projections.", jh));
+  AliInfo(Form("Done %3d 2D %s projections.", jh, mc?"MC":""));
   return kTRUE;
 }
 
@@ -2058,7 +2087,14 @@ Bool_t AliTRDresolution::MakeProjectionTrackIn(Bool_t mc)
   const Char_t *ptCut[kNpt+2] = {"p_{t}[GeV/c]<0.5", "0.5<=p_{t}[GeV/c]<0.8", "0.8<=p_{t}[GeV/c]<1.5", "1.5<=p_{t}[GeV/c]<5.0", "p_{t}[GeV/c]>=5.0"};
   const Char_t *pCut[kNpt+2] = {"p[GeV/c]<0.5", "0.5<=p[GeV/c]<0.8", "0.8<=p[GeV/c]<1.5", "1.5<=p[GeV/c]<5.0", "p[GeV/c]>=5.0"};
   // define rebinning strategy
-  const Int_t nEtaPhi(4); Int_t rebinEtaPhiX[nEtaPhi] = {1, 2, 5, 1}, rebinEtaPhiY[nEtaPhi] = {2, 1, 1, 5};
+  const Int_t nEtaPhi(5); Int_t rebinEtaPhiX[nEtaPhi] = {1, 3, 1, 3, 1}, rebinEtaPhiY[nEtaPhi] = {2, 1, 2, 1, 2};
+  if(aa[1]->GetNbins()==180){ // old binning
+    rebinEtaPhiX[0] = 1; rebinEtaPhiY[0] = 2;
+    rebinEtaPhiX[1] = 2; rebinEtaPhiY[1] = 1;
+    rebinEtaPhiX[2] = 5; rebinEtaPhiY[2] = 1;
+    rebinEtaPhiX[3] = 1; rebinEtaPhiY[3] = 5;
+    rebinEtaPhiX[4] = 1; rebinEtaPhiY[4] = 1; // dummy
+  }
   AliTRDrecoProjection hp[kMCTrkInNproj]; TObjArray php(kMCTrkInNproj+2);
   Int_t ih(0), isel(-1), np[nsel]; memset(np, 0, nsel*sizeof(Int_t));
   // define list of projections
@@ -2112,7 +2148,7 @@ Bool_t AliTRDresolution::MakeProjectionTrackIn(Bool_t mc)
     hp[ih].SetRebinStrategy(nEtaPhi, rebinEtaPhiX, rebinEtaPhiY);
     php.AddLast(&hp[ih++]); np[isel]++;
   }
-  AliInfo(Form("Build %3d 3D projections.", ih));
+  AliInfo(Form("Build %3d 3D %s projections.", ih, mc?"MC":""));
 
   // fill projections
   Int_t ch(0), pt(0), p(0), sp(1), rcBin(as?as->FindBin(0.):-1), ioff(0), joff(0), jsel(0);
@@ -2141,7 +2177,7 @@ Bool_t AliTRDresolution::MakeProjectionTrackIn(Bool_t mc)
     if(ap ) p  = TMath::Min(coord[kNdim], Int_t(kNpt)+1);
     // global selection
     isel = pt*(kNspc*kNcharge+1); isel+=(ch==2?(kNspc*kNcharge):(sp*kNcharge+ch)); ioff = isel*(ax?4:3);
-    jsel = p*(kNspc*kNcharge+1); jsel+=(ch==2?(kNspc*kNcharge):(sp*kNcharge+ch)); joff = jsel*(ax?4:3);
+    jsel = p *(kNspc*kNcharge+1); jsel+=(ch==2?(kNspc*kNcharge):(sp*kNcharge+ch)); joff = jsel*(ax?4:3);
     if(ioff>=ih){
       AliError(Form("Wrong selection %d [%3d]", ioff, ih));
       return kFALSE;
@@ -2204,12 +2240,24 @@ Bool_t AliTRDresolution::MakeProjectionTrackIn(Bool_t mc)
         specY[idx].SetNameTitle(Form("H%sTrkInY%c%d", mc?"MC":"", chName[ich], isp), "Sum over pt");
         specY[idx].H()->SetNameTitle(Form("H%sTrkInY%c%d", mc?"MC":"", chName[ich], isp),
                               Form("TrackIn[%s%c]:: #Deltay", spcName[isp], chSgn[ich]));
+        if((trend=pr0->GetTrendValue(1,&m,&s))>-100.){
+          PutTrendValue(Form("%sTrkInY%c%c%d", mc?"MC":"", chName[ich], ptName[0], isp), trend);
+          PutTrendValue(Form("%sTrkInYS%c%c%d", mc?"MC":"", chName[ich], ptName[0], isp), s);
+        }
         for(Int_t ipt(1); ipt<nPt; ipt++){
           if(!(pr1 = (AliTRDrecoProjection*)php.FindObject(Form("H%sTrkInY%c%c%d", mc?"MC":"", chName[ich], ptName[ipt], isp)))) continue;
+          if((trend=pr1->GetTrendValue(1,&m,&s))>-100.){
+            PutTrendValue(Form("%sTrkInY%c%c%d", mc?"MC":"", chName[ich], ptName[ipt], isp), trend);
+            PutTrendValue(Form("%sTrkInYS%c%c%d", mc?"MC":"", chName[ich], ptName[ipt], isp), s);
+          }
           specY[idx]+=(*pr1);
         }
         php.AddLast(&specY[idx]);
         if((h2 = specY[idx].Projection2D(kNstat, kNcontours, 1, kFALSE))) arr->AddAt(h2, jh++);
+        if((trend=specY[idx].GetTrendValue(1,&m,&s))>-100.){
+          PutTrendValue(Form("%sTrkInY%c%d", mc?"MC":"", chName[ich], isp), trend);
+          PutTrendValue(Form("%sTrkInYS%c%d", mc?"MC":"", chName[ich], isp), s);
+        }
         if((h2 = (TH2*)gDirectory->Get(Form("%sEn", specY[idx].H()->GetName())))) arr->AddAt(h2, jh++);
         if(ich && (pr1 = (AliTRDrecoProjection*)php.FindObject(Form("H%sTrkInY%c%d", mc?"MC":"", chName[0], isp)))) (*pr1)+=specY[idx];
       }
@@ -2220,15 +2268,24 @@ Bool_t AliTRDresolution::MakeProjectionTrackIn(Bool_t mc)
         specPh[idx].H()->SetNameTitle(Form("H%sTrkInPh%c%d", mc?"MC":"", chName[ich], isp),
                               Form("TrackIn[%s%c]:: #Delta#phi", spcName[isp], chSgn[ich]));
         specPh[idx].SetShowRange(-1.5, 1.5);
-        PutTrendValue(Form("TrkInPh%c%c%d", chName[ich], ptName[0], isp), pr0->GetTrendValue(1));
+        if((trend=pr0->GetTrendValue(1,&m,&s))>-100.){
+          PutTrendValue(Form("%sTrkInPh%c%c%d", mc?"MC":"", chName[ich], ptName[0], isp), trend);
+          PutTrendValue(Form("%sTrkInPhS%c%c%d", mc?"MC":"", chName[ich], ptName[0], isp), s);
+        }
         for(Int_t ipt(1); ipt<nPt; ipt++){
           if(!(pr1 = (AliTRDrecoProjection*)php.FindObject(Form("H%sTrkInPh%c%c%d", mc?"MC":"", chName[ich], ptName[ipt], isp)))) continue;
-          PutTrendValue(Form("TrkInPh%c%c%d", chName[ich], ptName[ipt], isp), pr1->GetTrendValue(1));
+          if((trend=pr1->GetTrendValue(1,&m,&s))>-100.){
+            PutTrendValue(Form("%sTrkInPh%c%c%d", mc?"MC":"", chName[ich], ptName[ipt], isp), trend);
+            PutTrendValue(Form("%sTrkInPhS%c%c%d", mc?"MC":"", chName[ich], ptName[ipt], isp), s);
+          }
           specPh[idx]+=(*pr1);
         }
         php.AddLast(&specPh[idx]);
         if((h2 = specPh[idx].Projection2D(kNstat, kNcontours, 1))) arr->AddAt(h2, jh++);
-        PutTrendValue(Form("TrkInPh%c%d", chName[ich], isp), specPh[idx].GetTrendValue(1));
+        if((trend=specPh[idx].GetTrendValue(1,&m,&s))>-100.){
+          PutTrendValue(Form("%sTrkInPh%c%d", mc?"MC":"", chName[ich], isp), trend);
+          PutTrendValue(Form("%sTrkInPhS%c%d", mc?"MC":"", chName[ich], isp), s);
+        }
         if(ich && (pr1 = (AliTRDrecoProjection*)php.FindObject(Form("H%sTrkInPh%c%d", mc?"MC":"", chName[0], isp)))) (*pr1)+=specPh[idx];
       }
       /*!dQdl*/
@@ -2240,14 +2297,14 @@ Bool_t AliTRDresolution::MakeProjectionTrackIn(Bool_t mc)
         specQ[idx].SetShowRange(-2.2, -1.75);
         specQ[idx].H()->GetZaxis()->SetTitle("dQdl [a.u.]");
         if((trend = pr0->GetTrendValue(2, &m))>-100.){
-          PutTrendValue(Form("TrkInQ%c%c%d", chName[ich], ptName[0], isp), trend);
-          PutTrendValue(Form("TrkInQS%c%c%d", chName[ich], ptName[0], isp), m);
+          PutTrendValue(Form("%sTrkInQ%c%c%d", mc?"MC":"", chName[ich], ptName[0], isp), trend);
+          PutTrendValue(Form("%sTrkInQS%c%c%d", mc?"MC":"", chName[ich], ptName[0], isp), m);
         }
         for(Int_t ipt(1); ipt<nPt; ipt++){
           if(!(pr1 = (AliTRDrecoProjection*)php.FindObject(Form("H%sTrkInQ%c%c%d", mc?"MC":"", chName[ich], ptName[ipt], isp)))) continue;
           if((trend=pr1->GetTrendValue(2, &m))>-100.){
-            PutTrendValue(Form("TrkInQ%c%c%d", chName[ich], ptName[ipt], isp), trend);
-            PutTrendValue(Form("TrkInQS%c%c%d", chName[ich], ptName[ipt], isp), m);
+            PutTrendValue(Form("%sTrkInQ%c%c%d", mc?"MC":"", chName[ich], ptName[ipt], isp), trend);
+            PutTrendValue(Form("%sTrkInQS%c%c%d", mc?"MC":"", chName[ich], ptName[ipt], isp), m);
           }
           specQ[idx]+=(*pr1);
         }
@@ -2257,8 +2314,8 @@ Bool_t AliTRDresolution::MakeProjectionTrackIn(Bool_t mc)
         specQ[idx].SetShowRange(-1.85, -1.4);
         if((h2 = specQ[idx].Projection2D(kNstat, kNcontours, 0))) arr->AddAt(h2, jh++);
         if((trend=specQ[idx].GetTrendValue(2, &m))>-100.){
-          PutTrendValue(Form("TrkInQ%c%d", chName[ich], isp), trend);
-          PutTrendValue(Form("TrkInQS%c%d", chName[ich], isp), m);
+          PutTrendValue(Form("%sTrkInQ%c%d", mc?"MC":"", chName[ich], isp), trend);
+          PutTrendValue(Form("%sTrkInQS%c%d", mc?"MC":"", chName[ich], isp), m);
         }
         if(ich && (pr1 = (AliTRDrecoProjection*)php.FindObject(Form("H%sTrkInQ%c%d", mc?"MC":"", chName[0], isp)))) (*pr1)+=specQ[idx];
       }
@@ -2277,8 +2334,8 @@ Bool_t AliTRDresolution::MakeProjectionTrackIn(Bool_t mc)
         pr0->SetShowRange(-0.3, 0.3);
         if((h2 = pr0->Projection2D(kNstat, kNcontours, 1))) arr->AddAt(h2, jh++);
         if((trend=pr0->GetTrendValue(1,&m,&s))>-100.){
-          PutTrendValue(Form("TrkInY%c%c", chName[ich], ptName[ipt]), trend);
-          PutTrendValue(Form("TrkInYS%c%c", chName[ich], ptName[ipt]), s);
+          PutTrendValue(Form("%sTrkInY%c%c", mc?"MC":"", chName[ich], ptName[ipt]), trend);
+          PutTrendValue(Form("%sTrkInYS%c%c", mc?"MC":"", chName[ich], ptName[ipt]), s);
         }
         if(ipt && (pr1 = (AliTRDrecoProjection*)php.FindObject(Form("H%sTrkInY%c%c%d", mc?"MC":"", chName[ich], ptName[0], 0)))) (*pr1)+=(*pr0);
       }
@@ -2291,7 +2348,10 @@ Bool_t AliTRDresolution::MakeProjectionTrackIn(Bool_t mc)
         pr0->H()->SetNameTitle(Form("H%sTrkInPh%c%c", mc?"MC":"", chName[ich], ptName[ipt]),
                                   Form("TrackIn[%c]:: #Delta#phi{%s}", chSgn[ich], ptCut[ipt]));
         if((h2 = pr0->Projection2D(kNstat, kNcontours, 1))) arr->AddAt(h2, jh++);
-        PutTrendValue(Form("TrkInPh%c%c", chName[ich], ptName[ipt]), pr0->GetTrendValue(1));
+        if((trend=pr0->GetTrendValue(1,&m,&s))>-100.){
+          PutTrendValue(Form("%sTrkInPh%c%c", mc?"MC":"", chName[ich], ptName[ipt]), trend);
+          PutTrendValue(Form("%sTrkInPhS%c%c", mc?"MC":"", chName[ich], ptName[ipt]), s);
+        }
         if(ipt && (pr1 = (AliTRDrecoProjection*)php.FindObject(Form("H%sTrkInPh%c%c%d", mc?"MC":"", chName[ich], ptName[0], 0)))) (*pr1)+=(*pr0);
       }
       /*!dx*/
@@ -2303,7 +2363,7 @@ Bool_t AliTRDresolution::MakeProjectionTrackIn(Bool_t mc)
         pr0->H()->SetNameTitle(Form("H%sTrkInX%c%c", mc?"MC":"", chName[ich], ptName[ipt]),
                                   Form("TrackIn[%c]:: #Deltax{%s}", chSgn[ich], ptCut[ipt]));
         if((h2 = pr0->Projection2D(kNstat, kNcontours, 1))) arr->AddAt(h2, jh++);
-        PutTrendValue(Form("TrkInX%c%c", chName[ich], ptName[ipt]), pr0->GetTrendValue(1));
+        PutTrendValue(Form("%sTrkInX%c%c", mc?"MC":"", chName[ich], ptName[ipt]), pr0->GetTrendValue(1));
         if(!ipt){
           xlow[ich] = (*pr0);
           xlow[ich].SetNameTitle(Form("H%sTrkInX%c%c%d", mc?"MC":"", chName[ich], ptName[0], 5),
@@ -2322,8 +2382,8 @@ Bool_t AliTRDresolution::MakeProjectionTrackIn(Bool_t mc)
       if((h2 = pr0->Projection2D(kNstat, kNcontours, 1, kFALSE))) arr->AddAt(h2, jh++);
       if((h2 = (TH2*)gDirectory->Get(Form("%sEn", pr0->H()->GetName())))) arr->AddAt(h2, jh++);
       if((trend=pr0->GetTrendValue(1, &m, &s))>-100.){
-        PutTrendValue(Form("TrkInY%c", chName[ich]), trend);
-        PutTrendValue(Form("TrkInYS%c", chName[ich]), s);
+        PutTrendValue(Form("%sTrkInY%c", mc?"MC":"", chName[ich]), trend);
+        PutTrendValue(Form("%sTrkInYS%c", mc?"MC":"", chName[ich]), s);
       }
       if(ich && (pr1 = (AliTRDrecoProjection*)php.FindObject(Form("H%sTrkInY%c%c%d", mc?"MC":"", chName[0], ptName[0], 0)))) (*pr1)+=(*pr0);
     }
@@ -2342,7 +2402,10 @@ Bool_t AliTRDresolution::MakeProjectionTrackIn(Bool_t mc)
                             Form("TrackIn[%c]:: #Delta#phi", chSgn[ich]));
       pr0->SetShowRange(-1., 1.);
       if((h2 = pr0->Projection2D(kNstat, kNcontours, 1))) arr->AddAt(h2, jh++);
-      PutTrendValue(Form("TrkInPh%c", chName[ich]), pr0->GetTrendValue(1));
+      if((trend=pr0->GetTrendValue(1, &m, &s))>-100.){
+        PutTrendValue(Form("%sTrkInPh%c", mc?"MC":"", chName[ich]), trend);
+        PutTrendValue(Form("%sTrkInPhS%c", mc?"MC":"", chName[ich]), s);
+      }
       if(ich==1 && (pr1 = (AliTRDrecoProjection*)php.FindObject(Form("H%sTrkInPh%c%c%d", mc?"MC":"", chName[0], ptName[0], 0)))) (*pr1)+=(*pr0);
     }
     /*!dx*/
@@ -2350,7 +2413,7 @@ Bool_t AliTRDresolution::MakeProjectionTrackIn(Bool_t mc)
       pr0->H()->SetNameTitle(Form("H%sTrkInX%c", mc?"MC":"", chName[ich]),
                             Form("TrackIn[%c]:: #Deltax", chSgn[ich]));
       if((h2 = pr0->Projection2D(kNstat, kNcontours, 1))) arr->AddAt(h2, jh++);
-      PutTrendValue(Form("TrkInX%c", chName[ich]), pr0->GetTrendValue(1));
+      PutTrendValue(Form("%sTrkInX%c", mc?"MC":"", chName[ich]), pr0->GetTrendValue(1));
       if(ich==1 && (pr1 = (AliTRDrecoProjection*)php.FindObject(Form("H%sTrkInX%c%c%d", mc?"MC":"", chName[0], ptName[0], 0)))) (*pr1)+=(*pr0);
     }
     /*!dx low pt*/
@@ -2369,6 +2432,7 @@ Bool_t AliTRDresolution::MakeProjectionTrackIn(Bool_t mc)
       pr0->H()->SetNameTitle(Form("H%sTrkInY%d", mc?"MC":"", isp), Form("TrackIn[%s] :: #Deltay", spcName[isp]));
       pr0->SetShowRange(-0.3, 0.3);
       if((h2 = pr0->Projection2D(kNstat, kNcontours, 1, kFALSE))) arr->AddAt(h2, jh++);
+      PutTrendValue(Form("%sTrkInY%d", mc?"MC":"", isp), pr0->GetTrendValue(1));
       if((h2 = (TH2*)gDirectory->Get(Form("%sEn", pr0->H()->GetName())))) arr->AddAt(h2, jh++);
     }
     /*!dphi*/
@@ -2376,7 +2440,7 @@ Bool_t AliTRDresolution::MakeProjectionTrackIn(Bool_t mc)
       pr0->H()->SetNameTitle(Form("H%sTrkInPh%d", mc?"MC":"", isp), Form("TrackIn[%s] :: #Delta#phi", spcName[isp]));
       pr0->SetShowRange(-1., 1.);
       if((h2 = pr0->Projection2D(kNstat, kNcontours, 1))) arr->AddAt(h2, jh++);
-      PutTrendValue(Form("TrkInPh%d", isp), pr0->GetTrendValue(1));
+      PutTrendValue(Form("%sTrkInPh%d", mc?"MC":"", isp), pr0->GetTrendValue(1));
     }
     /*!dQdl*/
     if((pr0 = (AliTRDrecoProjection*)php.FindObject(Form("H%sTrkInQ%c%d", mc?"MC":"", chName[0], isp)))){
@@ -2387,8 +2451,8 @@ Bool_t AliTRDresolution::MakeProjectionTrackIn(Bool_t mc)
       pr0->SetShowRange(-1.85, -1.4);
       if((h2 = pr0->Projection2D(kNstat, kNcontours, 0))) arr->AddAt(h2, jh++);
       if((trend=pr0->GetTrendValue(2, &m))>-100.){
-        PutTrendValue(Form("TrkInQ%d", isp), trend);
-        PutTrendValue(Form("TrkInQS%d", isp), m);
+        PutTrendValue(Form("%sTrkInQ%d", mc?"MC":"", isp), trend);
+        PutTrendValue(Form("%sTrkInQS%d", mc?"MC":"", isp), m);
       }
     }
   } // end PID processing
@@ -2420,6 +2484,10 @@ Bool_t AliTRDresolution::MakeProjectionTrackIn(Bool_t mc)
     }
     pr0->H()->SetNameTitle(Form("H%sTrkInRCZ", mc?"MC":""), "TrackIn[RC]:: #Deltaz");
     if((h2 = pr0->Projection2D(kNstat, kNcontours, 1))) arr->AddAt(h2, jh++);
+    if((trend=pr0->GetTrendValue(1,&m,&s))>-100.){
+      PutTrendValue(Form("%sTrkInRCZ", mc?"MC":""), trend);
+      PutTrendValue(Form("%sTrkInRCZS", mc?"MC":""), s);
+    }
   }
   /*!RC dy*/
   if((pr0 = (AliTRDrecoProjection*)php.FindObject(Form("H%sTrkInRCY%c", mc?"MC":"", ptName[0])))){
@@ -2448,7 +2516,7 @@ Bool_t AliTRDresolution::MakeProjectionTrackIn(Bool_t mc)
     pr0->H()->SetNameTitle(Form("H%sTrkInRCX", mc?"MC":""), "TrackIn[RC]:: #Deltax");
     if((h2 = pr0->Projection2D(kNstat, kNcontours, 1))) arr->AddAt(h2, jh++);
   }
-  AliInfo(Form("Done %3d 2D projections.", jh));
+  AliInfo(Form("Done %3d 2D %s projections.", jh, mc?"MC":""));
   return kTRUE;
 }
 
@@ -2483,7 +2551,14 @@ Bool_t AliTRDresolution::MakeProjectionTrack()
   const Char_t ptName[kNpt] = {'l', 'i', 'h'};
   const Char_t *ptCut[kNpt] = {"p_{t}[GeV/c]<0.8", "0.8<=p_{t}[GeV/c]<1.5", "p_{t}[GeV/c]>=1.5"};
   // define rebinning strategy
-  const Int_t nEtaPhi(4); Int_t rebinEtaPhiX[nEtaPhi] = {1, 2, 5, 1}, rebinEtaPhiY[nEtaPhi] = {2, 1, 1, 5};
+  const Int_t nEtaPhi(5); Int_t rebinEtaPhiX[nEtaPhi] = {1, 3, 1, 3, 1}, rebinEtaPhiY[nEtaPhi] = {2, 1, 2, 1, 2};
+  if(aa[1]->GetNbins()==180){ // old binning
+    rebinEtaPhiX[0] = 1; rebinEtaPhiY[0] = 2;
+    rebinEtaPhiX[1] = 2; rebinEtaPhiY[1] = 1;
+    rebinEtaPhiX[2] = 5; rebinEtaPhiY[2] = 1;
+    rebinEtaPhiX[3] = 1; rebinEtaPhiY[3] = 5;
+    rebinEtaPhiX[4] = 1; rebinEtaPhiY[4] = 1; // dummy
+  }
   AliTRDrecoProjection hp[kTrkNproj]; TObjArray php(kTrkNproj);
   Int_t ih(0), isel(-1), np[nsel]; memset(np, 0, nsel*sizeof(Int_t));
   for(Int_t ily(0); ily<AliTRDgeometry::kNlayer; ily++){
@@ -2517,6 +2592,7 @@ Bool_t AliTRDresolution::MakeProjectionTrack()
       php.AddLast(&hp[ih++]); np[isel]++;
     }
   }
+  AliInfo(Form("Build %3d 3D projections.", ih));
 
   Int_t ly(0), ch(0), pt(0), sp(2), rcBin(as?as->FindBin(0.):-1);
   for (Long64_t ib(0); ib < H->GetNbins(); ib++) {
@@ -2649,6 +2725,14 @@ Bool_t AliTRDresolution::PostProcess()
     AliInfo("Building array of projections ...");
     fProj = new TObjArray(kNclasses); fProj->SetOwner(kTRUE);
   }
+  // set pt/p segmentation. guess from data
+  THnSparse *H(NULL);
+  if(!(H = (THnSparse*)fContainer->FindObject("hTracklet2TRDin"))){
+    AliError("Missing/Wrong data @ hTracklet2TRDin.");
+    return kFALSE;
+  }
+  fNpt=H->GetAxis(kPt)->GetNbins()+1;
+  if(!MakeMomSegmentation()) return kFALSE;
 
   //PROCESS EXPERIMENTAL DISTRIBUTIONS
   // Clusters detector
@@ -2735,16 +2819,17 @@ TObjArray* AliTRDresolution::Histos()
   fContainer  = new TObjArray(kNclasses); fContainer->SetOwner(kTRUE);
   THnSparse *H(NULL);
   const Int_t nhn(100); Char_t hn[nhn]; TString st;
+  Int_t triggerBins(fTriggerList?(TMath::Power(2.,fTriggerList->GetEntriesFast())-1):0);
 
   //++++++++++++++++++++++
   // cluster to detector
   snprintf(hn, nhn, "h%s", fgPerformanceName[kDetector]);
   if(!(H = (THnSparseI*)gROOT->FindObject(hn))){
     const Int_t mdim(6);
-    const Char_t *cldTitle[mdim] = {"layer", fgkTitle[kPhi], "pad row", "centrality", "q [a.u.]", "no. of pads"/*, "tb [10 Hz]"*/};
-    const Int_t cldNbins[mdim]   = {AliTRDgeometry::kNlayer, fgkNbins[kPhi], 76, AliTRDeventInfo::kCentralityClasses, 50, kNpads};
+    const Char_t *cldTitle[mdim] = {"layer", fgkTitle[kPhi], "pad row", "centrality", "q [a.u.]", triggerBins?"trigger":"no. of pads"/*, "tb [10 Hz]"*/};
+    const Int_t cldNbins[mdim]   = {AliTRDgeometry::kNlayer, fgkNbins[kPhi], 76, AliTRDeventInfo::kCentralityClasses, 50, triggerBins?triggerBins:kNpads};
     const Double_t cldMin[mdim]  = {-0.5, fgkMin[kPhi], -0.5, -0.5, 0., 0.5},
-                   cldMax[mdim]  = {AliTRDgeometry::kNlayer-0.5, fgkMax[kPhi], 75.5, AliTRDeventInfo::kCentralityClasses - 0.5, 1200., kNpads+.5};
+                   cldMax[mdim]  = {AliTRDgeometry::kNlayer-0.5, fgkMax[kPhi], 75.5, AliTRDeventInfo::kCentralityClasses - 0.5, 1200., triggerBins?(triggerBins+.5):(kNpads+.5)};
     st = "cluster proprieties;";
     // define minimum info to be saved in non debug mode
     Int_t ndim=DebugLevel()>=1?mdim:Int_t(kNdimDet);
@@ -2757,10 +2842,10 @@ TObjArray* AliTRDresolution::Histos()
   snprintf(hn, nhn, "h%s", fgPerformanceName[kCluster]);
   if(!(H = (THnSparseI*)gROOT->FindObject(hn))){
     const Int_t mdim(10);
-    const Char_t *clTitle[mdim] = {"layer", fgkTitle[kPhi], fgkTitle[kEta], fgkTitle[kYrez], "#Deltax [cm]", "Q</Q", "Q/angle", "#Phi [deg]", "centrality", "no. of pads"};
-    const Int_t clNbins[mdim]   = {AliTRDgeometry::kNlayer, fgkNbins[kPhi], fgkNbins[kEta], fgkNbins[kYrez], 45, 30, 30, 15, AliTRDeventInfo::kCentralityClasses, kNpads};
+    const Char_t *clTitle[mdim] = {"layer", fgkTitle[kPhi], fgkTitle[kEta], fgkTitle[kYrez], "#Deltax [cm]", "Q</Q", "Q/angle", "#Phi [deg]", "centrality", triggerBins?"trigger":"no. of pads"};
+    const Int_t clNbins[mdim]   = {AliTRDgeometry::kNlayer, fgkNbins[kPhi], fgkNbins[kEta], fgkNbins[kYrez], 45, 30, 30, 15, AliTRDeventInfo::kCentralityClasses, triggerBins?triggerBins:kNpads};
     const Double_t clMin[mdim]  = {-0.5, fgkMin[kPhi], fgkMin[kEta], fgkMin[kYrez]/10., -.5, 0.1, -2., -45, -0.5, 0.5},
-                   clMax[mdim]  = {AliTRDgeometry::kNlayer-0.5, fgkMax[kPhi], fgkMax[kEta], fgkMax[kYrez]/10., 4., 2.1, 118., 45, AliTRDeventInfo::kCentralityClasses - 0.5, kNpads+.5};
+                   clMax[mdim]  = {AliTRDgeometry::kNlayer-0.5, fgkMax[kPhi], fgkMax[kEta], fgkMax[kYrez]/10., 4., 2.1, 118., 45, AliTRDeventInfo::kCentralityClasses - 0.5, triggerBins?(triggerBins+.5):(kNpads+.5)};
     st = "cluster spatial&charge resolution;";
     // define minimum info to be saved in non debug mode
     Int_t ndim=DebugLevel()>=1?mdim:Int_t(kNdimCl);
@@ -2784,12 +2869,14 @@ TObjArray* AliTRDresolution::Histos()
     trTitle[kBC]=StrDup("layer"); trNbins[kBC] = AliTRDgeometry::kNlayer; trMin[kBC] = -0.5; trMax[kBC] = AliTRDgeometry::kNlayer-0.5;
     Int_t jdim(kNdim);
     trTitle[jdim]=StrDup("centrality"); trNbins[jdim] = AliTRDeventInfo::kCentralityClasses; trMin[jdim] = -.5; trMax[jdim] = AliTRDeventInfo::kCentralityClasses - 0.5;
-    jdim++; trTitle[jdim]=StrDup("occupancy [%]"); trNbins[jdim] = 12; trMin[jdim] = 25.; trMax[jdim] = 85.;
-//    jdim++; trTitle[jdim]=StrDup("gap [cm]"); trNbins[jdim] = 80; trMin[jdim] = 0.1; trMax[jdim] = 2.1;
-//     jdim++; trTitle[jdim]=StrDup("size_{0} [cm]"); trNbins[jdim] = 16; trMin[jdim] = 0.15; trMax[jdim] = 1.75;
-//     jdim++; trTitle[jdim]=StrDup("pos_{0} [cm]"); trNbins[jdim] = 10; trMin[jdim] = 0.; trMax[jdim] = 3.5;
-//     jdim++; trTitle[jdim]=StrDup("size_{1} [cm]"); trNbins[jdim] = 16; trMin[jdim] = 0.15; trMax[jdim] = 1.75;
-//     jdim++; trTitle[jdim]=StrDup("pos_{1} [cm]"); trNbins[jdim] = 10; trMin[jdim] = 0.; trMax[jdim] = 3.5;
+    jdim++; 
+    if(triggerBins){
+      trTitle[jdim]=StrDup("trigger"); trNbins[jdim] = triggerBins;
+      trMin[jdim] = 0.5; trMax[jdim] = triggerBins+.5;
+    } else {
+      trTitle[jdim]=StrDup("occupancy [%]"); trNbins[jdim] = 12;
+      trMin[jdim] = 25.; trMax[jdim] = 85.;
+    }
 
     st = "tracklet spatial&charge resolution;";
     // define minimum info to be saved in non debug mode
@@ -2808,14 +2895,13 @@ TObjArray* AliTRDresolution::Histos()
     Int_t trinNbins[mdim];   memcpy(trinNbins, fgkNbins, kNdim*sizeof(Int_t));
     Double_t trinMin[mdim];  memcpy(trinMin, fgkMin, kNdim*sizeof(Double_t));
     Double_t trinMax[mdim];  memcpy(trinMax, fgkMax, kNdim*sizeof(Double_t));
-    if(fTriggerList){
-      trinTitle[kBC]=StrDup("trigger"); 
-      trinNbins[kBC] = TMath::Power(2.,fTriggerList->GetEntriesFast())-1;
-      trinMin[kBC] = 0.5; trinMax[kBC] = trinNbins[kBC]+.5;
-    }
-    trinNbins[kSpeciesChgRC] = Int_t(kNcharge)*(kNspc-1)+1; trinMin[kSpeciesChgRC] = -kNspc+0.5; trinMax[kSpeciesChgRC] = kNspc-0.5;
-    if(DebugLevel()>=1){trinNbins[kPt]=24; trinMax[kPt] = 23.5;}
-    trinTitle[kNdim]=StrDup("bin_p"); trinNbins[kNdim] = (DebugLevel()>=1?24:kNpt); trinMin[kNdim] = -0.5; trinMax[kNdim] = trinNbins[kNdim]-.5;
+    if(triggerBins){
+      trinTitle[kBC]=StrDup("trigger"); trinNbins[kBC] = triggerBins;
+      trinMin[kBC] = 0.5; trinMax[kBC] = triggerBins+.5;
+    }
+//    trinNbins[kSpeciesChgRC] = Int_t(kNcharge)*(kNspc-1)+1; trinMin[kSpeciesChgRC] = -kNspc+0.5; trinMax[kSpeciesChgRC] = kNspc-0.5;
+    trinNbins[kPt]=fNpt-1; trinMax[kPt] = trinNbins[kPt]-.5;
+    trinTitle[kNdim]=StrDup("bin_p"); trinNbins[kNdim] = fNpt-1; trinMin[kNdim] = -0.5; trinMax[kNdim] = trinNbins[kNdim]-.5;
     trinTitle[kNdim+1]=StrDup("dx [cm]"); trinNbins[kNdim+1]=48; trinMin[kNdim+1]=-2.4; trinMax[kNdim+1]=2.4;
     //trinTitle[kNdim+2]=StrDup("Fill Bunch"); trinNbins[kNdim+2]=3500; trinMin[kNdim+2]=-0.5; trinMax[kNdim+2]=3499.5;
     st = "r-#phi/z/angular residuals @ TRD entry;";
@@ -2836,56 +2922,24 @@ TObjArray* AliTRDresolution::Histos()
   // cluster to TrackRef residuals/pulls
   snprintf(hn, nhn, "h%s", fgPerformanceName[kMCcluster]);
   if(!(H = (THnSparseI*)gROOT->FindObject(hn))){
-    const Char_t *clTitle[kNdim] = {"layer", fgkTitle[kPhi], fgkTitle[kEta], fgkTitle[kYrez], "#Deltax [cm]", "Q</Q", fgkTitle[kSpeciesChgRC], "#Phi [deg]"};
-    const Int_t clNbins[kNdim]   = {AliTRDgeometry::kNlayer, fgkNbins[kPhi], fgkNbins[kEta], fgkNbins[kYrez], 20, 10, Int_t(kNcharge)*AliPID::kSPECIES+1, 15};
-    const Double_t clMin[kNdim]  = {-0.5, fgkMin[kPhi], fgkMin[kEta], fgkMin[kYrez]/10., 0., 0.1, -AliPID::kSPECIES-0.5, -45},
-                   clMax[kNdim]  = {AliTRDgeometry::kNlayer-0.5, fgkMax[kPhi], fgkMax[kEta], fgkMax[kYrez]/10., 4., 2.1, AliPID::kSPECIES+0.5, 45};
-    st = "MC cluster spatial resolution;";
-    // define minimum info to be saved in non debug mode
-    Int_t ndim=DebugLevel()>=1?kNdim:4;
-    for(Int_t idim(0); idim<ndim; idim++){ st += clTitle[idim]; st+=";";}
-    H = new THnSparseI(hn, st.Data(), ndim, clNbins, clMin, clMax);
+    H = (THnSparseI*)((THnSparseI*)fContainer->At(kCluster))->Clone(hn);
+    H->SetTitle("MC cluster spatial resolution");
   } else H->Reset();
   fContainer->AddAt(H, kMCcluster);
   //++++++++++++++++++++++
   // tracklet to TrackRef
   snprintf(hn, nhn, "h%s", fgPerformanceName[kMCtracklet]);
   if(!(H = (THnSparseI*)gROOT->FindObject(hn))){
-    Char_t *trTitle[kNdim]; memcpy(trTitle, fgkTitle, kNdim*sizeof(Char_t*));
-    Int_t trNbins[kNdim]; memcpy(trNbins, fgkNbins, kNdim*sizeof(Int_t));
-    Double_t trMin[kNdim]; memcpy(trMin, fgkMin, kNdim*sizeof(Double_t));
-    Double_t trMax[kNdim]; memcpy(trMax, fgkMax, kNdim*sizeof(Double_t));
-    // set specific fields
-    trTitle[kBC]=StrDup("layer"); trNbins[kBC] = AliTRDgeometry::kNlayer; trMin[kBC] = -0.5; trMax[kBC] = AliTRDgeometry::kNlayer-0.5;
-    trMin[kYrez] = -0.54; trMax[kYrez] = -trMin[kYrez];
-    trMin[kPrez] = -4.5; trMax[kPrez] = -trMin[kPrez];
-    trMin[kZrez] = -1.5; trMax[kZrez] = -trMin[kZrez];
-    trNbins[kSpeciesChgRC] = Int_t(kNcharge)*AliPID::kSPECIES+1;trMin[kSpeciesChgRC] = -AliPID::kSPECIES-0.5; trMax[kSpeciesChgRC] = AliPID::kSPECIES+0.5;
-
-    st = "MC tracklet spatial resolution;";
-    // define minimum info to be saved in non debug mode
-    Int_t ndim=DebugLevel()>=1?kNdim:4;
-    for(Int_t idim(0); idim<ndim; idim++){ st += trTitle[idim]; st+=";";}
-    H = new THnSparseI(hn, st.Data(), ndim, trNbins, trMin, trMax);
+    H = (THnSparseI*)((THnSparseI*)fContainer->At(kTracklet))->Clone(hn);
+    H->SetTitle("MC tracklet spatial resolution");
   } else H->Reset();
   fContainer->AddAt(H, kMCtracklet);
   //++++++++++++++++++++++
   // TRDin to TrackRef
   snprintf(hn, nhn, "h%s", fgPerformanceName[kMCtrackIn]);
   if(!(H = (THnSparseI*)gROOT->FindObject(hn))){
-    st = "MC r-#phi/z/angular residuals @ TRD entry;";
-    // set specific fields
-    Int_t trNbins[kNdim]; memcpy(trNbins, fgkNbins, kNdim*sizeof(Int_t));
-    Double_t trMin[kNdim]; memcpy(trMin, fgkMin, kNdim*sizeof(Double_t));
-    Double_t trMax[kNdim]; memcpy(trMax, fgkMax, kNdim*sizeof(Double_t));
-    trMin[kYrez] = -0.54; trMax[kYrez] = -trMin[kYrez];
-    trMin[kPrez] = -2.4; trMax[kPrez] = -trMin[kPrez];
-    trMin[kZrez] = -0.9; trMax[kZrez] = -trMin[kZrez];
-    trNbins[kSpeciesChgRC] = Int_t(kNcharge)*AliPID::kSPECIES+1;trMin[kSpeciesChgRC] = -AliPID::kSPECIES-0.5; trMax[kSpeciesChgRC] = AliPID::kSPECIES+0.5;
-    // define minimum info to be saved in non debug mode
-    Int_t ndim=DebugLevel()>=1?kNdim:7;
-    for(Int_t idim(0); idim<ndim; idim++){ st += fgkTitle[idim]; st+=";";}
-    H = new THnSparseI(hn, st.Data(), ndim, trNbins, trMin, trMax);
+    H = (THnSparseI*)((THnSparseI*)fContainer->At(kTrackIn))->Clone(hn);
+    H->SetTitle("MC r-#phi/z/angular residuals @ TRD entry");
   } else H->Reset();
   fContainer->AddAt(H, kMCtrackIn);
   //++++++++++++++++++++++
@@ -2901,7 +2955,8 @@ TObjArray* AliTRDresolution::Histos()
     trMin[kYrez] = -0.9; trMax[kYrez] = -trMin[kYrez];
     trMin[kPrez] = -1.5; trMax[kPrez] = -trMin[kPrez];
     trMin[kZrez] = -0.9; trMax[kZrez] = -trMin[kZrez];
-    trNbins[kSpeciesChgRC] = Int_t(kNcharge)*AliPID::kSPECIES+1;trMin[kSpeciesChgRC] = -AliPID::kSPECIES-0.5; trMax[kSpeciesChgRC] = AliPID::kSPECIES+0.5;
+    trNbins[kPt] =fNpt-1;trMax[kPt]   = trNbins[kPt]-.5;
+    //trNbins[kSpeciesChgRC] = Int_t(kNcharge)*AliPID::kSPECIES+1;trMin[kSpeciesChgRC] = -AliPID::kSPECIES-0.5; trMax[kSpeciesChgRC] = AliPID::kSPECIES+0.5;
     trTitle[kNdim]=StrDup("#Deltap_{t}/p_{t} [%]"); trNbins[kNdim] = 25; trMin[kNdim] = -4.5; trMax[kNdim] = 20.5;
 
     st = "MC track spatial&p_{t} resolution;";
index f5bee03..8fd016b 100644 (file)
@@ -104,14 +104,12 @@ public:
 //  Float_t GetCorrectionX(Int_t det, Int_t tb) const {return fXcorr[det][tb];}
   static void     GetRangeZ(TH2 *h2, Float_t &m, Float_t &M);
   Float_t         GetPtThreshold() const {return fPtThreshold;}
-  static Int_t    GetPtBin(Float_t pt);
   Bool_t          GetRefFigure(Int_t ifig);
 
   virtual TObjArray*  Histos(); 
 //  Bool_t  Load(const Char_t *file = "AnalysisResults.root", const Char_t *dir="TRD_Performance");
 //  Bool_t  LoadCorrection(const Char_t *file=NULL);
   void            MakeSummary();
-  static void     MakePtSegmentation(Float_t pt0=0.5, Float_t dpt=0.002);
 
   TObjArray*      Results(ETRDresolutionClass c) const  { if(!fProj) return NULL; return (TObjArray*)fProj->At(c);}
   void            UserExec(Option_t * opt);
@@ -176,7 +174,6 @@ protected:
   static Double_t const fgkMin[kNdim];    //! low limits for projections
   static Double_t const fgkMax[kNdim];    //! high limits for projections
   static Char_t const  *fgkTitle[kNdim];  //! title of projection
-  static Float_t        fgPtBin[25];      //! pt segmentation
   TObjArray            *fProj;            //! result holder - sigma values
   TDatabasePDG         *fDBPDG;           //! PDG database
 
index db00019..01db513 100644 (file)
@@ -539,7 +539,7 @@ void AliTRDtrackInfo::SetSlices(Int_t n, Double32_t *s)
 }
  
 //___________________________________________________
-Bool_t AliTRDtrackInfo::AliMCinfo::GetDirections(Float_t &x0, Float_t &y0, Float_t &z0, Float_t &dydx, Float_t &dzdx, Float_t &pt, Float_t &eta, Float_t &phi, UChar_t &status) const
+Bool_t AliTRDtrackInfo::AliMCinfo::GetDirections(Float_t &x0, Float_t &y0, Float_t &z0, Float_t &dydx, Float_t &dzdx, Float_t &pt, Float_t &p, Float_t &eta, Float_t &phi, UChar_t &status) const
 {
 // Check for 2 track ref for the tracklet defined bythe radial position x0
 // The "status" is a bit map and gives a more informative output in case of failure:
@@ -569,6 +569,7 @@ Bool_t AliTRDtrackInfo::AliMCinfo::GetDirections(Float_t &x0, Float_t &y0, Float
     return kFALSE;
   }
   pt=tr[1]->Pt();
+  p =tr[1]->P();
   if(pt < 1.e-3) return kFALSE;
 
   Double_t dx = tr[1]->LocalX() - tr[0]->LocalX();
index bebb94a..6a73886 100644 (file)
@@ -101,7 +101,7 @@ public:
     Int_t   GetNTrackRefs() const {return fNTrackRefs;}
     Int_t   GetPDG() const {return fPDG;}
     Int_t   GetPID() const ;
-    Bool_t  GetDirections(Float_t &x0, Float_t &y0, Float_t &z0, Float_t &dydx, Float_t &dzdx, Float_t &pt, Float_t &eta, Float_t &phi, UChar_t &s) const;
+    Bool_t  GetDirections(Float_t &x0, Float_t &y0, Float_t &z0, Float_t &dydx, Float_t &dzdx, Float_t &pt, Float_t &p, Float_t &eta, Float_t &phi, UChar_t &s) const;
     AliTrackReference const* GetTrackRef(Int_t ref=0) const {return fTrackRefs[ref];}
     static Double_t GetKalmanStep() {return fgKalmanStep;}
     static Bool_t IsKalmanUpdate() {return fgKalmanUpdate;}
index fad032d..4efa824 100644 (file)
@@ -187,15 +187,17 @@ TH1* AliTRDtrendingManager::MakeTrends(const char *fileList, TObjArray *dump)
     afp->Delete(); delete afp;
     if(!TFile::Open(sfp.Data())) continue;
 
-    run[nr] = rno;
+    run[nr] = rno; Int_t nmiss(0);
     for(Int_t it(0); it<ntv; it++){
       if(!(TV = (AliTRDtrendValue*)fEntries->At(it))) continue;
       if(!(tv = (AliTRDtrendValue*)gFile->Get(TV->GetName()))) {
-        AliWarning(Form("Missing %09d.%s", rno, TV->GetName()));
+        AliDebug(1, Form("Missing %09d.%s", rno, TV->GetName()));
+        nmiss++;
         continue;
       }
       if(tv->GetVal()<-998. ||
-         (strstr(TV->GetName(), "TRDcheckDET")&&TMath::Abs(tv->GetVal())<1.e-5)) continue;
+         (strstr(TV->GetName(), "TRDcheckDET")&&TMath::Abs(tv->GetVal())<1.e-5) ||
+         (!(strcmp(TV->GetName(), "TRDcheckDET_ChargeTracklet"))&&TMath::Abs(tv->GetVal())<1.e1)) continue;
       if(IsRelativeMeanSigma()){
         (*tv)/=(*TV);
         la[it]+=tv->GetVal(); na[it]++;
@@ -211,6 +213,7 @@ TH1* AliTRDtrendingManager::MakeTrends(const char *fileList, TObjArray *dump)
       }
       g[it]->SetPoint(g[it]->GetN(), nr, tv->GetVal());
     }
+    if(Float_t(nmiss)/ntv>.1) AliWarning(Form("Run[%09d] Missing %6.2f%% values", rno, 1.e2*nmiss/ntv));
     nr++;
   }
 
index 77dd213..baae2c2 100644 (file)
@@ -67,7 +67,7 @@ void AliTRDtriggerInfo::Draw(Option_t *opt)
   if(!(nt = GetNTriggers())) return;
   if(fHisto && fHisto->GetNbinsX() != nt){ delete fHisto; fHisto=NULL;}
 //
-  if(!fHisto) fHisto = new TH1I("hTriggerStat", "Trigger Statistics;TRIGGER;Freq. [%]", nt, 0.5, nt+0.5);
+  if(!fHisto) fHisto = new TH1F("hTriggerStat", "Trigger Statistics;TRIGGER;Freq. [%]", nt, 0.5, nt+0.5);
   TAxis *ax(fHisto->GetXaxis());  fHisto->Reset();
   ax->SetTitleOffset(6.5); ax->CenterTitle();
   fHisto->SetFillStyle(3001);fHisto->SetFillColor(kGreen);
index 3c312fd..210d24f 100644 (file)
@@ -2,6 +2,7 @@
 #include "TError.h"
 #include "AliAnalysisManager.h"
 #include "AliAnalysisDataContainer.h"
+#include "AliLog.h"
 #include "PWGPP/TRD/AliTRDpwgppHelper.h"
 #include "PWGPP/TRD/AliTRDefficiency.h"
 #include "PWGPP/TRD/AliTRDefficiencyMC.h"
@@ -15,6 +16,7 @@ void AddTRDefficiency(AliAnalysisManager *mgr, Int_t map, AliAnalysisDataContain
   AliAnalysisDataContainer *evInfoContainer = ci[3];
   AliTRDrecoTask *eff(NULL);
   mgr->AddTask(eff = new AliTRDefficiency((char*)"TRDefficiency"));
+  res->SetMCdata((Bool_t)mgr->GetMCtruthEventHandler());
   eff->SetDebugLevel(0);
   //AliLog::SetClassDebugLevel("AliTRDefficiency", 5);  
   Int_t trackStatus = 0; // barrel tracks
index 9861edb..49c5043 100644 (file)
 
 void AddTRDinfoGen(AliAnalysisManager *mgr, Int_t /*map*/, AliAnalysisDataContainer **/*ci*/, AliAnalysisDataContainer **co)
 {
-  Bool_t mc=mgr->GetMCtruthEventHandler();
   //AliLog::SetClassDebugLevel("AliTRDinfoGen", 2);
   AliTRDinfoGen *info(NULL);
   mgr->AddTask(info = new AliTRDinfoGen((char*)"TRDinfoGen"));
   info->SetDebugLevel(0);
-  info->SetMCdata(mc);
+  info->SetMCdata((Bool_t)mgr->GetMCtruthEventHandler());
   info->SetLocalTrkSelection();
   info->UseTrackPoints(kFALSE); // set it to true if track points for alignment are to be saved in trackInfo object
   info->SetOCDB("alien://folder=/alice/data/2010/OCDB");
index caf0dd8..0bd47ca 100644 (file)
@@ -23,7 +23,7 @@ void makeTrendingDB(const Char_t *fl)
   gSystem->Load("libPWGPP.so");
   gSystem->Load("libPWGmuon.so");
 
-  const Int_t nt(167);
+  const Int_t nt(316);
   const Char_t *tvn[nt][2] = {
     {"TRDcheckDET_NTracksEvent", "<N_{track}/Event>"},
     {"TRDcheckDET_NTracksEventRMS", "RMS(N_{track}/Event)"},
@@ -40,164 +40,317 @@ void makeTrendingDB(const Char_t *fl)
     {"TRDcheckDET_PHslope", "Slope(<PH>)"},
     {"TRDcheckDET_PHamplificationPeak", "Peak(<PH>)"},
 //=======================================================
-    {"TRDresolution_TrkInPhnL0", "TrkIn :: <#Delta#phi>^{e-}(p_{t}[GeV/c]<0.5) [deg]"},
-    {"TRDresolution_TrkInPhnl0", "TrkIn :: <#Delta#phi>^{e-}(0.5<=p_{t}[GeV/c]<0.8) [deg]"},
-    {"TRDresolution_TrkInPhni0", "TrkIn :: <#Delta#phi>^{e-}(0.8<=p_{t}[GeV/c]<1.5) [deg]"},
-    {"TRDresolution_TrkInPhnh0", "TrkIn :: <#Delta#phi>^{e-}(1.5<=p_{t}[GeV/c]<5.0) [deg]"},
-    {"TRDresolution_TrkInPhnH0", "TrkIn :: <#Delta#phi>^{e-}(5.0<=p_{t}[GeV/c]) [deg]"},
+    {"TRDefficiency_pt", "TPC-TRD efficiency"},
+    {"TRDefficiency_pt0", "Eff.| #it{p_{t}[GeV/c]<0.5}"},
+    {"TRDefficiency_pt1", "Eff.| #it{0.5<=p_{t}[GeV/c]<0.8}"},
+    {"TRDefficiency_pt2", "Eff.| #it{0.8<=p_{t}[GeV/c]<1.5}"},
+    {"TRDefficiency_pt3", "Eff.| #it{1.5<=p_{t}[GeV/c]<5.0}"},
+    {"TRDefficiency_pt4", "Eff.| #it{5.0<=p_{t}[GeV/c]}"},
+//=======================================================
+    {"TRDresolution_ClS0", "Cl :: #sigma(#Deltay) [cm] | Ly0"},
+    {"TRDresolution_ClS1", "Cl :: #sigma(#Deltay) [cm] | Ly1"},
+    {"TRDresolution_ClS2", "Cl :: #sigma(#Deltay) [cm] | Ly2"},
+    {"TRDresolution_ClS3", "Cl :: #sigma(#Deltay) [cm] | Ly3"},
+    {"TRDresolution_ClS4", "Cl :: #sigma(#Deltay) [cm] | Ly4"},
+    {"TRDresolution_ClS5", "Cl :: #sigma(#Deltay) [cm] | Ly5"},
+//=======================================================
+    {"TRDresolution_TrkltY0", "Trklt :: <#Deltay> [cm] | Ly0"},
+    {"TRDresolution_TrkltY1", "Trklt :: <#Deltay> [cm] | Ly1"},
+    {"TRDresolution_TrkltY2", "Trklt :: <#Deltay> [cm] | Ly2"},
+    {"TRDresolution_TrkltY3", "Trklt :: <#Deltay> [cm] | Ly3"},
+    {"TRDresolution_TrkltY4", "Trklt :: <#Deltay> [cm] | Ly4"},
+    {"TRDresolution_TrkltY5", "Trklt :: <#Deltay> [cm] | Ly5"},
+    {"TRDresolution_TrkltYS0", "Trklt :: #sigma(#Deltay) [cm] | Ly0"},
+    {"TRDresolution_TrkltYS1", "Trklt :: #sigma(#Deltay) [cm] | Ly1"},
+    {"TRDresolution_TrkltYS2", "Trklt :: #sigma(#Deltay) [cm] | Ly2"},
+    {"TRDresolution_TrkltYS3", "Trklt :: #sigma(#Deltay) [cm] | Ly3"},
+    {"TRDresolution_TrkltYS4", "Trklt :: #sigma(#Deltay) [cm] | Ly4"},
+    {"TRDresolution_TrkltYS5", "Trklt :: #sigma(#Deltay) [cm] | Ly5"},
+//=======================================================
+    {"TRDresolution_TrkInYnL0", "TrkIn :: <#Deltay>^{e-}| #it{p_{t}[GeV/c]<0.5} [cm]"},
+    {"TRDresolution_TrkInYnl0", "TrkIn :: <#Deltay>^{e-}| #it{0.5<=p_{t}[GeV/c]<0.8} [cm]"},
+    {"TRDresolution_TrkInYni0", "TrkIn :: <#Deltay>^{e-}| #it{0.8<=p_{t}[GeV/c]<1.5} [cm]"},
+    {"TRDresolution_TrkInYnh0", "TrkIn :: <#Deltay>^{e-}| #it{1.5<=p_{t}[GeV/c]<5.0} [cm]"},
+    {"TRDresolution_TrkInYnH0", "TrkIn :: <#Deltay>^{e-}| #it{5.0<=p_{t}[GeV/c]} [cm]"},
+    {"TRDresolution_TrkInYn0", "TrkIn :: <#Deltay>^{e-} [cm]"},
+    {"TRDresolution_TrkInYSnL0", "TrkIn :: RMS(#Deltay)^{e-}| #it{p_{t}[GeV/c]<0.5} [cm]"},
+    {"TRDresolution_TrkInYSnl0", "TrkIn :: RMS(#Deltay)^{e-}| #it{0.5<=p_{t}[GeV/c]<0.8} [cm]"},
+    {"TRDresolution_TrkInYSni0", "TrkIn :: RMS(#Deltay)^{e-}| #it{0.8<=p_{t}[GeV/c]<1.5} [cm]"},
+    {"TRDresolution_TrkInYSnh0", "TrkIn :: RMS(#Deltay)^{e-}| #it{1.5<=p_{t}[GeV/c]<5.0} [cm]"},
+    {"TRDresolution_TrkInYSnH0", "TrkIn :: RMS(#Deltay)^{e-}| #it{5.0<=p_{t}[GeV/c]} [cm]"},
+    {"TRDresolution_TrkInYSn0", "TrkIn :: RMS(#Deltay)^{e-} [cm]"},
+    {"TRDresolution_TrkInPhnL0", "TrkIn :: <#Delta#phi>^{e-}| #it{p_{t}[GeV/c]<0.5} [deg]"},
+    {"TRDresolution_TrkInPhnl0", "TrkIn :: <#Delta#phi>^{e-}| #it{0.5<=p_{t}[GeV/c]<0.8} [deg]"},
+    {"TRDresolution_TrkInPhni0", "TrkIn :: <#Delta#phi>^{e-}| #it{0.8<=p_{t}[GeV/c]<1.5} [deg]"},
+    {"TRDresolution_TrkInPhnh0", "TrkIn :: <#Delta#phi>^{e-}| #it{1.5<=p_{t}[GeV/c]<5.0} [deg]"},
+    {"TRDresolution_TrkInPhnH0", "TrkIn :: <#Delta#phi>^{e-}| #it{5.0<=p_{t}[GeV/c]} [deg]"},
     {"TRDresolution_TrkInPhn0", "TrkIn :: <#Delta#phi>^{e-} [deg]"},
-    {"TRDresolution_TrkInQnL0", "TrkIn :: MPV(dQdl)^{e-}(p_{t}[GeV/c]<0.5) [a.u.]"},
-    {"TRDresolution_TrkInQnl0", "TrkIn :: MPV(dQdl)^{e-}(0.5<=p_{t}[GeV/c]<0.8) [a.u.]"},
-    {"TRDresolution_TrkInQni0", "TrkIn :: MPV(dQdl)^{e-}(0.8<=p_{t}[GeV/c]<1.5) [a.u.]"},
-    {"TRDresolution_TrkInQnh0", "TrkIn :: MPV(dQdl)^{e-}(1.5<=p_{t}[GeV/c]<5.0) [a.u.]"},
-    {"TRDresolution_TrkInQnH0", "TrkIn :: MPV(dQdl)^{e-}(5.0<=p_{t}[GeV/c]) [a.u.]"},
+    {"TRDresolution_TrkInPhSnL0", "TrkIn :: RMS<#Delta#phi>^{e-}| #it{p[GeV/c]<0.5} [deg]"},
+    {"TRDresolution_TrkInPhSnl0", "TrkIn :: RMS<#Delta#phi>^{e-}| #it{0.5<=p[GeV/c]<0.8} [deg]"},
+    {"TRDresolution_TrkInPhSni0", "TrkIn :: RMS<#Delta#phi>^{e-}| #it{0.8<=p[GeV/c]<1.5} [deg]"},
+    {"TRDresolution_TrkInPhSnh0", "TrkIn :: RMS<#Delta#phi>^{e-}| #it{1.5<=p[GeV/c]<5.0} [deg]"},
+    {"TRDresolution_TrkInPhSnH0", "TrkIn :: RMS<#Delta#phi>^{e-}| #it{5.0<=p[GeV/c]} [deg]"},
+    {"TRDresolution_TrkInPhSn0", "TrkIn :: RMS<#Delta#phi>^{e-} [deg]"},
+    {"TRDresolution_TrkInQnL0", "TrkIn :: MPV(dQdl)^{e-}| #it{p[GeV/c]<0.5} [a.u.]"},
+    {"TRDresolution_TrkInQnl0", "TrkIn :: MPV(dQdl)^{e-}| #it{0.5<=p[GeV/c]<0.8} [a.u.]"},
+    {"TRDresolution_TrkInQni0", "TrkIn :: MPV(dQdl)^{e-}| #it{0.8<=p[GeV/c]<1.5} [a.u.]"},
+    {"TRDresolution_TrkInQnh0", "TrkIn :: MPV(dQdl)^{e-}| #it{1.5<=p[GeV/c]<5.0} [a.u.]"},
+    {"TRDresolution_TrkInQnH0", "TrkIn :: MPV(dQdl)^{e-}| #it{5.0<=p[GeV/c]} [a.u.]"},
     {"TRDresolution_TrkInQn0", "TrkIn :: MPV(dQdl)^{e-} [a.u.]"},
-    {"TRDresolution_TrkInQSnL0", "TrkIn :: <dQdl>^{e-}(p_{t}[GeV/c]<0.5) [a.u.]"},
-    {"TRDresolution_TrkInQSnl0", "TrkIn :: <dQdl>^{e-}(0.5<=p_{t}[GeV/c]<0.8) [a.u.]"},
-    {"TRDresolution_TrkInQSni0", "TrkIn :: <dQdl>^{e-}(0.8<=p_{t}[GeV/c]<1.5) [a.u.]"},
-    {"TRDresolution_TrkInQSnh0", "TrkIn :: <dQdl>^{e-}(1.5<=p_{t}[GeV/c]<5.0) [a.u.]"},
-    {"TRDresolution_TrkInQSnH0", "TrkIn :: <dQdl>^{e-}(5.0<=p_{t}[GeV/c]) [a.u.]"},
+    {"TRDresolution_TrkInQSnL0", "TrkIn :: <dQdl>^{e-}| #it{p[GeV/c]<0.5} [a.u.]"},
+    {"TRDresolution_TrkInQSnl0", "TrkIn :: <dQdl>^{e-}| #it{0.5<=p[GeV/c]<0.8} [a.u.]"},
+    {"TRDresolution_TrkInQSni0", "TrkIn :: <dQdl>^{e-}| #it{0.8<=p[GeV/c]<1.5} [a.u.]"},
+    {"TRDresolution_TrkInQSnh0", "TrkIn :: <dQdl>^{e-}| #it{1.5<=p[GeV/c]<5.0} [a.u.]"},
+    {"TRDresolution_TrkInQSnH0", "TrkIn :: <dQdl>^{e-}| #it{5.0<=p[GeV/c]} [a.u.]"},
     {"TRDresolution_TrkInQSn0", "TrkIn :: <dQdl>^{e-} [a.u.]"},
-    {"TRDresolution_TrkInPhnL1", "TrkIn :: <#Delta#phi>^{#mu#pi-}(p_{t}[GeV/c]<0.5) [deg]"},
-    {"TRDresolution_TrkInPhnl1", "TrkIn :: <#Delta#phi>^{#mu#pi-}(0.5<=p_{t}[GeV/c]<0.8) [deg]"},
-    {"TRDresolution_TrkInPhni1", "TrkIn :: <#Delta#phi>^{#mu#pi-}(0.8<=p_{t}[GeV/c]<1.5) [deg]"},
-    {"TRDresolution_TrkInPhnh1", "TrkIn :: <#Delta#phi>^{#mu#pi-}(1.5<=p_{t}[GeV/c]<5.0) [deg]"},
-    {"TRDresolution_TrkInPhnH1", "TrkIn :: <#Delta#phi>^{#mu#pi-}(5.0<=p_{t}[GeV/c]) [deg]"},
+    {"TRDresolution_TrkInYnL1", "TrkIn :: <#Deltay>^{#mu#pi-}| #it{p_{t}[GeV/c]<0.5} [cm]"},
+    {"TRDresolution_TrkInYnl1", "TrkIn :: <#Deltay>^{#mu#pi-}| #it{0.5<=p_{t}[GeV/c]<0.8} [cm]"},
+    {"TRDresolution_TrkInYni1", "TrkIn :: <#Deltay>^{#mu#pi-}| #it{0.8<=p_{t}[GeV/c]<1.5} [cm]"},
+    {"TRDresolution_TrkInYnh1", "TrkIn :: <#Deltay>^{#mu#pi-}| #it{1.5<=p_{t}[GeV/c]<5.0} [cm]"},
+    {"TRDresolution_TrkInYnH1", "TrkIn :: <#Deltay>^{#mu#pi-}| #it{5.0<=p_{t}[GeV/c]} [cm]"},
+    {"TRDresolution_TrkInYn1", "TrkIn :: <#Deltay>^{#mu#pi-} [cm]"},
+    {"TRDresolution_TrkInYSnL1", "TrkIn :: RMS(#Deltay)^{#mu#pi-}| #it{p_{t}[GeV/c]<0.5} [cm]"},
+    {"TRDresolution_TrkInYSnl1", "TrkIn :: RMS(#Deltay)^{#mu#pi-}| #it{0.5<=p_{t}[GeV/c]<0.8} [cm]"},
+    {"TRDresolution_TrkInYSni1", "TrkIn :: RMS(#Deltay)^{#mu#pi-}| #it{0.8<=p_{t}[GeV/c]<1.5} [cm]"},
+    {"TRDresolution_TrkInYSnh1", "TrkIn :: RMS(#Deltay)^{#mu#pi-}| #it{1.5<=p_{t}[GeV/c]<5.0} [cm]"},
+    {"TRDresolution_TrkInYSnH1", "TrkIn :: RMS(#Deltay)^{#mu#pi-}| #it{5.0<=p_{t}[GeV/c]} [cm]"},
+    {"TRDresolution_TrkInYSn1", "TrkIn :: RMS(#Deltay)^{#mu#pi-} [cm]"},
+    {"TRDresolution_TrkInPhnL1", "TrkIn :: <#Delta#phi>^{#mu#pi-}| #it{p_{t}[GeV/c]<0.5} [deg]"},
+    {"TRDresolution_TrkInPhnl1", "TrkIn :: <#Delta#phi>^{#mu#pi-}| #it{0.5<=p_{t}[GeV/c]<0.8} [deg]"},
+    {"TRDresolution_TrkInPhni1", "TrkIn :: <#Delta#phi>^{#mu#pi-}| #it{0.8<=p_{t}[GeV/c]<1.5} [deg]"},
+    {"TRDresolution_TrkInPhnh1", "TrkIn :: <#Delta#phi>^{#mu#pi-}| #it{1.5<=p_{t}[GeV/c]<5.0} [deg]"},
+    {"TRDresolution_TrkInPhnH1", "TrkIn :: <#Delta#phi>^{#mu#pi-}| #it{5.0<=p_{t}[GeV/c]} [deg]"},
     {"TRDresolution_TrkInPhn1", "TrkIn :: <#Delta#phi>^{#mu#pi-} [deg]"},
-    {"TRDresolution_TrkInQnL1", "TrkIn :: MPV(dQdl)^{#mu#pi-}(p_{t}[GeV/c]<0.5) [a.u.]"},
-    {"TRDresolution_TrkInQnl1", "TrkIn :: MPV(dQdl)^{#mu#pi-}(0.5<=p_{t}[GeV/c]<0.8) [a.u.]"},
-    {"TRDresolution_TrkInQni1", "TrkIn :: MPV(dQdl)^{#mu#pi-}(0.8<=p_{t}[GeV/c]<1.5) [a.u.]"},
-    {"TRDresolution_TrkInQnh1", "TrkIn :: MPV(dQdl)^{#mu#pi-}(1.5<=p_{t}[GeV/c]<5.0) [a.u.]"},
-    {"TRDresolution_TrkInQnH1", "TrkIn :: MPV(dQdl)^{#mu#pi-}(5.0<=p_{t}[GeV/c]) [a.u.]"},
+    {"TRDresolution_TrkInPhSnL1", "TrkIn :: RMS<#Delta#phi>^{#mu#pi-}| #it{p[GeV/c]<0.5} [deg]"},
+    {"TRDresolution_TrkInPhSnl1", "TrkIn :: RMS<#Delta#phi>^{#mu#pi-}| #it{0.5<=p[GeV/c]<0.8} [deg]"},
+    {"TRDresolution_TrkInPhSni1", "TrkIn :: RMS<#Delta#phi>^{#mu#pi-}| #it{0.8<=p[GeV/c]<1.5} [deg]"},
+    {"TRDresolution_TrkInPhSnh1", "TrkIn :: RMS<#Delta#phi>^{#mu#pi-}| #it{1.5<=p[GeV/c]<5.0} [deg]"},
+    {"TRDresolution_TrkInPhSnH1", "TrkIn :: RMS<#Delta#phi>^{#mu#pi-}| #it{5.0<=p[GeV/c]} [deg]"},
+    {"TRDresolution_TrkInPhSn1", "TrkIn :: RMS<#Delta#phi>^{#mu#pi-} [deg]"},
+    {"TRDresolution_TrkInQnL1", "TrkIn :: MPV(dQdl)^{#mu#pi-}| #it{p[GeV/c]<0.5} [a.u.]"},
+    {"TRDresolution_TrkInQnl1", "TrkIn :: MPV(dQdl)^{#mu#pi-}| #it{0.5<=p[GeV/c]<0.8} [a.u.]"},
+    {"TRDresolution_TrkInQni1", "TrkIn :: MPV(dQdl)^{#mu#pi-}| #it{0.8<=p[GeV/c]<1.5} [a.u.]"},
+    {"TRDresolution_TrkInQnh1", "TrkIn :: MPV(dQdl)^{#mu#pi-}| #it{1.5<=p[GeV/c]<5.0} [a.u.]"},
+    {"TRDresolution_TrkInQnH1", "TrkIn :: MPV(dQdl)^{#mu#pi-}| #it{5.0<=p[GeV/c]} [a.u.]"},
     {"TRDresolution_TrkInQn1", "TrkIn :: MPV(dQdl)^{#mu#pi-} [a.u.]"},
-    {"TRDresolution_TrkInQSnL1", "TrkIn :: <dQdl>^{#mu#pi-}(p_{t}[GeV/c]<0.5) [a.u.]"},
-    {"TRDresolution_TrkInQSnl1", "TrkIn :: <dQdl>^{#mu#pi-}(0.5<=p_{t}[GeV/c]<0.8) [a.u.]"},
-    {"TRDresolution_TrkInQSni1", "TrkIn :: <dQdl>^{#mu#pi-}(0.8<=p_{t}[GeV/c]<1.5) [a.u.]"},
-    {"TRDresolution_TrkInQSnh1", "TrkIn :: <dQdl>^{#mu#pi-}(1.5<=p_{t}[GeV/c]<5.0) [a.u.]"},
-    {"TRDresolution_TrkInQSnH1", "TrkIn :: <dQdl>^{#mu#pi-}(5.0<=p_{t}[GeV/c]) [a.u.]"},
+    {"TRDresolution_TrkInQSnL1", "TrkIn :: <dQdl>^{#mu#pi-}| #it{p[GeV/c]<0.5} [a.u.]"},
+    {"TRDresolution_TrkInQSnl1", "TrkIn :: <dQdl>^{#mu#pi-}| #it{0.5<=p[GeV/c]<0.8} [a.u.]"},
+    {"TRDresolution_TrkInQSni1", "TrkIn :: <dQdl>^{#mu#pi-}| #it{0.8<=p[GeV/c]<1.5} [a.u.]"},
+    {"TRDresolution_TrkInQSnh1", "TrkIn :: <dQdl>^{#mu#pi-}| #it{1.5<=p[GeV/c]<5.0} [a.u.]"},
+    {"TRDresolution_TrkInQSnH1", "TrkIn :: <dQdl>^{#mu#pi-}| #it{5.0<=p[GeV/c]} [a.u.]"},
     {"TRDresolution_TrkInQSn1", "TrkIn :: <dQdl>^{#mu#pi-} [a.u.]"},
-    {"TRDresolution_TrkInPhnL2", "TrkIn :: <#Delta#phi>^{Kp-}(p_{t}[GeV/c]<0.5) [deg]"},
-    {"TRDresolution_TrkInPhnl2", "TrkIn :: <#Delta#phi>^{Kp-}(0.5<=p_{t}[GeV/c]<0.8) [deg]"},
-    {"TRDresolution_TrkInPhni2", "TrkIn :: <#Delta#phi>^{Kp-}(0.8<=p_{t}[GeV/c]<1.5) [deg]"},
-    {"TRDresolution_TrkInPhnh2", "TrkIn :: <#Delta#phi>^{Kp-}(1.5<=p_{t}[GeV/c]<5.0) [deg]"},
-    {"TRDresolution_TrkInPhnH2", "TrkIn :: <#Delta#phi>^{Kp-}(5.0<=p_{t}[GeV/c]) [deg]"},
+    {"TRDresolution_TrkInYnL2", "TrkIn :: <#Deltay>^{Kp-}| #it{p_{t}[GeV/c]<0.5} [cm]"},
+    {"TRDresolution_TrkInYnl2", "TrkIn :: <#Deltay>^{Kp-}| #it{0.5<=p_{t}[GeV/c]<0.8} [cm]"},
+    {"TRDresolution_TrkInYni2", "TrkIn :: <#Deltay>^{Kp-}| #it{0.8<=p_{t}[GeV/c]<1.5} [cm]"},
+    {"TRDresolution_TrkInYnh2", "TrkIn :: <#Deltay>^{Kp-}| #it{1.5<=p_{t}[GeV/c]<5.0} [cm]"},
+    {"TRDresolution_TrkInYnH2", "TrkIn :: <#Deltay>^{Kp-}| #it{5.0<=p_{t}[GeV/c]} [cm]"},
+    {"TRDresolution_TrkInYn2", "TrkIn :: <#Deltay>^{Kp-} [cm]"},
+    {"TRDresolution_TrkInYSnL2", "TrkIn :: RMS(#Deltay)^{Kp-}| #it{p_{t}[GeV/c]<0.5} [cm]"},
+    {"TRDresolution_TrkInYSnl2", "TrkIn :: RMS(#Deltay)^{Kp-}| #it{0.5<=p_{t}[GeV/c]<0.8} [cm]"},
+    {"TRDresolution_TrkInYSni2", "TrkIn :: RMS(#Deltay)^{Kp-}| #it{0.8<=p_{t}[GeV/c]<1.5} [cm]"},
+    {"TRDresolution_TrkInYSnh2", "TrkIn :: RMS(#Deltay)^{Kp-}| #it{1.5<=p_{t}[GeV/c]<5.0} [cm]"},
+    {"TRDresolution_TrkInYSnH2", "TrkIn :: RMS(#Deltay)^{Kp-}| #it{5.0<=p_{t}[GeV/c]} [cm]"},
+    {"TRDresolution_TrkInYSn2", "TrkIn :: RMS(#Deltay)^{Kp-} [cm]"},
+    {"TRDresolution_TrkInPhnL2", "TrkIn :: <#Delta#phi>^{Kp-}| #it{p_{t}[GeV/c]<0.5} [deg]"},
+    {"TRDresolution_TrkInPhnl2", "TrkIn :: <#Delta#phi>^{Kp-}| #it{0.5<=p_{t}[GeV/c]<0.8} [deg]"},
+    {"TRDresolution_TrkInPhni2", "TrkIn :: <#Delta#phi>^{Kp-}| #it{0.8<=p_{t}[GeV/c]<1.5} [deg]"},
+    {"TRDresolution_TrkInPhnh2", "TrkIn :: <#Delta#phi>^{Kp-}| #it{1.5<=p_{t}[GeV/c]<5.0} [deg]"},
+    {"TRDresolution_TrkInPhnH2", "TrkIn :: <#Delta#phi>^{Kp-}| #it{5.0<=p_{t}[GeV/c]} [deg]"},
     {"TRDresolution_TrkInPhn2", "TrkIn :: <#Delta#phi>^{Kp-} [deg]"},
-    {"TRDresolution_TrkInQnL2", "TrkIn :: MPV(dQdl)^{Kp-}(p_{t}[GeV/c]<0.5) [a.u.]"},
-    {"TRDresolution_TrkInQnl2", "TrkIn :: MPV(dQdl)^{Kp-}(0.5<=p_{t}[GeV/c]<0.8) [a.u.]"},
-    {"TRDresolution_TrkInQni2", "TrkIn :: MPV(dQdl)^{Kp-}(0.8<=p_{t}[GeV/c]<1.5) [a.u.]"},
-    {"TRDresolution_TrkInQnh2", "TrkIn :: MPV(dQdl)^{Kp-}(1.5<=p_{t}[GeV/c]<5.0) [a.u.]"},
-    {"TRDresolution_TrkInQnH2", "TrkIn :: MPV(dQdl)^{Kp-}(5.0<=p_{t}[GeV/c]) [a.u.]"},
+    {"TRDresolution_TrkInPhSnL2", "TrkIn :: RMS<#Delta#phi>^{Kp-}| #it{p[GeV/c]<0.5} [deg]"},
+    {"TRDresolution_TrkInPhSnl2", "TrkIn :: RMS<#Delta#phi>^{Kp-}| #it{0.5<=p[GeV/c]<0.8} [deg]"},
+    {"TRDresolution_TrkInPhSni2", "TrkIn :: RMS<#Delta#phi>^{Kp-}| #it{0.8<=p[GeV/c]<1.5} [deg]"},
+    {"TRDresolution_TrkInPhSnh2", "TrkIn :: RMS<#Delta#phi>^{Kp-}| #it{1.5<=p[GeV/c]<5.0} [deg]"},
+    {"TRDresolution_TrkInPhSnH2", "TrkIn :: RMS<#Delta#phi>^{Kp-}| #it{5.0<=p[GeV/c]} [deg]"},
+    {"TRDresolution_TrkInPhSn2", "TrkIn :: RMS<#Delta#phi>^{Kp-} [deg]"},
+    {"TRDresolution_TrkInQnL2", "TrkIn :: MPV(dQdl)^{Kp-}| #it{p[GeV/c]<0.5} [a.u.]"},
+    {"TRDresolution_TrkInQnl2", "TrkIn :: MPV(dQdl)^{Kp-}| #it{0.5<=p[GeV/c]<0.8} [a.u.]"},
+    {"TRDresolution_TrkInQni2", "TrkIn :: MPV(dQdl)^{Kp-}| #it{0.8<=p[GeV/c]<1.5} [a.u.]"},
+    {"TRDresolution_TrkInQnh2", "TrkIn :: MPV(dQdl)^{Kp-}| #it{1.5<=p[GeV/c]<5.0} [a.u.]"},
+    {"TRDresolution_TrkInQnH2", "TrkIn :: MPV(dQdl)^{Kp-}| #it{5.0<=p[GeV/c]} [a.u.]"},
     {"TRDresolution_TrkInQn2", "TrkIn :: MPV(dQdl)^{Kp-} [a.u.]"},
-    {"TRDresolution_TrkInQSnL2", "TrkIn :: <dQdl>^{Kp-}(p_{t}[GeV/c]<0.5) [a.u.]"},
-    {"TRDresolution_TrkInQSnl2", "TrkIn :: <dQdl>^{Kp-}(0.5<=p_{t}[GeV/c]<0.8) [a.u.]"},
-    {"TRDresolution_TrkInQSni2", "TrkIn :: <dQdl>^{Kp-}(0.8<=p_{t}[GeV/c]<1.5) [a.u.]"},
-    {"TRDresolution_TrkInQSnh2", "TrkIn :: <dQdl>^{Kp-}(1.5<=p_{t}[GeV/c]<5.0) [a.u.]"},
-    {"TRDresolution_TrkInQSnH2", "TrkIn :: <dQdl>^{Kp-}(5.0<=p_{t}[GeV/c]) [a.u.]"},
+    {"TRDresolution_TrkInQSnL2", "TrkIn :: <dQdl>^{Kp-}| #it{p[GeV/c]<0.5} [a.u.]"},
+    {"TRDresolution_TrkInQSnl2", "TrkIn :: <dQdl>^{Kp-}| #it{0.5<=p[GeV/c]<0.8} [a.u.]"},
+    {"TRDresolution_TrkInQSni2", "TrkIn :: <dQdl>^{Kp-}| #it{0.8<=p[GeV/c]<1.5} [a.u.]"},
+    {"TRDresolution_TrkInQSnh2", "TrkIn :: <dQdl>^{Kp-}| #it{1.5<=p[GeV/c]<5.0} [a.u.]"},
+    {"TRDresolution_TrkInQSnH2", "TrkIn :: <dQdl>^{Kp-}| #it{5.0<=p[GeV/c]} [a.u.]"},
     {"TRDresolution_TrkInQSn2", "TrkIn :: <dQdl>^{Kp-} [a.u.]"},
-    {"TRDresolution_TrkInYnL", "TrkIn :: <#Deltay>^{-}(p_{t}[GeV/c]<0.5) [cm]"},
-    {"TRDresolution_TrkInYSnL", "TrkIn :: RMS(#Deltay)^{-}(p_{t}[GeV/c]<0.5) [cm]"},
-    {"TRDresolution_TrkInPhnL", "TrkIn :: <#Delta#phi>^{-}(p_{t}[GeV/c]<0.5) [deg]"},
-    {"TRDresolution_TrkInYnl", "TrkIn :: <#Deltay>^{-}(0.5<=p_{t}[GeV/c]<0.8) [cm]"},
-    {"TRDresolution_TrkInYSnl", "TrkIn :: RMS(#Deltay)^{-}(0.5<=p_{t}[GeV/c]<0.8) [cm]"},
-    {"TRDresolution_TrkInPhnl", "TrkIn :: <#Delta#phi>^{-}(0.5<=p_{t}[GeV/c]<0.8) [deg]"},
-    {"TRDresolution_TrkInYni", "TrkIn :: <#Deltay>^{-}(0.8<=p_{t}[GeV/c]<1.5) [cm]"},
-    {"TRDresolution_TrkInYSni", "TrkIn :: RMS(#Deltay)^{-}(0.8<=p_{t}[GeV/c]<1.5) [cm]"},
-    {"TRDresolution_TrkInPhni", "TrkIn :: <#Delta#phi>^{-}(0.8<=p_{t}[GeV/c]<1.5) [deg]"},
-    {"TRDresolution_TrkInYnh", "TrkIn :: <#Deltay>^{-}(1.5<=p_{t}[GeV/c]<5.0) [cm]"},
-    {"TRDresolution_TrkInYSnh", "TrkIn :: RMS(#Deltay)^{-}(1.5<=p_{t}[GeV/c]<5.0) [cm]"},
-    {"TRDresolution_TrkInPhnh", "TrkIn :: <#Delta#phi>^{-}(1.5<=p_{t}[GeV/c]<5.0) [deg]"},
-    {"TRDresolution_TrkInYnH", "TrkIn :: <#Deltay>^{-}(5.0<=p_{t}[GeV/c]) [cm]"},
-    {"TRDresolution_TrkInYSnH", "TrkIn :: RMS(#Deltay)^{-}(5.0<=p_{t}[GeV/c]) [cm]"},
-    {"TRDresolution_TrkInPhnH", "TrkIn :: <#Delta#phi>^{-}(5.0<=p_{t}[GeV/c]) [deg]"},
+    {"TRDresolution_TrkInYnL", "TrkIn :: <#Deltay>^{-}| #it{p_{t}[GeV/c]<0.5} [cm]"},
+    {"TRDresolution_TrkInYSnL", "TrkIn :: RMS(#Deltay)^{-}| #it{p_{t}[GeV/c]<0.5} [cm]"},
+    {"TRDresolution_TrkInPhnL", "TrkIn :: <#Delta#phi>^{-}| #it{p_{t}[GeV/c]<0.5} [deg]"},
+    {"TRDresolution_TrkInPhSnL", "TrkIn :: RMS<#Delta#phi>^{-}| #it{p_{t}[GeV/c]<0.5} [deg]"},
+    {"TRDresolution_TrkInYnl", "TrkIn :: <#Deltay>^{-}| #it{0.5<=p_{t}[GeV/c]<0.8} [cm]"},
+    {"TRDresolution_TrkInYSnl", "TrkIn :: RMS(#Deltay)^{-}| #it{0.5<=p_{t}[GeV/c]<0.8} [cm]"},
+    {"TRDresolution_TrkInPhnl", "TrkIn :: <#Delta#phi>^{-}| #it{0.5<=p_{t}[GeV/c]<0.8} [deg]"},
+    {"TRDresolution_TrkInPhSnl", "TrkIn :: RMS<#Delta#phi>^{-}| #it{0.5<=p_{t}[GeV/c]<0.8} [deg]"},
+    {"TRDresolution_TrkInYni", "TrkIn :: <#Deltay>^{-}| #it{0.8<=p_{t}[GeV/c]<1.5} [cm]"},
+    {"TRDresolution_TrkInYSni", "TrkIn :: RMS(#Deltay)^{-}| #it{0.8<=p_{t}[GeV/c]<1.5} [cm]"},
+    {"TRDresolution_TrkInPhni", "TrkIn :: <#Delta#phi>^{-}| #it{0.8<=p_{t}[GeV/c]<1.5} [deg]"},
+    {"TRDresolution_TrkInPhSni", "TrkIn :: RMS<#Delta#phi>^{-}| #it{0.8<=p_{t}[GeV/c]<1.5} [deg]"},
+    {"TRDresolution_TrkInYnh", "TrkIn :: <#Deltay>^{-}| #it{1.5<=p_{t}[GeV/c]<5.0} [cm]"},
+    {"TRDresolution_TrkInYSnh", "TrkIn :: RMS(#Deltay)^{-}| #it{1.5<=p_{t}[GeV/c]<5.0} [cm]"},
+    {"TRDresolution_TrkInPhnh", "TrkIn :: <#Delta#phi>^{-}| #it{1.5<=p_{t}[GeV/c]<5.0} [deg]"},
+    {"TRDresolution_TrkInPhSnh", "TrkIn :: RMS<#Delta#phi>^{-}| #it{1.5<=p_{t}[GeV/c]<5.0} [deg]"},
+    {"TRDresolution_TrkInYnH", "TrkIn :: <#Deltay>^{-}| #it{5.0<=p_{t}[GeV/c]} [cm]"},
+    {"TRDresolution_TrkInYSnH", "TrkIn :: RMS(#Deltay)^{-}| #it{5.0<=p_{t}[GeV/c]} [cm]"},
+    {"TRDresolution_TrkInPhnH", "TrkIn :: <#Delta#phi>^{-}| #it{5.0<=p_{t}[GeV/c]} [deg]"},
+    {"TRDresolution_TrkInPhSnH", "TrkIn :: RMS<#Delta#phi>^{-}| #it{5.0<=p_{t}[GeV/c]} [deg]"},
     {"TRDresolution_TrkInYn", "TrkIn :: <#Deltay>^{-} [cm]"},
     {"TRDresolution_TrkInYSn", "TrkIn :: RMS(#Deltay)^{-} [cm]"},
     {"TRDresolution_TrkInPhn", "TrkIn :: <#Delta#phi>^{-} [deg]"},
-    {"TRDresolution_TrkInPhpL0", "TrkIn :: <#Delta#phi>^{e+}(p_{t}[GeV/c]<0.5) [deg]"},
-    {"TRDresolution_TrkInPhpl0", "TrkIn :: <#Delta#phi>^{e+}(0.5<=p_{t}[GeV/c]<0.8) [deg]"},
-    {"TRDresolution_TrkInPhpi0", "TrkIn :: <#Delta#phi>^{e+}(0.8<=p_{t}[GeV/c]<1.5) [deg]"},
-    {"TRDresolution_TrkInPhph0", "TrkIn :: <#Delta#phi>^{e+}(1.5<=p_{t}[GeV/c]<5.0) [deg]"},
-    {"TRDresolution_TrkInPhpH0", "TrkIn :: <#Delta#phi>^{e+}(5.0<=p_{t}[GeV/c]) [deg]"},
+    {"TRDresolution_TrkInPhSn", "TrkIn :: RMS<#Delta#phi>^{-} [deg]"},
+    {"TRDresolution_TrkInYpL0", "TrkIn :: <#Deltay>^{e+}| #it{p_{t}[GeV/c]<0.5} [cm]"},
+    {"TRDresolution_TrkInYpl0", "TrkIn :: <#Deltay>^{e+}| #it{0.5<=p_{t}[GeV/c]<0.8} [cm]"},
+    {"TRDresolution_TrkInYpi0", "TrkIn :: <#Deltay>^{e+}| #it{0.8<=p_{t}[GeV/c]<1.5} [cm]"},
+    {"TRDresolution_TrkInYph0", "TrkIn :: <#Deltay>^{e+}| #it{1.5<=p_{t}[GeV/c]<5.0} [cm]"},
+    {"TRDresolution_TrkInYpH0", "TrkIn :: <#Deltay>^{e+}| #it{5.0<=p_{t}[GeV/c]} [cm]"},
+    {"TRDresolution_TrkInYp0", "TrkIn :: <#Deltay>^{e+} [cm]"},
+    {"TRDresolution_TrkInYSpL0", "TrkIn :: RMS(#Deltay)^{e+}| #it{p_{t}[GeV/c]<0.5} [cm]"},
+    {"TRDresolution_TrkInYSpl0", "TrkIn :: RMS(#Deltay)^{e+}| #it{0.5<=p_{t}[GeV/c]<0.8} [cm]"},
+    {"TRDresolution_TrkInYSpi0", "TrkIn :: RMS(#Deltay)^{e+}| #it{0.8<=p_{t}[GeV/c]<1.5} [cm]"},
+    {"TRDresolution_TrkInYSph0", "TrkIn :: RMS(#Deltay)^{e+}| #it{1.5<=p_{t}[GeV/c]<5.0} [cm]"},
+    {"TRDresolution_TrkInYSpH0", "TrkIn :: RMS(#Deltay)^{e+}| #it{5.0<=p_{t}[GeV/c]} [cm]"},
+    {"TRDresolution_TrkInYSp0", "TrkIn :: RMS(#Deltay)^{e+} [cm]"},
+    {"TRDresolution_TrkInPhpL0", "TrkIn :: <#Delta#phi>^{e+}| #it{p_{t}[GeV/c]<0.5} [deg]"},
+    {"TRDresolution_TrkInPhpl0", "TrkIn :: <#Delta#phi>^{e+}| #it{0.5<=p_{t}[GeV/c]<0.8} [deg]"},
+    {"TRDresolution_TrkInPhpi0", "TrkIn :: <#Delta#phi>^{e+}| #it{0.8<=p_{t}[GeV/c]<1.5} [deg]"},
+    {"TRDresolution_TrkInPhph0", "TrkIn :: <#Delta#phi>^{e+}| #it{1.5<=p_{t}[GeV/c]<5.0} [deg]"},
+    {"TRDresolution_TrkInPhpH0", "TrkIn :: <#Delta#phi>^{e+}| #it{5.0<=p_{t}[GeV/c]} [deg]"},
     {"TRDresolution_TrkInPhp0", "TrkIn :: <#Delta#phi>^{e+} [deg]"},
-    {"TRDresolution_TrkInQpL0", "TrkIn :: MPV(dQdl)^{e+}(p_{t}[GeV/c]<0.5) [a.u.]"},
-    {"TRDresolution_TrkInQpl0", "TrkIn :: MPV(dQdl)^{e+}(0.5<=p_{t}[GeV/c]<0.8) [a.u.]"},
-    {"TRDresolution_TrkInQpi0", "TrkIn :: MPV(dQdl)^{e+}(0.8<=p_{t}[GeV/c]<1.5) [a.u.]"},
-    {"TRDresolution_TrkInQph0", "TrkIn :: MPV(dQdl)^{e+}(1.5<=p_{t}[GeV/c]<5.0) [a.u.]"},
-    {"TRDresolution_TrkInQpH0", "TrkIn :: MPV(dQdl)^{e+}(5.0<=p_{t}[GeV/c]) [a.u.]"},
+    {"TRDresolution_TrkInPhSpL0", "TrkIn :: RMS<#Delta#phi>^{e+}| #it{p[GeV/c]<0.5} [deg]"},
+    {"TRDresolution_TrkInPhSpl0", "TrkIn :: RMS<#Delta#phi>^{e+}| #it{0.5<=p[GeV/c]<0.8} [deg]"},
+    {"TRDresolution_TrkInPhSpi0", "TrkIn :: RMS<#Delta#phi>^{e+}| #it{0.8<=p[GeV/c]<1.5} [deg]"},
+    {"TRDresolution_TrkInPhSph0", "TrkIn :: RMS<#Delta#phi>^{e+}| #it{1.5<=p[GeV/c]<5.0} [deg]"},
+    {"TRDresolution_TrkInPhSpH0", "TrkIn :: RMS<#Delta#phi>^{e+}| #it{5.0<=p[GeV/c]} [deg]"},
+    {"TRDresolution_TrkInPhSp0", "TrkIn :: RMS<#Delta#phi>^{e+} [deg]"},
+    {"TRDresolution_TrkInQpL0", "TrkIn :: MPV(dQdl)^{e+}| #it{p[GeV/c]<0.5} [a.u.]"},
+    {"TRDresolution_TrkInQpl0", "TrkIn :: MPV(dQdl)^{e+}| #it{0.5<=p[GeV/c]<0.8} [a.u.]"},
+    {"TRDresolution_TrkInQpi0", "TrkIn :: MPV(dQdl)^{e+}| #it{0.8<=p[GeV/c]<1.5} [a.u.]"},
+    {"TRDresolution_TrkInQph0", "TrkIn :: MPV(dQdl)^{e+}| #it{1.5<=p[GeV/c]<5.0} [a.u.]"},
+    {"TRDresolution_TrkInQpH0", "TrkIn :: MPV(dQdl)^{e+}| #it{5.0<=p[GeV/c]} [a.u.]"},
     {"TRDresolution_TrkInQp0", "TrkIn :: MPV(dQdl)^{e+} [a.u.]"},
-    {"TRDresolution_TrkInQSpL0", "TrkIn :: <dQdl>^{e+}(p_{t}[GeV/c]<0.5) [a.u.]"},
-    {"TRDresolution_TrkInQSpl0", "TrkIn :: <dQdl>^{e+}(0.5<=p_{t}[GeV/c]<0.8) [a.u.]"},
-    {"TRDresolution_TrkInQSpi0", "TrkIn :: <dQdl>^{e+}(0.8<=p_{t}[GeV/c]<1.5) [a.u.]"},
-    {"TRDresolution_TrkInQSph0", "TrkIn :: <dQdl>^{e+}(1.5<=p_{t}[GeV/c]<5.0) [a.u.]"},
-    {"TRDresolution_TrkInQSpH0", "TrkIn :: <dQdl>^{e+}(5.0<=p_{t}[GeV/c]) [a.u.]"},
+    {"TRDresolution_TrkInQSpL0", "TrkIn :: <dQdl>^{e+}| #it{p[GeV/c]<0.5} [a.u.]"},
+    {"TRDresolution_TrkInQSpl0", "TrkIn :: <dQdl>^{e+}| #it{0.5<=p[GeV/c]<0.8} [a.u.]"},
+    {"TRDresolution_TrkInQSpi0", "TrkIn :: <dQdl>^{e+}| #it{0.8<=p[GeV/c]<1.5} [a.u.]"},
+    {"TRDresolution_TrkInQSph0", "TrkIn :: <dQdl>^{e+}| #it{1.5<=p[GeV/c]<5.0} [a.u.]"},
+    {"TRDresolution_TrkInQSpH0", "TrkIn :: <dQdl>^{e+}| #it{5.0<=p[GeV/c]} [a.u.]"},
     {"TRDresolution_TrkInQSp0", "TrkIn :: <dQdl>^{e+} [a.u.]"},
-    {"TRDresolution_TrkInPhpL1", "TrkIn :: <#Delta#phi>^{#mu#pi+}(p_{t}[GeV/c]<0.5) [deg]"},
-    {"TRDresolution_TrkInPhpl1", "TrkIn :: <#Delta#phi>^{#mu#pi+}(0.5<=p_{t}[GeV/c]<0.8) [deg]"},
-    {"TRDresolution_TrkInPhpi1", "TrkIn :: <#Delta#phi>^{#mu#pi+}(0.8<=p_{t}[GeV/c]<1.5) [deg]"},
-    {"TRDresolution_TrkInPhph1", "TrkIn :: <#Delta#phi>^{#mu#pi+}(1.5<=p_{t}[GeV/c]<5.0) [deg]"},
-    {"TRDresolution_TrkInPhpH1", "TrkIn :: <#Delta#phi>^{#mu#pi+}(5.0<=p_{t}[GeV/c]) [deg]"},
+    {"TRDresolution_TrkInYpL1", "TrkIn :: <#Deltay>^{#mu#pi+}| #it{p_{t}[GeV/c]<0.5} [cm]"},
+    {"TRDresolution_TrkInYpl1", "TrkIn :: <#Deltay>^{#mu#pi+}| #it{0.5<=p_{t}[GeV/c]<0.8} [cm]"},
+    {"TRDresolution_TrkInYpi1", "TrkIn :: <#Deltay>^{#mu#pi+}| #it{0.8<=p_{t}[GeV/c]<1.5} [cm]"},
+    {"TRDresolution_TrkInYph1", "TrkIn :: <#Deltay>^{#mu#pi+}| #it{1.5<=p_{t}[GeV/c]<5.0} [cm]"},
+    {"TRDresolution_TrkInYpH1", "TrkIn :: <#Deltay>^{#mu#pi+}| #it{5.0<=p_{t}[GeV/c]} [cm]"},
+    {"TRDresolution_TrkInYp1", "TrkIn :: <#Deltay>^{#mu#pi+} [cm]"},
+    {"TRDresolution_TrkInYSpL1", "TrkIn :: RMS(#Deltay)^{#mu#pi+}| #it{p_{t}[GeV/c]<0.5} [cm]"},
+    {"TRDresolution_TrkInYSpl1", "TrkIn :: RMS(#Deltay)^{#mu#pi+}| #it{0.5<=p_{t}[GeV/c]<0.8} [cm]"},
+    {"TRDresolution_TrkInYSpi1", "TrkIn :: RMS(#Deltay)^{#mu#pi+}| #it{0.8<=p_{t}[GeV/c]<1.5} [cm]"},
+    {"TRDresolution_TrkInYSph1", "TrkIn :: RMS(#Deltay)^{#mu#pi+}| #it{1.5<=p_{t}[GeV/c]<5.0} [cm]"},
+    {"TRDresolution_TrkInYSpH1", "TrkIn :: RMS(#Deltay)^{#mu#pi+}| #it{5.0<=p_{t}[GeV/c]} [cm]"},
+    {"TRDresolution_TrkInYSp1", "TrkIn :: RMS(#Deltay)^{#mu#pi+} [cm]"},
+    {"TRDresolution_TrkInPhpL1", "TrkIn :: <#Delta#phi>^{#mu#pi+}| #it{p_{t}[GeV/c]<0.5} [deg]"},
+    {"TRDresolution_TrkInPhpl1", "TrkIn :: <#Delta#phi>^{#mu#pi+}| #it{0.5<=p_{t}[GeV/c]<0.8} [deg]"},
+    {"TRDresolution_TrkInPhpi1", "TrkIn :: <#Delta#phi>^{#mu#pi+}| #it{0.8<=p_{t}[GeV/c]<1.5} [deg]"},
+    {"TRDresolution_TrkInPhph1", "TrkIn :: <#Delta#phi>^{#mu#pi+}| #it{1.5<=p_{t}[GeV/c]<5.0} [deg]"},
+    {"TRDresolution_TrkInPhpH1", "TrkIn :: <#Delta#phi>^{#mu#pi+}| #it{5.0<=p_{t}[GeV/c]} [deg]"},
     {"TRDresolution_TrkInPhp1", "TrkIn :: <#Delta#phi>^{#mu#pi+} [deg]"},
-    {"TRDresolution_TrkInQpL1", "TrkIn :: MPV(dQdl)^{#mu#pi+}(p_{t}[GeV/c]<0.5) [a.u.]"},
-    {"TRDresolution_TrkInQpl1", "TrkIn :: MPV(dQdl)^{#mu#pi+}(0.5<=p_{t}[GeV/c]<0.8) [a.u.]"},
-    {"TRDresolution_TrkInQpi1", "TrkIn :: MPV(dQdl)^{#mu#pi+}(0.8<=p_{t}[GeV/c]<1.5) [a.u.]"},
-    {"TRDresolution_TrkInQph1", "TrkIn :: MPV(dQdl)^{#mu#pi+}(1.5<=p_{t}[GeV/c]<5.0) [a.u.]"},
-    {"TRDresolution_TrkInQpH1", "TrkIn :: MPV(dQdl)^{#mu#pi+}(5.0<=p_{t}[GeV/c]) [a.u.]"},
+    {"TRDresolution_TrkInPhSpL1", "TrkIn :: RMS<#Delta#phi>^{#mu#pi+}| #it{p[GeV/c]<0.5} [deg]"},
+    {"TRDresolution_TrkInPhSpl1", "TrkIn :: RMS<#Delta#phi>^{#mu#pi+}| #it{0.5<=p[GeV/c]<0.8} [deg]"},
+    {"TRDresolution_TrkInPhSpi1", "TrkIn :: RMS<#Delta#phi>^{#mu#pi+}| #it{0.8<=p[GeV/c]<1.5} [deg]"},
+    {"TRDresolution_TrkInPhSph1", "TrkIn :: RMS<#Delta#phi>^{#mu#pi+}| #it{1.5<=p[GeV/c]<5.0} [deg]"},
+    {"TRDresolution_TrkInPhSpH1", "TrkIn :: RMS<#Delta#phi>^{#mu#pi+}| #it{5.0<=p[GeV/c]} [deg]"},
+    {"TRDresolution_TrkInPhSp1", "TrkIn :: RMS<#Delta#phi>^{#mu#pi+} [deg]"},
+    {"TRDresolution_TrkInQpL1", "TrkIn :: MPV(dQdl)^{#mu#pi+}| #it{p[GeV/c]<0.5} [a.u.]"},
+    {"TRDresolution_TrkInQpl1", "TrkIn :: MPV(dQdl)^{#mu#pi+}| #it{0.5<=p[GeV/c]<0.8} [a.u.]"},
+    {"TRDresolution_TrkInQpi1", "TrkIn :: MPV(dQdl)^{#mu#pi+}| #it{0.8<=p[GeV/c]<1.5} [a.u.]"},
+    {"TRDresolution_TrkInQph1", "TrkIn :: MPV(dQdl)^{#mu#pi+}| #it{1.5<=p[GeV/c]<5.0} [a.u.]"},
+    {"TRDresolution_TrkInQpH1", "TrkIn :: MPV(dQdl)^{#mu#pi+}| #it{5.0<=p[GeV/c]} [a.u.]"},
     {"TRDresolution_TrkInQp1", "TrkIn :: MPV(dQdl)^{#mu#pi+} [a.u.]"},
-    {"TRDresolution_TrkInQSpL1", "TrkIn :: <dQdl>^{#mu#pi+}(p_{t}[GeV/c]<0.5) [a.u.]"},
-    {"TRDresolution_TrkInQSpl1", "TrkIn :: <dQdl>^{#mu#pi+}(0.5<=p_{t}[GeV/c]<0.8) [a.u.]"},
-    {"TRDresolution_TrkInQSpi1", "TrkIn :: <dQdl>^{#mu#pi+}(0.8<=p_{t}[GeV/c]<1.5) [a.u.]"},
-    {"TRDresolution_TrkInQSph1", "TrkIn :: <dQdl>^{#mu#pi+}(1.5<=p_{t}[GeV/c]<5.0) [a.u.]"},
-    {"TRDresolution_TrkInQSpH1", "TrkIn :: <dQdl>^{#mu#pi+}(5.0<=p_{t}[GeV/c]) [a.u.]"},
+    {"TRDresolution_TrkInQSpL1", "TrkIn :: <dQdl>^{#mu#pi+}| #it{p[GeV/c]<0.5} [a.u.]"},
+    {"TRDresolution_TrkInQSpl1", "TrkIn :: <dQdl>^{#mu#pi+}| #it{0.5<=p[GeV/c]<0.8} [a.u.]"},
+    {"TRDresolution_TrkInQSpi1", "TrkIn :: <dQdl>^{#mu#pi+}| #it{0.8<=p[GeV/c]<1.5} [a.u.]"},
+    {"TRDresolution_TrkInQSph1", "TrkIn :: <dQdl>^{#mu#pi+}| #it{1.5<=p[GeV/c]<5.0} [a.u.]"},
+    {"TRDresolution_TrkInQSpH1", "TrkIn :: <dQdl>^{#mu#pi+}| #it{5.0<=p[GeV/c]} [a.u.]"},
     {"TRDresolution_TrkInQSp1", "TrkIn :: <dQdl>^{#mu#pi+} [a.u.]"},
-    {"TRDresolution_TrkInPhpL2", "TrkIn :: <#Delta#phi>^{Kp+}(p_{t}[GeV/c]<0.5) [deg]"},
-    {"TRDresolution_TrkInPhpl2", "TrkIn :: <#Delta#phi>^{Kp+}(0.5<=p_{t}[GeV/c]<0.8) [deg]"},
-    {"TRDresolution_TrkInPhpi2", "TrkIn :: <#Delta#phi>^{Kp+}(0.8<=p_{t}[GeV/c]<1.5) [deg]"},
-    {"TRDresolution_TrkInPhph2", "TrkIn :: <#Delta#phi>^{Kp+}(1.5<=p_{t}[GeV/c]<5.0) [deg]"},
-    {"TRDresolution_TrkInPhpH2", "TrkIn :: <#Delta#phi>^{Kp+}(5.0<=p_{t}[GeV/c]) [deg]"},
+    {"TRDresolution_TrkInYpL2", "TrkIn :: <#Deltay>^{Kp+}| #it{p_{t}[GeV/c]<0.5} [cm]"},
+    {"TRDresolution_TrkInYpl2", "TrkIn :: <#Deltay>^{Kp+}| #it{0.5<=p_{t}[GeV/c]<0.8} [cm]"},
+    {"TRDresolution_TrkInYpi2", "TrkIn :: <#Deltay>^{Kp+}| #it{0.8<=p_{t}[GeV/c]<1.5} [cm]"},
+    {"TRDresolution_TrkInYph2", "TrkIn :: <#Deltay>^{Kp+}| #it{1.5<=p_{t}[GeV/c]<5.0} [cm]"},
+    {"TRDresolution_TrkInYpH2", "TrkIn :: <#Deltay>^{Kp+}| #it{5.0<=p_{t}[GeV/c]} [cm]"},
+    {"TRDresolution_TrkInYp2", "TrkIn :: <#Deltay>^{Kp+} [cm]"},
+    {"TRDresolution_TrkInYSpL2", "TrkIn :: RMS(#Deltay)^{Kp+}| #it{p_{t}[GeV/c]<0.5} [cm]"},
+    {"TRDresolution_TrkInYSpl2", "TrkIn :: RMS(#Deltay)^{Kp+}| #it{0.5<=p_{t}[GeV/c]<0.8} [cm]"},
+    {"TRDresolution_TrkInYSpi2", "TrkIn :: RMS(#Deltay)^{Kp+}| #it{0.8<=p_{t}[GeV/c]<1.5} [cm]"},
+    {"TRDresolution_TrkInYSph2", "TrkIn :: RMS(#Deltay)^{Kp+}| #it{1.5<=p_{t}[GeV/c]<5.0} [cm]"},
+    {"TRDresolution_TrkInYSpH2", "TrkIn :: RMS(#Deltay)^{Kp+}| #it{5.0<=p_{t}[GeV/c]} [cm]"},
+    {"TRDresolution_TrkInYSp2", "TrkIn :: RMS(#Deltay)^{Kp+} [cm]"},
+    {"TRDresolution_TrkInPhpL2", "TrkIn :: <#Delta#phi>^{Kp+}| #it{p_{t}[GeV/c]<0.5} [deg]"},
+    {"TRDresolution_TrkInPhpl2", "TrkIn :: <#Delta#phi>^{Kp+}| #it{0.5<=p_{t}[GeV/c]<0.8} [deg]"},
+    {"TRDresolution_TrkInPhpi2", "TrkIn :: <#Delta#phi>^{Kp+}| #it{0.8<=p_{t}[GeV/c]<1.5} [deg]"},
+    {"TRDresolution_TrkInPhph2", "TrkIn :: <#Delta#phi>^{Kp+}| #it{1.5<=p_{t}[GeV/c]<5.0} [deg]"},
+    {"TRDresolution_TrkInPhpH2", "TrkIn :: <#Delta#phi>^{Kp+}| #it{5.0<=p_{t}[GeV/c]} [deg]"},
     {"TRDresolution_TrkInPhp2", "TrkIn :: <#Delta#phi>^{Kp+} [deg]"},
-    {"TRDresolution_TrkInQpL2", "TrkIn :: MPV(dQdl)^{Kp+}(p_{t}[GeV/c]<0.5) [a.u.]"},
-    {"TRDresolution_TrkInQpl2", "TrkIn :: MPV(dQdl)^{Kp+}(0.5<=p_{t}[GeV/c]<0.8) [a.u.]"},
-    {"TRDresolution_TrkInQpi2", "TrkIn :: MPV(dQdl)^{Kp+}(0.8<=p_{t}[GeV/c]<1.5) [a.u.]"},
-    {"TRDresolution_TrkInQph2", "TrkIn :: MPV(dQdl)^{Kp+}(1.5<=p_{t}[GeV/c]<5.0) [a.u.]"},
-    {"TRDresolution_TrkInQpH2", "TrkIn :: MPV(dQdl)^{Kp+}(5.0<=p_{t}[GeV/c]) [a.u.]"},
+    {"TRDresolution_TrkInPhSpL2", "TrkIn :: RMS<#Delta#phi>^{Kp+}| #it{p[GeV/c]<0.5} [deg]"},
+    {"TRDresolution_TrkInPhSpl2", "TrkIn :: RMS<#Delta#phi>^{Kp+}| #it{0.5<=p[GeV/c]<0.8} [deg]"},
+    {"TRDresolution_TrkInPhSpi2", "TrkIn :: RMS<#Delta#phi>^{Kp+}| #it{0.8<=p[GeV/c]<1.5} [deg]"},
+    {"TRDresolution_TrkInPhSph2", "TrkIn :: RMS<#Delta#phi>^{Kp+}| #it{1.5<=p[GeV/c]<5.0} [deg]"},
+    {"TRDresolution_TrkInPhSpH2", "TrkIn :: RMS<#Delta#phi>^{Kp+}| #it{5.0<=p[GeV/c]} [deg]"},
+    {"TRDresolution_TrkInPhSp2", "TrkIn :: RMS<#Delta#phi>^{Kp+} [deg]"},
+    {"TRDresolution_TrkInQpL2", "TrkIn :: MPV(dQdl)^{Kp+}| #it{p[GeV/c]<0.5} [a.u.]"},
+    {"TRDresolution_TrkInQpl2", "TrkIn :: MPV(dQdl)^{Kp+}| #it{0.5<=p[GeV/c]<0.8} [a.u.]"},
+    {"TRDresolution_TrkInQpi2", "TrkIn :: MPV(dQdl)^{Kp+}| #it{0.8<=p[GeV/c]<1.5} [a.u.]"},
+    {"TRDresolution_TrkInQph2", "TrkIn :: MPV(dQdl)^{Kp+}| #it{1.5<=p[GeV/c]<5.0} [a.u.]"},
+    {"TRDresolution_TrkInQpH2", "TrkIn :: MPV(dQdl)^{Kp+}| #it{5.0<=p[GeV/c]} [a.u.]"},
     {"TRDresolution_TrkInQp2", "TrkIn :: MPV(dQdl)^{Kp+} [a.u.]"},
-    {"TRDresolution_TrkInQSpL2", "TrkIn :: <dQdl>^{Kp+}(p_{t}[GeV/c]<0.5) [a.u.]"},
-    {"TRDresolution_TrkInQSpl2", "TrkIn :: <dQdl>^{Kp+}(0.5<=p_{t}[GeV/c]<0.8) [a.u.]"},
-    {"TRDresolution_TrkInQSpi2", "TrkIn :: <dQdl>^{Kp+}(0.8<=p_{t}[GeV/c]<1.5) [a.u.]"},
-    {"TRDresolution_TrkInQSph2", "TrkIn :: <dQdl>^{Kp+}(1.5<=p_{t}[GeV/c]<5.0) [a.u.]"},
-    {"TRDresolution_TrkInQSpH2", "TrkIn :: <dQdl>^{Kp+}(5.0<=p_{t}[GeV/c]) [a.u.]"},
+    {"TRDresolution_TrkInQSpL2", "TrkIn :: <dQdl>^{Kp+}| #it{p[GeV/c]<0.5} [a.u.]"},
+    {"TRDresolution_TrkInQSpl2", "TrkIn :: <dQdl>^{Kp+}| #it{0.5<=p[GeV/c]<0.8} [a.u.]"},
+    {"TRDresolution_TrkInQSpi2", "TrkIn :: <dQdl>^{Kp+}| #it{0.8<=p[GeV/c]<1.5} [a.u.]"},
+    {"TRDresolution_TrkInQSph2", "TrkIn :: <dQdl>^{Kp+}| #it{1.5<=p[GeV/c]<5.0} [a.u.]"},
+    {"TRDresolution_TrkInQSpH2", "TrkIn :: <dQdl>^{Kp+}| #it{5.0<=p[GeV/c]} [a.u.]"},
     {"TRDresolution_TrkInQSp2", "TrkIn :: <dQdl>^{Kp+} [a.u.]"},
-    {"TRDresolution_TrkInYpL", "TrkIn :: <#Deltay>^{+}(p_{t}[GeV/c]<0.5) [cm]"},
-    {"TRDresolution_TrkInYSpL", "TrkIn :: RMS(#Deltay)^{+}(p_{t}[GeV/c]<0.5) [cm]"},
-    {"TRDresolution_TrkInPhpL", "TrkIn :: <#Delta#phi>^{+}(p_{t}[GeV/c]<0.5) [deg]"},
-    {"TRDresolution_TrkInYpl", "TrkIn :: <#Deltay>^{+}(0.5<=p_{t}[GeV/c]<0.8) [cm]"},
-    {"TRDresolution_TrkInYSpl", "TrkIn :: RMS(#Deltay)^{+}(0.5<=p_{t}[GeV/c]<0.8) [cm]"},
-    {"TRDresolution_TrkInPhpl", "TrkIn :: <#Delta#phi>^{+}(0.5<=p_{t}[GeV/c]<0.8) [deg]"},
-    {"TRDresolution_TrkInYpi", "TrkIn :: <#Deltay>^{+}(0.8<=p_{t}[GeV/c]<1.5) [cm]"},
-    {"TRDresolution_TrkInYSpi", "TrkIn :: RMS(#Deltay)^{+}(0.8<=p_{t}[GeV/c]<1.5) [cm]"},
-    {"TRDresolution_TrkInPhpi", "TrkIn :: <#Delta#phi>^{+}(0.8<=p_{t}[GeV/c]<1.5) [deg]"},
-    {"TRDresolution_TrkInYph", "TrkIn :: <#Deltay>^{+}(1.5<=p_{t}[GeV/c]<5.0) [cm]"},
-    {"TRDresolution_TrkInYSph", "TrkIn :: RMS(#Deltay)^{+}(1.5<=p_{t}[GeV/c]<5.0) [cm]"},
-    {"TRDresolution_TrkInPhph", "TrkIn :: <#Delta#phi>^{+}(1.5<=p_{t}[GeV/c]<5.0) [deg]"},
-    {"TRDresolution_TrkInYpH", "TrkIn :: <#Deltay>^{+}(5.0<=p_{t}[GeV/c]) [cm]"},
-    {"TRDresolution_TrkInYSpH", "TrkIn :: RMS(#Deltay)^{+}(5.0<=p_{t}[GeV/c]) [cm]"},
-    {"TRDresolution_TrkInPhpH", "TrkIn :: <#Delta#phi>^{+}(5.0<=p_{t}[GeV/c]) [deg]"},
+    {"TRDresolution_TrkInYpL", "TrkIn :: <#Deltay>^{+}| #it{p_{t}[GeV/c]<0.5} [cm]"},
+    {"TRDresolution_TrkInYSpL", "TrkIn :: RMS(#Deltay)^{+}| #it{p_{t}[GeV/c]<0.5} [cm]"},
+    {"TRDresolution_TrkInPhpL", "TrkIn :: <#Delta#phi>^{+}| #it{p_{t}[GeV/c]<0.5} [deg]"},
+    {"TRDresolution_TrkInPhSpL", "TrkIn :: RMS<#Delta#phi>^{+}| #it{p_{t}[GeV/c]<0.5} [deg]"},
+    {"TRDresolution_TrkInYpl", "TrkIn :: <#Deltay>^{+}| #it{0.5<=p_{t}[GeV/c]<0.8} [cm]"},
+    {"TRDresolution_TrkInYSpl", "TrkIn :: RMS(#Deltay)^{+}| #it{0.5<=p_{t}[GeV/c]<0.8} [cm]"},
+    {"TRDresolution_TrkInPhpl", "TrkIn :: <#Delta#phi>^{+}| #it{0.5<=p_{t}[GeV/c]<0.8} [deg]"},
+    {"TRDresolution_TrkInPhSpl", "TrkIn :: RMS<#Delta#phi>^{+}| #it{0.5<=p_{t}[GeV/c]<0.8} [deg]"},
+    {"TRDresolution_TrkInYpi", "TrkIn :: <#Deltay>^{+}| #it{0.8<=p_{t}[GeV/c]<1.5} [cm]"},
+    {"TRDresolution_TrkInYSpi", "TrkIn :: RMS(#Deltay)^{+}| #it{0.8<=p_{t}[GeV/c]<1.5} [cm]"},
+    {"TRDresolution_TrkInPhpi", "TrkIn :: <#Delta#phi>^{+}| #it{0.8<=p_{t}[GeV/c]<1.5} [deg]"},
+    {"TRDresolution_TrkInPhSpi", "TrkIn :: RMS<#Delta#phi>^{+}| #it{0.8<=p_{t}[GeV/c]<1.5} [deg]"},
+    {"TRDresolution_TrkInYph", "TrkIn :: <#Deltay>^{+}| #it{1.5<=p_{t}[GeV/c]<5.0} [cm]"},
+    {"TRDresolution_TrkInYSph", "TrkIn :: RMS(#Deltay)^{+}| #it{1.5<=p_{t}[GeV/c]<5.0} [cm]"},
+    {"TRDresolution_TrkInPhph", "TrkIn :: <#Delta#phi>^{+}| #it{1.5<=p_{t}[GeV/c]<5.0} [deg]"},
+    {"TRDresolution_TrkInPhSph", "TrkIn :: RMS<#Delta#phi>^{+}| #it{1.5<=p_{t}[GeV/c]<5.0} [deg]"},
+    {"TRDresolution_TrkInYpH", "TrkIn :: <#Deltay>^{+}| #it{5.0<=p_{t}[GeV/c]} [cm]"},
+    {"TRDresolution_TrkInYSpH", "TrkIn :: RMS(#Deltay)^{+}| #it{5.0<=p_{t}[GeV/c]} [cm]"},
+    {"TRDresolution_TrkInPhpH", "TrkIn :: <#Delta#phi>^{+}| #it{5.0<=p_{t}[GeV/c]} [deg]"},
+    {"TRDresolution_TrkInPhSpH", "TrkIn :: RMS<#Delta#phi>^{+}| #it{5.0<=p_{t}[GeV/c]} [deg]"},
     {"TRDresolution_TrkInYp", "TrkIn :: <#Deltay>^{+} [cm]"},
     {"TRDresolution_TrkInYSp", "TrkIn :: RMS(#Deltay)^{+} [cm]"},
     {"TRDresolution_TrkInPhp", "TrkIn :: <#Delta#phi>^{+} [deg]"},
+    {"TRDresolution_TrkInPhSp", "TrkIn :: RMS<#Delta#phi>^{+} [deg]"},
+    {"TRDresolution_TrkInY0", "TrkIn :: <#Deltay>^{e} [cm]"},
     {"TRDresolution_TrkInPh0", "TrkIn :: <#Delta#phi>^{e} [deg]"},
     {"TRDresolution_TrkInQ0", "TrkIn :: MPV(dQdl)^{e} [a.u.]"},
     {"TRDresolution_TrkInQS0", "TrkIn :: <dQdl>^{e} [a.u.]"},
+    {"TRDresolution_TrkInY1", "TrkIn :: <#Deltay>^{#mu#pi} [cm]"},
     {"TRDresolution_TrkInPh1", "TrkIn :: <#Delta#phi>^{#mu#pi} [deg]"},
     {"TRDresolution_TrkInQ1", "TrkIn :: MPV(dQdl)^{#mu#pi} [a.u.]"},
     {"TRDresolution_TrkInQS1", "TrkIn :: <dQdl>^{#mu#pi} [a.u.]"},
+    {"TRDresolution_TrkInY2", "TrkIn :: <#Deltay>^{Kp} [cm]"},
     {"TRDresolution_TrkInPh2", "TrkIn :: <#Delta#phi>^{Kp} [deg]"},
     {"TRDresolution_TrkInQ2", "TrkIn :: MPV(dQdl)^{Kp} [a.u.]"},
-    {"TRDresolution_TrkInQS2", "TrkIn :: <dQdl>^{Kp} [a.u.]"}
+    {"TRDresolution_TrkInQS2", "TrkIn :: <dQdl>^{Kp} [a.u.]"},
+    {"TRDresolution_TrkInRCZ", "TrkIn :: <#Deltaz> [cm]"},
+    {"TRDresolution_TrkInRCZS", "TrkIn :: #sigma(#Deltaz) [cm]"}
   };
   const char *resName[] = {"Markus Fasel", "Alexandru Bercuci"},
              *resMail[] = {"M.Fasel@gsi.de", "A.Bercuci@gsi.de"};
   const char *notName[] = {"Julian Book", "Hans Beck", "Ionut Arsene", "Raphaelle Bailache", "Christoph Blume"},
              *notMail[] = {"jbook@ikf.uni-frankfurt.de", "hbeck@ikf.uni-frankfurt.de", "I.C.Arsene@gsi.de", "R.Bailhache@gsi.de", "blume@ikf.uni-frankfurt.de"};
+  for(Int_t jnt(0); jnt<nt; jnt++) printf("%3d %s %s\n", jnt, tvn[jnt][0], tvn[jnt][1]);
 
   TFile *fDB = TFile::Open("TRD.TrendDB.root", "RECREATE");
   TTree *tDB = new TTree("trend", "Reference Trend Values");
@@ -210,18 +363,22 @@ void makeTrendingDB(const Char_t *fl)
   TString sfp;
   while(sfp.Gets(fp)){
     if(!TFile::Open(sfp.Data())) continue;
+    Int_t nmiss(0), nbads(0);
     for(Int_t it(0); it<nt; it++){
       val[it] = -999;
       if(!(tv = (AliTRDtrendValue*)gFile->Get(tvn[it][0]))) {
-        Warning("makeTrendingDB()", "Missing %s from %s", tvn[it][0], sfp.Data());
+        //Warning("makeTrendingDB()", "Missing %s from %s", tvn[it][0], sfp.Data());
+        nmiss++;
         continue;
       }
       if((strstr(tvn[it][0], "TRDcheckDET") || strstr(tvn[it][0], "QS") || strstr(tvn[it][0], "YS")) && TMath::Abs(tv->GetVal()) < 1.e-5){
-        Info("makeTrendingDB()", "Found bad value for %s[%f] in %s", tvn[it][0], tv->GetVal(), sfp.Data());
+        //Info("makeTrendingDB()", "Found bad value for %s[%f] in %s", tvn[it][0], tv->GetVal(), sfp.Data());
+        nbads++;
         continue;
       }
       val[it] = tv->GetVal();
     }
+    Warning("makeTrendingDB()", "%s :: Missing[%d] Bads[%d]", sfp.Data(), nmiss, nbads);
     gFile->Close();
     tDB->Fill();
   }