From 3d2a3dff073492190e5aade95b492f003657682a Mon Sep 17 00:00:00 2001 From: abercuci Date: Wed, 10 Mar 2010 09:29:00 +0000 Subject: [PATCH] Move track performance task selection to AddTask macros Easy performance plots Building Update info gen for forking performance tasks --- PWG1/TRD/AliTRDefficiencyMC.cxx | 2 +- PWG1/TRD/AliTRDinfoGen.cxx | 64 ++++--- PWG1/TRD/AliTRDinfoGen.h | 9 +- PWG1/TRD/AliTRDrecoTask.cxx | 5 +- PWG1/TRD/AliTRDrecoTask.h | 4 +- PWG1/TRD/AliTRDresolution.cxx | 240 +++++++++------------------ PWG1/TRD/AliTRDresolution.h | 3 +- PWG1/TRD/macros/AddTRDcheckDET.C | 10 +- PWG1/TRD/macros/AddTRDcheckESD.C | 2 +- PWG1/TRD/macros/AddTRDefficiency.C | 2 +- PWG1/TRD/macros/AddTRDinfoGen.C | 2 +- PWG1/TRD/macros/AddTRDresolution.C | 89 +++++----- PWG1/TRD/macros/makeResults.C | 8 +- PWG1/macros/AddTrainPerformanceTRD.C | 26 ++- 14 files changed, 206 insertions(+), 260 deletions(-) diff --git a/PWG1/TRD/AliTRDefficiencyMC.cxx b/PWG1/TRD/AliTRDefficiencyMC.cxx index a251ccc26e8..86208154380 100644 --- a/PWG1/TRD/AliTRDefficiencyMC.cxx +++ b/PWG1/TRD/AliTRDefficiencyMC.cxx @@ -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){ diff --git a/PWG1/TRD/AliTRDinfoGen.cxx b/PWG1/TRD/AliTRDinfoGen.cxx index 30550913013..df80cf36310 100644 --- a/PWG1/TRD/AliTRDinfoGen.cxx +++ b/PWG1/TRD/AliTRDinfoGen.cxx @@ -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(jrefGetTrackReference(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; iv0GetNumberOfV0s(); iv0++){ @@ -434,10 +436,10 @@ void AliTRDinfoGen::UserExec(Option_t *){ Int_t nRefsTRD = 0; new(fTrackInfo) AliTRDtrackInfo(); fTrackInfo->SetPDG(fPdg); - while(irefGetTrackReference(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); diff --git a/PWG1/TRD/AliTRDinfoGen.h b/PWG1/TRD/AliTRDinfoGen.h index 0dec7fe6591..9f12d4e8c07 100644 --- a/PWG1/TRD/AliTRDinfoGen.h +++ b/PWG1/TRD/AliTRDinfoGen.h @@ -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 diff --git a/PWG1/TRD/AliTRDrecoTask.cxx b/PWG1/TRD/AliTRDrecoTask.cxx index b192bf0c4ec..f1f8788bb66 100644 --- a/PWG1/TRD/AliTRDrecoTask.cxx +++ b/PWG1/TRD/AliTRDrecoTask.cxx @@ -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); diff --git a/PWG1/TRD/AliTRDrecoTask.h b/PWG1/TRD/AliTRDrecoTask.h index 00eb419e2d7..1535d405902 100644 --- a/PWG1/TRD/AliTRDrecoTask.h +++ b/PWG1/TRD/AliTRDrecoTask.h @@ -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 diff --git a/PWG1/TRD/AliTRDresolution.cxx b/PWG1/TRD/AliTRDresolution.cxx index 1e66a94be0b..7db9b3c18a4 100644 --- a/PWG1/TRD/AliTRDresolution.cxx +++ b/PWG1/TRD/AliTRDresolution.cxx @@ -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; ilyGetTracklet(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; iFindObject(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; iFindObject(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); ilAddAt(BuildMonitorContainerTrack(Form("McTrkTRD_Ly%d", il)), il); + arr->SetName("MCtrk"); + for(Int_t il(0); ilAddAt(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; } diff --git a/PWG1/TRD/AliTRDresolution.h b/PWG1/TRD/AliTRDresolution.h index f5177cd3d6a..44b9fd2ebd2 100644 --- a/PWG1/TRD/AliTRDresolution.h +++ b/PWG1/TRD/AliTRDresolution.h @@ -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); diff --git a/PWG1/TRD/macros/AddTRDcheckDET.C b/PWG1/TRD/macros/AddTRDcheckDET.C index 2b3b6e05c48..accf2909e4a 100644 --- a/PWG1/TRD/macros/AddTRDcheckDET.C +++ b/PWG1/TRD/macros/AddTRDcheckDET.C @@ -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()))); } diff --git a/PWG1/TRD/macros/AddTRDcheckESD.C b/PWG1/TRD/macros/AddTRDcheckESD.C index 5fb7bca230c..1aa21c88f24 100644 --- a/PWG1/TRD/macros/AddTRDcheckESD.C +++ b/PWG1/TRD/macros/AddTRDcheckESD.C @@ -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")); diff --git a/PWG1/TRD/macros/AddTRDefficiency.C b/PWG1/TRD/macros/AddTRDefficiency.C index f174d3c2289..6b8f2b6a1cf 100644 --- a/PWG1/TRD/macros/AddTRDefficiency.C +++ b/PWG1/TRD/macros/AddTRDefficiency.C @@ -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")); diff --git a/PWG1/TRD/macros/AddTRDinfoGen.C b/PWG1/TRD/macros/AddTRDinfoGen.C index 374ca6418a9..7cbcb424e5a 100644 --- a/PWG1/TRD/macros/AddTRDinfoGen.C +++ b/PWG1/TRD/macros/AddTRDinfoGen.C @@ -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 diff --git a/PWG1/TRD/macros/AddTRDresolution.C b/PWG1/TRD/macros/AddTRDresolution.C index a4fd9185ca3..38e026df706 100644 --- a/PWG1/TRD/macros/AddTRDresolution.C +++ b/PWG1/TRD/macros/AddTRDresolution.C @@ -10,62 +10,69 @@ #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()))); } diff --git a/PWG1/TRD/macros/makeResults.C b/PWG1/TRD/macros/makeResults.C index 6206d4625fe..1510e559f42 100644 --- a/PWG1/TRD/macros/makeResults.C +++ b/PWG1/TRD/macros/makeResults.C @@ -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(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(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; diff --git a/PWG1/macros/AddTrainPerformanceTRD.C b/PWG1/macros/AddTrainPerformanceTRD.C index e0fc2ad2665..39e588d4d52 100644 --- a/PWG1/macros/AddTrainPerformanceTRD.C +++ b/PWG1/macros/AddTrainPerformanceTRD.C @@ -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 -- 2.39.3