Move track performance task selection to AddTask macros
authorabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 10 Mar 2010 09:29:00 +0000 (09:29 +0000)
committerabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 10 Mar 2010 09:29:00 +0000 (09:29 +0000)
Easy performance plots Building
Update info gen for forking performance tasks

14 files changed:
PWG1/TRD/AliTRDefficiencyMC.cxx
PWG1/TRD/AliTRDinfoGen.cxx
PWG1/TRD/AliTRDinfoGen.h
PWG1/TRD/AliTRDrecoTask.cxx
PWG1/TRD/AliTRDrecoTask.h
PWG1/TRD/AliTRDresolution.cxx
PWG1/TRD/AliTRDresolution.h
PWG1/TRD/macros/AddTRDcheckDET.C
PWG1/TRD/macros/AddTRDcheckESD.C
PWG1/TRD/macros/AddTRDefficiency.C
PWG1/TRD/macros/AddTRDinfoGen.C
PWG1/TRD/macros/AddTRDresolution.C
PWG1/TRD/macros/makeResults.C
PWG1/macros/AddTrainPerformanceTRD.C

index a251ccc..8620815 100644 (file)
@@ -368,7 +368,7 @@ Int_t AliTRDefficiencyMC::IsFindableNot(AliTRDtrackInfo * const trkInf){
     if(!(trackRef = trkInf->GetTrackRef(itr))) continue;
     x = trackRef->LocalX(); 
     // Be Sure that we are inside TRD
-    if(x < AliTRDinfoGen::GetTPCx() || x > AliTRDinfoGen::GetTOFx()) continue; 
+    if(x < AliTRDinfoGen::GetEndTPC() || x > AliTRDinfoGen::GetEndTRD()) continue;     
     sector[ntrTRD] = Int_t(trackRef->Alpha()/AliTRDgeometry::GetAlpha());
     AliDebug(10, Form("    [%2d] x[%7.2f] y[%7.2f] z[%7.2f] Sec[%2d]", itr, trackRef->LocalX(), trackRef->LocalY(), trackRef->Z(), sector[ntrTRD]));
     if(x < xmin){
index 3055091..df80cf3 100644 (file)
@@ -78,8 +78,9 @@
 
 ClassImp(AliTRDinfoGen)
 
+const Float_t AliTRDinfoGen::fgkITS = 100.; // to be checked
 const Float_t AliTRDinfoGen::fgkTPC = 290.;
-const Float_t AliTRDinfoGen::fgkTOF = 365.;
+const Float_t AliTRDinfoGen::fgkTRD = 365.;
 
 const Float_t AliTRDinfoGen::fgkEvVertexZ = 15.;
 const Int_t   AliTRDinfoGen::fgkEvVertexN = 1;
@@ -262,8 +263,10 @@ void AliTRDinfoGen::UserExec(Option_t *){
   }
   
   Double32_t dedx[100]; Int_t nSlices(0);
-  Int_t nTRDout(0), nTRDin(0), nTPC(0), nclsTrklt;
-  AliDebug(2, Form("Entry[%3d] Tracks: ESD[%d] MC[%d]\n", (Int_t)AliAnalysisManager::GetAnalysisManager()->GetCurrentEntry(), nTracksESD, nTracksMC));
+  Int_t nTRDout(0), nTRDin(0), nTPC(0)
+       ,nclsTrklt
+       ,nBarrel(0), nSA(0), nKink(0)
+       ,nBarrelMC(0), nSAMC(0), nKinkMC(0);
   AliESDtrack *esdTrack = NULL;
   AliESDfriendTrack *esdFriendTrack = NULL;
   TObject *calObject = NULL;
@@ -320,7 +323,7 @@ void AliTRDinfoGen::UserExec(Option_t *){
       Int_t jref = iref;//, kref = 0;
       while(jref<nRefs){
         ref = mcParticle->GetTrackReference(jref);
-        if(ref->LocalX() > fgkTOF) break;
+        if(ref->LocalX() > fgkTRD) break;
         AliDebug(4, Form("  trackRef[%2d (%2d)] @ %7.3f OK", jref-iref, jref, ref->LocalX()));
         fTrackInfo->AddTrackRef(ref);
         jref++;
@@ -398,21 +401,20 @@ void AliTRDinfoGen::UserExec(Option_t *){
           }
         }
         if(fTrackCut && !fTrackCut->IsSelected(esdTrack)) selected = kFALSE;
-        if(selected) fTracksBarrel->Add(new AliTRDtrackInfo(*fTrackInfo));
-      } else fTracksKink->Add(new AliTRDtrackInfo(*fTrackInfo));
-    } else if((status&AliESDtrack::kTRDout) && !(status&AliESDtrack::kTRDin)) fTracksSA->Add(new AliTRDtrackInfo(*fTrackInfo));
+        if(selected){ 
+          fTracksBarrel->Add(new AliTRDtrackInfo(*fTrackInfo));
+          nBarrel++;
+        }
+      } else {
+        fTracksKink->Add(new AliTRDtrackInfo(*fTrackInfo));
+        nKink++;
+      }
+    } else if((status&AliESDtrack::kTRDout) && !(status&AliESDtrack::kTRDin)){ 
+      fTracksSA->Add(new AliTRDtrackInfo(*fTrackInfo));
+      nSA++;
+    }
     fTrackInfo->Delete("");
   }
-  AliDebug(2, Form(
-    "%3d Tracks: TPCout[%d] TRDin[%d] TRDout[%d]\n"
-    "            Barrel[%d] SA[%d] Kink[%d]"
-    ,(Int_t)AliAnalysisManager::GetAnalysisManager()->GetCurrentEntry()
-    , nTPC, nTRDin, nTRDout
-    ,fTracksBarrel->GetEntriesFast()
-    ,fTracksSA->GetEntriesFast()
-    ,fTracksKink->GetEntriesFast()
-  ));
-
 
 //   AliESDv0 *v0 = NULL;
 //   for(Int_t iv0=0; iv0<fESD->GetNumberOfV0s(); iv0++){
@@ -434,10 +436,10 @@ void AliTRDinfoGen::UserExec(Option_t *){
       Int_t nRefsTRD = 0;
       new(fTrackInfo) AliTRDtrackInfo();
       fTrackInfo->SetPDG(fPdg);
-      while(iref<nRefs){
+      while(iref<nRefs){ // count TRD TR
         Bool_t kIN(kFALSE);
         ref = mcParticle->GetTrackReference(iref);
-        if(ref->LocalX() > fgkTPC && ref->LocalX() < fgkTOF){
+        if(ref->LocalX() > fgkTPC && ref->LocalX() < fgkTRD){
           fTrackInfo->AddTrackRef(ref);
           nRefsTRD++;kIN=kTRUE;
         }
@@ -460,11 +462,33 @@ void AliTRDinfoGen::UserExec(Option_t *){
         info.Delete("");
       }
       AliDebug(3, Form("Add MC track @ label[%d] nTRDrefs[%d].", itk, nRefsTRD));
-      fTracksBarrel->Add(new AliTRDtrackInfo(*fTrackInfo));
+      // check where the track starts
+      ref = mcParticle->GetTrackReference(0);
+      if(ref->LocalX() < fgkITS){ 
+        fTracksBarrel->Add(new AliTRDtrackInfo(*fTrackInfo));
+        nBarrelMC++;
+      } else if(ref->LocalX() < fgkTPC) {
+        fTracksKink->Add(new AliTRDtrackInfo(*fTrackInfo));
+        nKinkMC++;
+      } else if(nRefsTRD>6){
+        fTracksSA->Add(new AliTRDtrackInfo(*fTrackInfo));
+        nSAMC++;
+      }
       fTrackInfo->Delete("");
     }
     delete[] trackMap;
   }
+  AliDebug(2, Form(
+    "\nEv[%3d] Tracks: ESD[%d] MC[%d]\n"
+    "        TPCout[%d] TRDin[%d] TRDout[%d]\n"
+    "        Barrel[%3d+%3d=%3d] SA[%2d+%2d=%2d] Kink[%2d+%2d=%2d]"
+    ,(Int_t)AliAnalysisManager::GetAnalysisManager()->GetCurrentEntry(), nTracksESD, nTracksMC
+    , nTPC, nTRDin, nTRDout
+    ,nBarrel, nBarrelMC, fTracksBarrel->GetEntries()
+    ,nSA, nSAMC, fTracksSA->GetEntries()
+    ,nKink, nKinkMC, fTracksKink->GetEntries()
+  ));
+
   PostData(kTracksBarrel, fTracksBarrel);
   PostData(kTracksSA, fTracksSA);
   PostData(kTracksKink, fTracksKink);
index 0dec7fe..9f12d4e 100644 (file)
@@ -41,8 +41,9 @@ public:
   virtual ~AliTRDinfoGen();
   
   void    ConnectInputData(Option_t *opt) {AliAnalysisTaskSE::ConnectInputData(opt);}
-  static Float_t GetTPCx() { return fgkTPC;}
-  static Float_t GetTOFx() { return fgkTOF;}
+  static Float_t GetEndITS() { return fgkITS;}
+  static Float_t GetEndTPC() { return fgkTPC;}
+  static Float_t GetEndTRD() { return fgkTRD;}
 
   Bool_t  HasMCdata() const       { return TestBit(kMCdata);};
   // temporary until check with AliAnalysisTaskSE collision selection mechannism
@@ -63,8 +64,10 @@ public:
 
 private:
   // rough radial limits for TRD
+  static const Float_t fgkITS;      // end ITS
   static const Float_t fgkTPC;      // end TPC
-  static const Float_t fgkTOF;      // begin TOF
+  static const Float_t fgkTRD;      // end TRD
+
   // Trigger selection
   TString              *fEvTrigger; // list of trigger classes separated by space
   // Vertex selection
index b192bf0..f1f8788 100644 (file)
@@ -74,7 +74,7 @@ AliTRDrecoTask::~AliTRDrecoTask()
 
   // Generic task destructor
 
-  AliDebug(1, Form(" Ending %s (%s)\n", GetName(), GetTitle()));
+  AliDebug(2, Form(" Ending task %s[%s]", GetName(), GetTitle()));
   if(fgDebugStream){ 
     delete fgDebugStream;
     fgDebugStream = NULL;
@@ -122,7 +122,8 @@ void AliTRDrecoTask::UserExec(Option_t *)
   }
   if(!fTracks) return;
   if(!fTracks->GetEntriesFast()) return;
-  
+  else AliDebug(2, Form("Tracks[%d] for %s", fTracks->GetEntriesFast(), GetName()));
+
   AliTRDtrackInfo *trackInfo = NULL;
   TIter plotIter(fPlotFuncList);
   TObjArrayIter trackIter(fTracks);
index 00eb419..1535d40 100644 (file)
@@ -45,6 +45,7 @@ public:
   
     
   Int_t          GetNRefFigures() const  { return fNRefFigures; } 
+  const Char_t*  GetNameId() const       { return fNameId;}
   TList*         GetPlotFunctors() const { return fPlotFuncList;}
   virtual Bool_t GetRefFigure(Int_t ifig);
 
@@ -59,6 +60,7 @@ public:
   virtual Bool_t PutTrendValue(const Char_t *name, Double_t val);
   virtual void   SetFriends(Bool_t fr = kTRUE) {SetBit(kFriends, fr);}
   virtual void   SetMCdata(Bool_t mc = kTRUE) {SetBit(kMCdata, mc);}
+  virtual void   SetNameId(const Char_t *nid) {sprintf(fNameId, "%s", nid);}
   virtual void   SetPostProcess(Bool_t pp = kTRUE) {SetBit(kPostProcess, pp);}
   virtual void   Terminate(Option_t *);
 
@@ -66,7 +68,7 @@ protected:
   static TTreeSRedirector* DebugStream() { return fgDebugStream;}
   void           InitFunctorList();
   void           Adjust(TF1 *f, TH1 * const h);
-
+  Char_t    fNameId[10];   //! unique identifier of task particularity
   UChar_t   fNRefFigures;  //! no of reference figures reported by task
   TObjArray *fContainer;   //! container to store results
   TObjArray *fTracks;      //! Array of tracks
index 1e66a94..7db9b3c 100644 (file)
@@ -299,7 +299,7 @@ TH1* AliTRDresolution::PlotCharge(const AliTRDtrackV1 *track)
 
   if(track) fkTrack = track;
   if(!fkTrack){
-    AliDebug(2, "No Track defined.");
+    AliDebug(4, "No Track defined.");
     return NULL;
   }
   TObjArray *arr = NULL;
@@ -344,7 +344,7 @@ TH1* AliTRDresolution::PlotCluster(const AliTRDtrackV1 *track)
 
   if(track) fkTrack = track;
   if(!fkTrack){
-    AliDebug(2, "No Track defined.");
+    AliDebug(4, "No Track defined.");
     return NULL;
   }
   TObjArray *arr = NULL;
@@ -355,12 +355,13 @@ TH1* AliTRDresolution::PlotCluster(const AliTRDtrackV1 *track)
   ULong_t status = fkESD ? fkESD->GetStatus():0;
 
   Double_t covR[7], cov[3];
-  Float_t x0, y0, z0, dy, dz, dydx, dzdx;
+  Float_t pt, x0, y0, z0, dy, dz, dydx, dzdx;
   AliTRDseedV1 *fTracklet(NULL);  
   for(Int_t ily=0; ily<AliTRDgeometry::kNlayer; ily++){
     if(!(fTracklet = fkTrack->GetTracklet(ily))) continue;
     if(!fTracklet->IsOK()) continue;
     x0 = fTracklet->GetX0();
+    pt = fTracklet->GetPt();
 
     // retrive the track angle with the chamber
     y0   = fTracklet->GetYref(0);
@@ -400,7 +401,7 @@ TH1* AliTRDresolution::PlotCluster(const AliTRDtrackV1 *track)
       dy = (yc - yt)*TMath::Sqrt(r00);
       dz = (zc - zt)*TMath::Sqrt(r11);
 
-      ((TH2I*)arr->At(0))->Fill(dydx, dy/*, dz*/);
+      ((TH3S*)arr->At(0))->Fill(dydx, dy/*, dz*/, pt);
       ((TH2I*)arr->At(1))->Fill(dydx, dy/TMath::Sqrt(cov[0] /*+ sx2*/ + sy2));
   
       if(DebugLevel()>=2){
@@ -445,7 +446,7 @@ TH1* AliTRDresolution::PlotTracklet(const AliTRDtrackV1 *track)
 // reference position. 
   if(track) fkTrack = track;
   if(!fkTrack){
-    AliDebug(2, "No Track defined.");
+    AliDebug(4, "No Track defined.");
     return NULL;
   }
   TObjArray *arr = NULL;
@@ -505,7 +506,7 @@ TH1* AliTRDresolution::PlotTrackTPC(const AliTRDtrackV1 *track)
 
   if(track) fkTrack = track;
   if(!fkTrack){
-    AliDebug(2, "No Track defined.");
+    AliDebug(4, "No Track defined.");
     return NULL;
   }
   AliExternalTrackParam *tin = NULL;
@@ -545,7 +546,7 @@ TH1* AliTRDresolution::PlotTrackTPC(const AliTRDtrackV1 *track)
   //TODO Double_t dydx =  TMath::Sqrt(1.-parR[2]*parR[2])/parR[2]; 
   Double_t dy = parR[0] - tracklet->GetY(); 
   TObjArray *arr = (TObjArray*)fContainer->At(kTrackTPC);
-  ((TH2I*)arr->At(0))->Fill(tracklet->GetYref(1), dy);
+  ((TH3S*)arr->At(0))->Fill(tracklet->GetYref(1), dy, 1./PAR[4]);
   ((TH2I*)arr->At(1))->Fill(tracklet->GetYref(1), dy/TMath::Sqrt(COV(0,0)+cov[0]));
   if(tracklet->IsRowCross()){
     Double_t dz = parR[1] - tracklet->GetZ(); 
@@ -607,7 +608,7 @@ TH1* AliTRDresolution::PlotTrackTPC(const AliTRDtrackV1 *track)
   // fill histos
   arr = (TObjArray*)fContainer->At(kMCtrackTPC);
   // y resolution/pulls
-  ((TH2I*)arr->At(0))->Fill(dydx0, PARMC[0]-PAR[0]);
+  ((TH3S*)arr->At(0))->Fill(dydx0, PARMC[0]-PAR[0], pt0);
   ((TH2I*)arr->At(1))->Fill(dydx0, (PARMC[0]-PAR[0])/TMath::Sqrt(COV(0,0)));
   // z resolution/pulls
   ((TH2I*)arr->At(2))->Fill(dzdx0, PARMC[1]-PAR[1]);
@@ -653,7 +654,7 @@ TH1* AliTRDresolution::PlotMC(const AliTRDtrackV1 *track)
   }
   if(track) fkTrack = track;
   if(!fkTrack){
-    AliDebug(2, "No Track defined.");
+    AliDebug(4, "No Track defined.");
     return NULL;
   }
   // retriev track characteristics
@@ -732,7 +733,7 @@ TH1* AliTRDresolution::PlotMC(const AliTRDtrackV1 *track)
 
     arr = (TObjArray*)((TObjArray*)fContainer->At(kMCtrackTRD))->At(ily);
     // y resolution/pulls
-    ((TH2I*)arr->At(0))->Fill(dydx0, dy);
+    ((TH3S*)arr->At(0))->Fill(dydx0, dy, pt0);
     ((TH2I*)arr->At(1))->Fill(dydx0, dy/TMath::Sqrt(covR[0]));
     // z resolution/pulls
     ((TH2I*)arr->At(2))->Fill(dzdx0, dz);
@@ -1386,47 +1387,68 @@ void AliTRDresolution::AdjustF1(TH1 *h, TF1 *f)
 }
 
 //________________________________________________________
-TObjArray* AliTRDresolution::BuildMonitorContainerTracklet(const char* name)
+TObjArray* AliTRDresolution::BuildMonitorContainerCluster(const char* name)
 {
-// Build performance histograms for AliExternalTrackParam.vs TRD tracklet
+// Build performance histograms for AliTRDcluster.vs TRD track or MC
 //  - y reziduals/pulls
-//  - z reziduals/pulls
-//  - phi reziduals
-  TObjArray *arr = new TObjArray(5);
+
+  TObjArray *arr = new TObjArray(2);
   arr->SetName(name); arr->SetOwner();
   TH1 *h(NULL); char hname[100], htitle[300];
 
+  const Int_t kNpt(14), kNphi(48), kNdy(60);
+  Float_t Phi=-.48, Dy=-.3, Pt=0.1;
+  Float_t binsPhi[kNphi+1], binsDy[kNdy+1], binsPt[kNpt+1];
+  for(Int_t i=0; i<kNphi+1; i++,Phi+=.02) binsPhi[i]=Phi;
+  for(Int_t i=0; i<kNdy+1; i++,Dy+=.01) binsDy[i]=Dy;
+  for(Int_t i=0;i<kNpt+1; i++,Pt=TMath::Exp(i*.15)-1.) binsPt[i]=Pt;
+
   // tracklet resolution/pull in y direction
-  sprintf(hname, "%s_Y", name);
-  sprintf(htitle, "Y res @ %s;tg(#phi);#Delta y [cm];entries", name);
-  if(!(h = (TH2I*)gROOT->FindObject(hname))){
-    h = new TH2I(hname, htitle, 21, -.33, .33, 100, -.5, .5);
+  sprintf(hname, "%s_%s_Y", GetNameId(), name);
+  sprintf(htitle, "Y res for \"%s\" @ %s;tg(#phi);#Delta y [cm];p_{t} [GeV/c]", GetNameId(), name);
+  if(!(h = (TH3S*)gROOT->FindObject(hname))){
+    h = new TH3S(hname, htitle, 
+                 kNphi, binsPhi, kNdy, binsDy, kNpt, binsPt);
   } else h->Reset();
   arr->AddAt(h, 0);
-  sprintf(hname, "%s_Ypull", name);
-  sprintf(htitle, "Y pull @ %s;tg(#phi);#Delta y  / #sigma_{y};entries", name);
+  sprintf(hname, "%s_%s_Ypull", GetNameId(), name);
+  sprintf(htitle, "Y pull for \"%s\" @ %s;tg(#phi);#Delta y  / #sigma_{y};entries", GetNameId(), name);
   if(!(h = (TH2I*)gROOT->FindObject(hname))){
     h = new TH2I(hname, htitle, 21, -.33, .33, 100, -4.5, 4.5);
   } else h->Reset();
   arr->AddAt(h, 1);
 
+  return arr;
+}
+
+//________________________________________________________
+TObjArray* AliTRDresolution::BuildMonitorContainerTracklet(const char* name)
+{
+// Build performance histograms for AliExternalTrackParam.vs TRD tracklet
+//  - y reziduals/pulls
+//  - z reziduals/pulls
+//  - phi reziduals
+  TObjArray *arr = BuildMonitorContainerCluster(name); 
+  arr->Expand(5);
+  TH1 *h(NULL); char hname[100], htitle[300];
+
   // tracklet resolution/pull in z direction
-  sprintf(hname, "%s_Z", name);
-  sprintf(htitle, "Z res @ %s;tg(#theta);#Delta z [cm];entries", name);
+  sprintf(hname, "%s_%s_Z", GetNameId(), name);
+  sprintf(htitle, "Z res for \"%s\" @ %s;tg(#theta);#Delta z [cm];entries", GetNameId(), name);
   if(!(h = (TH2I*)gROOT->FindObject(hname))){
     h = new TH2I(hname, htitle, 50, -1., 1., 100, -1.5, 1.5);
   } else h->Reset();
   arr->AddAt(h, 2);
-  sprintf(hname, "%s_Zpull", name);
-  sprintf(htitle, "Z pull @ %s;tg(#theta);#Delta z  / #sigma_{z};entries", name);
+  sprintf(hname, "%s_%s_Zpull", GetNameId(), name);
+  sprintf(htitle, "Z pull for \"%s\" @ %s;tg(#theta);#Delta z  / #sigma_{z};entries", GetNameId(), name);
   if(!(h = (TH2I*)gROOT->FindObject(hname))){
     h = new TH2I(hname, htitle, 50, -1., 1., 100, -5.5, 5.5);
   } else h->Reset();
   arr->AddAt(h, 3);
 
   // tracklet to track phi resolution
-  sprintf(hname, "%s_PHI", name);
-  sprintf(htitle, "#Phi res @ %s;tg(#phi);#Delta #phi [rad];entries", name);
+  sprintf(hname, "%s_%s_PHI", GetNameId(), name);
+  sprintf(htitle, "#Phi res for \"%s\" @ %s;tg(#phi);#Delta #phi [rad];entries", GetNameId(), name);
   if(!(h = (TH2I*)gROOT->FindObject(hname))){
     h = new TH2I(hname, htitle, 21, -.33, .33, 100, -.5, .5);
   } else h->Reset();
@@ -1445,69 +1467,28 @@ TObjArray* AliTRDresolution::BuildMonitorContainerTrack(const char* name)
 //  - theta resolution, tgl pulls
 //  - pt resolution, 1/pt pulls, p resolution
 
-
-  TH1 *h(NULL); char hname[100], htitle[300];
-/*  TObjArray *arr = new TObjArray(11);
-  arr->SetName(name); arr->SetOwner();*/
-
-//   // y resolution
-//   sprintf(hname, "%s_Y", name);
-//   sprintf(htitle, "Y res @ %s;tg(#phi);#Delta y [cm];entries", name);
-//   if(!(h = (TH2I*)gROOT->FindObject(hname))){
-//     h = new TH2I(hname, htitle, 48, -.48, .48, 100, -.2, .2);
-//   } else h->Reset();
-//   arr->AddAt(h, 0);
-//   // y pulls
-//   sprintf(hname, "%s_Ypull", name);
-//   sprintf(htitle, "Y pull @ %s;tg(#phi);#Delta y  / #sigma_{y};entries", name);
-//   if(!(h = (TH2I*)gROOT->FindObject(hname))){
-//     h = new TH2I(hname, htitle, 48, -.48, .48, 100, -4., 4.);
-//   } else h->Reset();
-//   arr->AddAt(h, 1);
-// 
-//   // z resolution
-//   sprintf(hname, "%s_Z", name);
-//   sprintf(htitle, "Z res @ %s;tg(#theta);#Delta z [cm];entries", name);
-//   if(!(h = (TH2I*)gROOT->FindObject(hname))){
-//     h = new TH2I(hname, htitle, 100, -1., 1., 100, -1., 1.);
-//   } else h->Reset();
-//   arr->AddAt(h, 2);
-//   // z pulls
-//   sprintf(hname, "%s_Zpull", name);
-//   sprintf(htitle, "Z pull @ %s;tg(#theta);#Delta z  / #sigma_{z};entries", name);
-//   if(!(h = (TH2I*)gROOT->FindObject(hname))){
-//     h = new TH2I(hname, htitle, 100, -1., 1., 100, -4.5, 4.5);
-//   } else h->Reset();
-//   arr->AddAt(h, 3);
-// 
-//   // phi resolution
-//   sprintf(hname, "%s_PHI", name);
-//   sprintf(htitle, "#Phi res @ %s;tg(#phi);#Delta #phi [rad];entries", name);
-//   if(!(h = (TH2I*)gROOT->FindObject(hname))){
-//     h = new TH2I(hname, htitle, 60, -.3, .3, 100, -5e-3, 5e-3);
-//   } else h->Reset();
-//   arr->AddAt(h, 4);
-
   TObjArray *arr = BuildMonitorContainerTracklet(name); 
   arr->Expand(11);
+  TH1 *h(NULL); char hname[100], htitle[300];
+
   // snp pulls
-  sprintf(hname, "%s_SNPpull", name);
-  sprintf(htitle, "SNP pull @ %s;tg(#phi);#Delta snp  / #sigma_{snp};entries", name);
+  sprintf(hname, "%s_%s_SNPpull", GetNameId(), name);
+  sprintf(htitle, "SNP pull for \"%s\" @ %s;tg(#phi);#Delta snp  / #sigma_{snp};entries", GetNameId(), name);
   if(!(h = (TH2I*)gROOT->FindObject(hname))){
     h = new TH2I(hname, htitle, 60, -.3, .3, 100, -4.5, 4.5);
   } else h->Reset();
   arr->AddAt(h, 5);
 
   // theta resolution
-  sprintf(hname, "%s_THT", name);
-  sprintf(htitle, "#Theta res @ %s;tg(#theta);#Delta #theta [rad];entries", name);
+  sprintf(hname, "%s_%s_THT", GetNameId(), name);
+  sprintf(htitle, "#Theta res for \"%s\" @ %s;tg(#theta);#Delta #theta [rad];entries", GetNameId(), name);
   if(!(h = (TH2I*)gROOT->FindObject(hname))){
     h = new TH2I(hname, htitle, 100, -1., 1., 100, -5e-3, 5e-3);
   } else h->Reset();
   arr->AddAt(h, 6);
   // tgl pulls
-  sprintf(hname, "%s_TGLpull", name);
-  sprintf(htitle, "TGL pull @ %s;tg(#theta);#Delta tgl  / #sigma_{tgl};entries", name);
+  sprintf(hname, "%s_%s_TGLpull", GetNameId(), name);
+  sprintf(htitle, "TGL pull for \"%s\" @ %s;tg(#theta);#Delta tgl  / #sigma_{tgl};entries", GetNameId(), name);
   if(!(h = (TH2I*)gROOT->FindObject(hname))){
     h = new TH2I(hname, htitle, 100, -1., 1., 100, -4.5, 4.5);
   } else h->Reset();
@@ -1523,24 +1504,24 @@ TObjArray* AliTRDresolution::BuildMonitorContainerTrack(const char* name)
   for(Int_t i=0; i<kNdpt+1; i++,DPt+=2.e-3) binsDPt[i]=DPt;
 
   // Pt resolution
-  sprintf(hname, "%s_Pt", name);
-  sprintf(htitle, "P_{t} res @ %s;p_{t} [GeV/c];#Delta p_{t}/p_{t}^{MC};SPECIES", name);
+  sprintf(hname, "%s_%s_Pt", GetNameId(), name);
+  sprintf(htitle, "P_{t} res for \"%s\" @ %s;p_{t} [GeV/c];#Delta p_{t}/p_{t}^{MC};SPECIES", GetNameId(), name);
   if(!(h = (TH3S*)gROOT->FindObject(hname))){
     h = new TH3S(hname, htitle, 
                  kNpt, binsPt, kNdpt, binsDPt, kNspc, binsSpc);
   } else h->Reset();
   arr->AddAt(h, 8);
   // 1/Pt pulls
-  sprintf(hname, "%s_1Pt", name);
-  sprintf(htitle, "1/P_{t} pull @ %s;1/p_{t}^{MC} [c/GeV];#Delta(1/p_{t})/#sigma(1/p_{t});SPECIES", name);
+  sprintf(hname, "%s_%s_1Pt", GetNameId(), name);
+  sprintf(htitle, "1/P_{t} pull for \"%s\" @ %s;1/p_{t}^{MC} [c/GeV];#Delta(1/p_{t})/#sigma(1/p_{t});SPECIES", GetNameId(), name);
   if(!(h = (TH3S*)gROOT->FindObject(hname))){
     h = new TH3S(hname, htitle, 
                  kNpt, 0., 2., 100, -4., 4., kNspc, -5.5, 5.5);
   } else h->Reset();
   arr->AddAt(h, 9);
   // P resolution
-  sprintf(hname, "%s_P", name);
-  sprintf(htitle, "P res @ %s;p [GeV/c];#Delta p/p^{MC};SPECIES", name);
+  sprintf(hname, "%s_%s_P", GetNameId(), name);
+  sprintf(htitle, "P res for \"%s\" @ %s;p [GeV/c];#Delta p/p^{MC};SPECIES", GetNameId(), name);
   if(!(h = (TH3S*)gROOT->FindObject(hname))){
     h = new TH3S(hname, htitle, 
                  kNpt, binsPt, kNdpt, binsDPt, kNspc, binsSpc);
@@ -1585,104 +1566,33 @@ TObjArray* AliTRDresolution::Histos()
   arr->AddAt(h, 0);
 
   // cluster to track residuals/pulls
-  fContainer->AddAt(arr = new TObjArray(fgNhistos[kCluster]), kCluster);
-  arr->SetName("Cl");
-  if(!(h = (TH2I*)gROOT->FindObject("hCl"))){
-    h = new TH2I("hCl", "Cluster Residuals", 21, -.33, .33, 100, -.5, .5);
-    h->GetXaxis()->SetTitle("tg(#phi)");
-    h->GetYaxis()->SetTitle("#Delta y [cm]");
-    h->GetZaxis()->SetTitle("entries");
-  } else h->Reset();
-  arr->AddAt(h, 0);
-  if(!(h = (TH2I*)gROOT->FindObject("hClpull"))){
-    h = new TH2I("hClpull", "Cluster Pulls", 21, -.33, .33, 100, -4.5, 4.5);
-    h->GetXaxis()->SetTitle("tg(#phi)");
-    h->GetYaxis()->SetTitle("#Delta y/#sigma_{y}");
-    h->GetZaxis()->SetTitle("entries");
-  } else h->Reset();
-  arr->AddAt(h, 1);
+  fContainer->AddAt(BuildMonitorContainerCluster("Cl"), kCluster);
 
   // tracklet to TRD track
-  fContainer->AddAt(BuildMonitorContainerTracklet("TrkTRD"), kTrackTRD);
+  fContainer->AddAt(BuildMonitorContainerTracklet("Trk"), kTrackTRD);
   // tracklet to TRDin
-  fContainer->AddAt(BuildMonitorContainerTracklet("TrkTRDin"), kTrackTPC);
+  fContainer->AddAt(BuildMonitorContainerTracklet("TrkIN"), kTrackTPC);
 
 
   // Resolution histos
   if(!HasMCdata()) return fContainer;
 
-  // cluster y resolution [0]
-  fContainer->AddAt(arr = new TObjArray(fgNhistos[kMCcluster]), kMCcluster);
-  arr->SetName("McCl");
-  if(!(h = (TH3S*)gROOT->FindObject("hMcCl"))){
-    h = new TH3S("hMcCl", 
-    "Cluster Resolution;tg(#phi);#Delta y [cm];p_{t} [GeV/c]", 
-    kNphi, binsPhi, kNdy, binsDy, kNpt, binsPt);
-  } else h->Reset();
-  arr->AddAt(h, 0);
-  if(!(h = (TH2I*)gROOT->FindObject("hMcClPull"))){
-    h = new TH2I("hMcClPull", "Cluster Pulls", 48, -.48, .48, 100, -4.5, 4.5);
-    h->GetXaxis()->SetTitle("tg(#phi)");
-    h->GetYaxis()->SetTitle("#Deltay/#sigma_{y}");
-    h->GetZaxis()->SetTitle("p_{t} [GeV/c]");
-  } else h->Reset();
-  arr->AddAt(h, 1);
-
-
-  // TRACKLET RESOLUTION
-  fContainer->AddAt(arr = new TObjArray(fgNhistos[kMCtracklet]), kMCtracklet);
-  arr->SetName("McTrklt");
-  // tracklet y resolution
-  if(!(h = (TH3S*)gROOT->FindObject("hMcTrkltY"))){
-    h = new TH3S("hMcTrkltY", 
-    "Tracklet Y Resolution;tg(#phi);#Delta y [cm];p_{t} [GeV/c]", 
-    kNphi, binsPhi, kNdy, binsDy, kNpt, binsPt);
-  } else h->Reset();
-  arr->AddAt(h, 0);
-  // tracklet y pulls
-  if(!(h = (TH2I*)gROOT->FindObject("hMcTrkltYPull"))){
-    h = new TH2I("hMcTrkltYPull", "Tracklet Pulls (Y)", 48, -.48, .48, 100, -4.5, 4.5);
-    h->GetXaxis()->SetTitle("tg(#phi)");
-    h->GetYaxis()->SetTitle("#Delta y / #sigma_{y}");
-    h->GetZaxis()->SetTitle("entries");
-  } else h->Reset();
-  arr->AddAt(h, 1);
-  // tracklet z resolution
-  if(!(h = (TH2I*)gROOT->FindObject("hMcTrkltZ"))){
-    h = new TH2I("hMcTrkltZ", "Tracklet Resolution (Z)", 100, -1., 1., 100, -1., 1.);
-    h->GetXaxis()->SetTitle("tg(#theta)");
-    h->GetYaxis()->SetTitle("#Delta z [cm]");
-    h->GetZaxis()->SetTitle("entries");
-  } else h->Reset();
-  arr->AddAt(h, 2);
-  // tracklet z pulls
-  if(!(h = (TH2I*)gROOT->FindObject("hMcTrkltZPull"))){
-    h = new TH2I("hMcTrkltZPull", "Tracklet Pulls (Z)", 100, -1., 1., 100, -3.5, 3.5);
-    h->GetXaxis()->SetTitle("tg(#theta)");
-    h->GetYaxis()->SetTitle("#Delta z / #sigma_{z}");
-    h->GetZaxis()->SetTitle("entries");
-  } else h->Reset();
-  arr->AddAt(h, 3);
-  // tracklet phi resolution
-  if(!(h = (TH2I*)gROOT->FindObject("hMcTrkltPhi"))){
-    h = new TH2I("hMcTrkltPhi", "Tracklet Resolution (#Phi)", 48, -.48, .48, 100, -.15, .15);
-    h->GetXaxis()->SetTitle("tg(#phi)");
-    h->GetYaxis()->SetTitle("#Delta #phi [rad]");
-    h->GetZaxis()->SetTitle("entries");
-  } else h->Reset();
-  arr->AddAt(h, 4);
+  // cluster resolution 
+  fContainer->AddAt(BuildMonitorContainerCluster("MCcl"),  kMCcluster);
 
+  // tracklet resolution
+  fContainer->AddAt(BuildMonitorContainerTracklet("MCtracklet"), kMCtracklet);
 
-  // KALMAN TRACK RESOLUTION
+  // track resolution
   fContainer->AddAt(arr = new TObjArray(6/*fgNhistos[kMCtrackTRD]*/), kMCtrackTRD);
-  arr->SetName("McTrkTRD");
-  for(Int_t il(0); il<AliTRDgeometry::kNlayer; il++) arr->AddAt(BuildMonitorContainerTrack(Form("McTrkTRD_Ly%d", il)), il);
+  arr->SetName("MCtrk");
+  for(Int_t il(0); il<AliTRDgeometry::kNlayer; il++) arr->AddAt(BuildMonitorContainerTrack(Form("MCtrk_Ly%d", il)), il);
 
   // TRDin TRACK RESOLUTION
-  fContainer->AddAt(BuildMonitorContainerTrack("McTrkTRDin"), kMCtrackTPC);
+  fContainer->AddAt(BuildMonitorContainerTrack("MCtrkIN"), kMCtrackTPC);
 
   // TRDout TRACK RESOLUTION
-  fContainer->AddAt(BuildMonitorContainerTrack("McTrkTRDout"), kMCtrackTOF);
+  fContainer->AddAt(BuildMonitorContainerTrack("MCtrkOUT"), kMCtrackTOF);
 
   return fContainer;
 }
index f5177cd..44b9fd2 100644 (file)
@@ -91,8 +91,9 @@ private:
   AliTRDresolution& operator=(const AliTRDresolution&);
 
   void    AdjustF1(TH1 *h, TF1 *f);
-  TObjArray*  BuildMonitorContainerTrack(const char* name);
+  TObjArray*  BuildMonitorContainerCluster(const char* name);
   TObjArray*  BuildMonitorContainerTracklet(const char* name);
+  TObjArray*  BuildMonitorContainerTrack(const char* name);
   void    GetLandauMpvFwhm(TF1 * const f, Float_t &mpv, Float_t &xm, Float_t &xM);
   Bool_t  Process(TH2* const h2, TF1 *f, Float_t k, TGraphErrors **g);
   Bool_t  Process2D(ETRDresolutionPlot ip, Int_t idx=-1, TF1 *f=0x0,  Float_t scale=1., Int_t gidx=-1);
index 2b3b6e0..accf290 100644 (file)
@@ -12,18 +12,18 @@ void AddTRDcheckDET(AliAnalysisManager *mgr, Char_t *trd, AliAnalysisDataContain
 {
   Int_t map = ParseOptions(trd);
   if(!(TSTBIT(map, kCheckDET))) return;
-  printf("AddTRDcheckDET <- [0]=\"%s\" [1]=\"%s\"\n", ci[0]->GetName(), ci[1]->GetName());
+  printf("AddTRDcheckDET <- [0]=\"%s\" [1]=\"%s\" [2]=\"%s\" [3]=\"%s\"\n", ci[0]->GetName(), ci[1]->GetName(), ci[2]->GetName(), ci[3]->GetName());
 
+  //AliLog::SetClassDebugLevel("AliTRDcheckDET", 5);
   AliTRDcheckDET *task(NULL);
   mgr->AddTask(task = new AliTRDcheckDET((char*)"checkDET"));
-  //AliLog::SetClassDebugLevel("AliTRDcheckDET", 5);
   task->SetDebugLevel(0);
   task->SetMCdata(mgr->GetMCtruthEventHandler());
   
   // Create containers for input/output
   mgr->ConnectInput ( task, 0, mgr->GetCommonInputContainer());
-  mgr->ConnectInput ( task, 1, ci[0]);
-  mgr->ConnectInput ( task, 2, ci[1]);
+  mgr->ConnectInput ( task, 1, ci[1]);
+  mgr->ConnectInput ( task, 2, ci[0]);
   mgr->ConnectOutput( task, 1, mgr->CreateContainer(task->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, "TRD.Performance.root"));
   
 
@@ -47,6 +47,6 @@ void AddTRDcheckDET(AliAnalysisManager *mgr, Char_t *trd, AliAnalysisDataContain
 
   // Create containers for input/output
   mgr->ConnectInput(ctask,  0, mgr->GetCommonInputContainer());
-  mgr->ConnectInput(ctask,  1, ci[0]);
+  mgr->ConnectInput(ctask,  1, ci[1]);
   mgr->ConnectOutput(ctask, 1, mgr->CreateContainer(ctask->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("TRD.Task%s.root", ctask->GetName())));
 }
index 5fb7bca..1aa21c8 100644 (file)
@@ -7,11 +7,11 @@
 
 void AddTRDcheckESD(AliAnalysisManager *mgr)
 {
+  //AliLog::SetClassDebugLevel("AliTRDcheckESD", 5);
   AliTRDcheckESD *checkESD = new AliTRDcheckESD((char*)"checkESD");
   mgr->AddTask(checkESD);
   checkESD->SetMC(mgr->GetMCtruthEventHandler());
   checkESD->SetDebugLevel(0);
-  //AliLog::SetClassDebugLevel("AliTRDcheckESD", 5);
 
   mgr->ConnectInput(checkESD,  0, mgr->GetCommonInputContainer());  
   mgr->ConnectOutput(checkESD, 1, mgr->CreateContainer(checkESD->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, "TRD.Performance.root"));
index f174d3c..6b8f2b6 100644 (file)
@@ -12,7 +12,7 @@ void AddTRDefficiency(AliAnalysisManager *mgr, Char_t *trd, AliAnalysisDataConta
 {
   Int_t map = ParseOptions(trd);
   if(!(TSTBIT(map, kEfficiency))) return;
-  printf("AddTRDefficiency <- [0]=\"%s\"\n", ci[0]->GetName());
+  printf("AddTRDefficiency <- [0]=\"%s\" [1]=\"%s\" [2]=\"%s\"\n", ci[0]->GetName(), ci[1]->GetName(), ci[2]->GetName());
 
   AliTRDrecoTask *eff(NULL);
   mgr->AddTask(eff = new AliTRDefficiency((char*)"TRDefficiency"));
index 374ca64..7cbcb42 100644 (file)
@@ -13,10 +13,10 @@ void AddTRDinfoGen(AliAnalysisManager *mgr, Char_t *trd, AliAnalysisDataContaine
   Int_t map = ParseOptions(trd);
   if(!(TSTBIT(map, kInfoGen))) return;
   
+  //AliLog::SetClassDebugLevel("AliTRDinfoGen", 2);
   AliTRDinfoGen *info(NULL);
   mgr->AddTask(info = new AliTRDinfoGen((char*)"genInfo"));
   info->SetDebugLevel(0);
-  //AliLog::SetClassDebugLevel("AliTRDinfoGen", 5);
   info->SetMCdata(mgr->GetMCtruthEventHandler());
 
   // settings for collisions
index a4fd918..38e026d 100644 (file)
 #endif
 
 #include "PWG1/TRD/macros/helper.C"
-void AddTRDresolution(AliAnalysisManager *mgr, Char_t *trd, AliAnalysisDataContainer **ci, const char *suffix="")
+void AddTRDresolution(AliAnalysisManager *mgr, Char_t *trd, AliAnalysisDataContainer **ci)
 {
   Int_t map = ParseOptions(trd);
   if(!TSTBIT(map, kResolution)) return;
-  printf("AddTRDresolution(\"%s\") <- [0]=\"%s\"\n", suffix, ci[0]->GetName());
+  printf("AddTRDresolution <- [0]=\"%s\" [1]=\"%s\" [2]=\"%s\"\n", ci[0]->GetName(), ci[1]->GetName(), ci[2]->GetName());
 
+  // AliLog::SetClassDebugLevel("AliTRDrecoTask", 2);
+  // AliLog::SetClassDebugLevel("AliTRDresolution", 2);
   AliTRDresolution *res(NULL);
-  mgr->AddTask(res = new AliTRDresolution(Form("TRDresolution%s", suffix)));
-  res->SetMCdata(mgr->GetMCtruthEventHandler());
-  res->SetPostProcess(kFALSE);
-  res->SetDebugLevel(0);
-  //AliLog::SetClassDebugLevel("AliTRDresolution", 5);  
-  mgr->ConnectInput(res, 0, mgr->GetCommonInputContainer());  
-  mgr->ConnectInput(res, 1, ci[0]);
-  mgr->ConnectOutput(res,1, mgr->CreateContainer(res->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, "TRD.Performance.root"));
 
-  // Create output containers for calibration tasks
-  AliAnalysisDataContainer *co(NULL);
-  co = mgr->CreateContainer(Form("%sCl2Trk%s", res->GetName(), suffix), TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
-  mgr->ConnectOutput(res, AliTRDresolution::kClToTrk, co);
-  co = mgr->CreateContainer(Form("%sTrklt2Trk%s", res->GetName(), suffix), TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
-  mgr->ConnectOutput(res, AliTRDresolution::kTrkltToTrk, co);
-  co = mgr->CreateContainer(Form("%sCl2MC%s", res->GetName(), suffix), TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
-  mgr->ConnectOutput(res, AliTRDresolution::kClToMC, co);
-  co = mgr->CreateContainer(Form("%sTrklt2MC%s", res->GetName(), suffix), TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
-  mgr->ConnectOutput(res, AliTRDresolution::kTrkltToMC, co);
-
-  TObjArray *coa = mgr->GetContainers();
-  // Cluster Error Parameterization
-  if(TSTBIT(map, kClErrParam)){
-    AliTRDclusterResolution *taskCl(NULL);
-    mgr->AddTask(taskCl = new AliTRDclusterResolution((char*)"ClErrCalibESD"));
-    taskCl->SetExB();
-    taskCl->SetDebugLevel(0);
-    //AliLog::SetClassDebugLevel("AliTRDclusterResolution", 5);  
-
-    mgr->ConnectInput(taskCl,  0, mgr->GetCommonInputContainer()); 
-    mgr->ConnectInput(taskCl,  1, (AliAnalysisDataContainer*)coa->FindObject(Form("%sCl2Trk", res->GetName())));
-    mgr->ConnectOutput(taskCl, 1, mgr->CreateContainer(taskCl->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, "TRD.CalibClErrParam.root"));
-
-    mgr->AddTask(taskCl = new AliTRDclusterResolution((char*)"ClErrCalibMC"));
-    taskCl->SetExB();
-    taskCl->SetDebugLevel(0);
-    mgr->ConnectInput(taskCl,  0, mgr->GetCommonInputContainer());  
-    mgr->ConnectInput(taskCl,  1, (AliAnalysisDataContainer*)coa->FindObject(Form("%sCl2MC", res->GetName())));
-    mgr->ConnectOutput(taskCl, 1, mgr->CreateContainer(taskCl->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, "TRD.CalibClErrParam.root"));
+  const Char_t *suffix[]={"", "SA", "K"};
+  for(Int_t itq=0; itq<1/*3*/; itq++){
+    mgr->AddTask(res = new AliTRDresolution(Form("TRDresolution%s", suffix[itq])));
+    res->SetMCdata(mgr->GetMCtruthEventHandler());
+    res->SetPostProcess(kFALSE);
+    res->SetDebugLevel(0);
+    res->SetNameId(suffix[itq]);
+    mgr->ConnectInput(res, 0, mgr->GetCommonInputContainer());  
+    mgr->ConnectInput(res, 1, ci[itq]);
+    mgr->ConnectOutput(res,1, mgr->CreateContainer(res->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, "TRD.Performance.root"));
+  
+    // Create output containers for calibration tasks
+    AliAnalysisDataContainer *co(NULL);
+    co = mgr->CreateContainer(Form("%sCl2Trk%s", res->GetName(), suffix), TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
+    mgr->ConnectOutput(res, AliTRDresolution::kClToTrk, co);
+    co = mgr->CreateContainer(Form("%sTrklt2Trk%s", res->GetName(), suffix), TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
+    mgr->ConnectOutput(res, AliTRDresolution::kTrkltToTrk, co);
+    co = mgr->CreateContainer(Form("%sCl2MC%s", res->GetName(), suffix), TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
+    mgr->ConnectOutput(res, AliTRDresolution::kClToMC, co);
+    co = mgr->CreateContainer(Form("%sTrklt2MC%s", res->GetName(), suffix), TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
+    mgr->ConnectOutput(res, AliTRDresolution::kTrkltToMC, co);
+    
+    TObjArray *coa = mgr->GetContainers();
+    // Cluster Error Parameterization
+    if(TSTBIT(map, kClErrParam)){
+      AliTRDclusterResolution *taskCl(NULL);
+      mgr->AddTask(taskCl = new AliTRDclusterResolution((char*)"ClErrCalibESD"));
+      taskCl->SetExB();
+      taskCl->SetDebugLevel(0);
+      //AliLog::SetClassDebugLevel("AliTRDclusterResolution", 5);  
+  
+      mgr->ConnectInput(taskCl,  0, mgr->GetCommonInputContainer()); 
+      mgr->ConnectInput(taskCl,  1, (AliAnalysisDataContainer*)coa->FindObject(Form("%sCl2Trk", res->GetName())));
+      mgr->ConnectOutput(taskCl, 1, mgr->CreateContainer(taskCl->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, "TRD.CalibClErrParam.root"));
+  
+      mgr->AddTask(taskCl = new AliTRDclusterResolution((char*)"ClErrCalibMC"));
+      taskCl->SetExB();
+      taskCl->SetDebugLevel(0);
+      mgr->ConnectInput(taskCl,  0, mgr->GetCommonInputContainer());  
+      mgr->ConnectInput(taskCl,  1, (AliAnalysisDataContainer*)coa->FindObject(Form("%sCl2MC", res->GetName())));
+      mgr->ConnectOutput(taskCl, 1, mgr->CreateContainer(taskCl->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, "TRD.CalibClErrParam.root"));
+    }
   }
 
   // TRD alignment
   if(TSTBIT(map, kAlignment)){
+    TObjArray *coa = mgr->GetContainers();
     AliTRDalignmentTask *taskAlign(NULL);
     mgr->AddTask(taskAlign = new AliTRDalignmentTask((char*)"TRDalignment"));
     taskAlign->SetDebugLevel(0);
     //AliLog::SetClassDebugLevel("AliTRDalignmentTask", 5);  
     mgr->ConnectInput(taskAlign,  0, mgr->GetCommonInputContainer());  
-    mgr->ConnectInput(taskAlign,  1, (AliAnalysisDataContainer*)coa->FindObject(Form("%sCl2Trk", res->GetName())));  
+    mgr->ConnectInput(taskAlign,  1, (AliAnalysisDataContainer*)coa->FindObject("TRDresolutionCl2Trk"));  
     mgr->ConnectOutput(taskAlign, 1, mgr->CreateContainer(Form("h%s", taskAlign->GetName()), TObjArray::Class(), AliAnalysisManager::kExchangeContainer));
     mgr->ConnectOutput(taskAlign, 2, mgr->CreateContainer(taskAlign->GetName(), TTree::Class(), AliAnalysisManager::kOutputContainer, Form("TRD.Calib%s.root", taskAlign->GetName())));
   }
index 6206d46..1510e55 100644 (file)
@@ -118,6 +118,8 @@ void makeResults(Char_t *opt = "ALL", const Char_t *files=0x0, Bool_t kGRID=kFAL
 //______________________________________________________
 void processTRD(TNamed *otask)
 {
+  printf("processTRD %s %s\n", otask->GetName(), otask->GetTitle());
+
   AliTRDrecoTask *task = dynamic_cast<AliTRDrecoTask*>(otask);
   task->SetDebugLevel(0);
   task->SetMCdata(mc);
@@ -145,13 +147,15 @@ void processTRD(TNamed *otask)
 //______________________________________________________
 void processESD(TNamed *otask)
 {
+  printf("processESD %s %s\n", otask->GetName(), otask->GetTitle());
+
   AliTRDcheckESD *esd = dynamic_cast<AliTRDcheckESD*>(otask);
   if(!esd){
-    Info("makeResults.C", "Processing of task AliTRDcheckESD failed.");
+    Info("makeResults.C", Form("Processing of task %s failed.", otask->GetName()));
     delete otask;
     return;
   }
-
+  printf("esd[%p]\n", (void*)esd);
   if(!esd->Load(Form("%s/TRD.Performance.root", gSystem->ExpandPathName("$PWD")))){
     Error("makeResults.C", Form("Load data container for task %s failed.", esd->GetName()));
     delete esd;
index e0fc2ad..39e588d 100644 (file)
@@ -83,7 +83,7 @@ Bool_t AddTrainPerformanceTRD(Char_t *trd="ALL")
 
   // TRD data containers
   AliAnalysisDataContainer *ci[kNOutSlots];
-  AliAnalysisDataContainer *ce[2];
+  AliAnalysisDataContainer *ce[5];
 
   // initialize TRD settings
   AliTRDcalibDB *cal = AliTRDcalibDB::Instance();
@@ -101,31 +101,25 @@ Bool_t AddTrainPerformanceTRD(Char_t *trd="ALL")
       AddTRDinfoGen(mgr, trd, NULL, ci); break;
     case kCheckDET:
       // map slots
-      ce[1]=ci[kEventInfo];
-      ce[0]=ci[kTracksBarrel];
+      ce[0]=ci[kEventInfo];
+      ce[1]=ci[kTracksBarrel];
+      ce[2]=ci[kTracksSA];
+      ce[3]=ci[kTracksKink];
       AddTRDcheckDET(mgr, trd, ce);
-//       ce[0]=ci[kTracksSA];
-//       AddTRDcheckDET(mgr, trd, ce);
-//       ce[0]=ci[kTracksKink];
-//       AddTRDcheckDET(mgr, trd, ce);
        break;
     case kEfficiency:
       // map slots
       ce[0]=ci[kTracksBarrel];
+      ce[1]=ci[kTracksSA];
+      ce[2]=ci[kTracksKink];
       AddTRDefficiency(mgr, trd, ce);
-//       ce[0]=ci[kTracksSA];
-//       AddTRDefficiency(mgr, trd, ce);
-//       ce[0]=ci[kTracksKink];
-//       AddTRDefficiency(mgr, trd, ce);
       break;
     case kResolution:
       // map slots
       ce[0]=ci[kTracksBarrel];
-      AddTRDresolution(mgr, trd, ce);
-//       ce[0]=ci[kTracksSA];
-//       AddTRDresolution(mgr, trd, ce, "SA");
-//       ce[0]=ci[kTracksKink];
-//       AddTRDresolution(mgr, trd, ce, "K"); 
+      ce[1]=ci[kTracksSA];
+      ce[2]=ci[kTracksKink];
+      AddTRDresolution(mgr, trd, ce); 
       break;
     case kCheckPID:
       // map slots