From 59835ad9b9f0db164eb57b839d6622d1094a30ee Mon Sep 17 00:00:00 2001 From: morsch Date: Tue, 15 Dec 2009 13:47:12 +0000 Subject: [PATCH] First working version --- PWG1/PilotTrain/AddSDDPoints.C | 49 ++++++++--------- PWG1/PilotTrain/AliAnalysisTaskSDDRP.cxx | 68 +++++++++++++----------- PWG1/PilotTrain/AliAnalysisTaskSDDRP.h | 15 +++--- PWG1/PilotTrain/runPilot.C | 27 +++++----- 4 files changed, 84 insertions(+), 75 deletions(-) diff --git a/PWG1/PilotTrain/AddSDDPoints.C b/PWG1/PilotTrain/AddSDDPoints.C index 28591511064..f9823d6e05a 100644 --- a/PWG1/PilotTrain/AddSDDPoints.C +++ b/PWG1/PilotTrain/AddSDDPoints.C @@ -1,28 +1,29 @@ - -void AddSDDPoints(Int_t run){ - gROOT->LoadMacro("AliAnalysisTaskSDDRP.cxx+g"); - AliAnalysisTaskSDDRP *task= new AliAnalysisTaskSDDRP(); - task->SetGeometryFile("geometry.root"); - task->SetRunNumber(run); - mgr->AddTask(task); - mgr->SetDebugLevel(2); - - - AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer(); - AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("coutputRP",TList::Class(),AliAnalysisManager::kOutputContainer,"/home/prino/alice/test/SDDPoints.root"); - - - - mgr->ConnectInput(task,0,cinput1); - mgr->ConnectOutput(task,0,coutput1); - - - if (mgr->InitAnalysis()) { - mgr->PrintStatus(); - mgr->StartAnalysis("local", esdChain); - } - delete mgr; +AliAnalysisTaskSE* AddSDDPoints(Int_t run) { + gROOT->LoadMacro("AliAnalysisTaskSDDRP.cxx++g"); + + AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); + if (!mgr) { + Error("AddTaskESDFilter", "No analysis manager to connect to."); + return NULL; + } + + AliAnalysisTaskSDDRP *task= new AliAnalysisTaskSDDRP(); + task->SetRunNumber(run); + mgr->AddTask(task); + mgr->SetDebugLevel(2); + + + AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer(); + AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("coutputRP",TList::Class(),AliAnalysisManager::kOutputContainer,"SDD.Performance.root"); + + + + mgr->ConnectInput(task, 0, cinput1); + mgr->ConnectOutput(task, 1, coutput1); + + return task; + } diff --git a/PWG1/PilotTrain/AliAnalysisTaskSDDRP.cxx b/PWG1/PilotTrain/AliAnalysisTaskSDDRP.cxx index 0b6a9da64a0..a5a88c0bdd7 100644 --- a/PWG1/PilotTrain/AliAnalysisTaskSDDRP.cxx +++ b/PWG1/PilotTrain/AliAnalysisTaskSDDRP.cxx @@ -21,7 +21,7 @@ ClassImp(AliAnalysisTaskSDDRP) //______________________________________________________________________________ -AliAnalysisTaskSDDRP::AliAnalysisTaskSDDRP() : AliAnalysisTask("SDD RecPoints",""), +AliAnalysisTaskSDDRP::AliAnalysisTaskSDDRP() : AliAnalysisTaskSE("SDD RecPoints"), fOutput(0), fHistNEvents(0), fRecPMod(0), @@ -33,6 +33,8 @@ AliAnalysisTaskSDDRP::AliAnalysisTaskSDDRP() : AliAnalysisTask("SDD RecPoints"," fTrackPLadLay4(0), fGoodAnLadLay3(0), fGoodAnLadLay4(0), + fDriftTimeRP(0), + fDriftTimeTP(0), fESD(0), fESDfriend(0), fResp(0), @@ -42,8 +44,7 @@ AliAnalysisTaskSDDRP::AliAnalysisTaskSDDRP() : AliAnalysisTask("SDD RecPoints"," fOnlyCINT1BTrig(0) { // - DefineInput(0, TChain::Class()); - DefineOutput(0, TList::Class()); + DefineOutput(1, TList::Class()); } @@ -56,29 +57,15 @@ AliAnalysisTaskSDDRP::~AliAnalysisTaskSDDRP(){ } } -//___________________________________________________________________________ -void AliAnalysisTaskSDDRP::ConnectInputData(Option_t *) { - // - TTree* tree = dynamic_cast (GetInputData(0)); - if(!tree) { - printf("ERROR: Could not read chain from input slot 0\n"); - }else{ - tree->SetBranchStatus("ESDfriend*", 1); - tree->SetBranchAddress("ESDfriend.",&fESDfriend); - AliESDInputHandlerRP *hand = dynamic_cast (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()); - fESD=hand->GetEvent(); - } - return; -} + //___________________________________________________________________________ -void AliAnalysisTaskSDDRP::CreateOutputObjects() { - // - AliGeomManager::LoadGeometry(fGeomFile.Data()); +void AliAnalysisTaskSDDRP::UserCreateOutputObjects() { + AliCDBManager* man = AliCDBManager::Instance(); man->SetDefaultStorage("raw://"); man->SetRun(fRunNumber); - AliGeomManager::ApplyAlignObjsFromCDB("ITS"); + AliCDBEntry* eR=(AliCDBEntry*)man->Get("ITS/Calib/RespSDD"); fResp=(AliITSresponseSDD*)eR->GetObject(); @@ -165,6 +152,16 @@ void AliAnalysisTaskSDDRP::CreateOutputObjects() { fGoodAnLadLay4->SetMinimum(0); fOutput->Add(fGoodAnLadLay4); + fDriftTimeRP=new TH1F("hDrTimRP","Drift Time from Rec Points (ns)",100,0.,6400.); + fDriftTimeRP->Sumw2(); + fDriftTimeRP->SetMinimum(0.); + fOutput->Add(fDriftTimeRP); + + fDriftTimeTP=new TH1F("hDrTimTP","Drift Time from Track Points (ns)",100,0.,6400.); + fDriftTimeTP->Sumw2(); + fDriftTimeTP->SetMinimum(0.); + fOutput->Add(fDriftTimeTP); + for(Int_t it=0; it<8; it++){ fSignalTime[it]=new TH1F(Form("hSigTimeInt%d",it),Form("hSigTimeInt%d",it),100,0.,300.); fSignalTime[it]->Sumw2(); @@ -173,17 +170,25 @@ void AliAnalysisTaskSDDRP::CreateOutputObjects() { } } //______________________________________________________________________________ -void AliAnalysisTaskSDDRP::Exec(Option_t *) +void AliAnalysisTaskSDDRP::UserExec(Option_t *) { + // + fESD = (AliESDEvent*) (InputEvent()); + if(!fESD) { printf("AliAnalysisTaskSDDRP::Exec(): bad ESD\n"); return; } + + fESDfriend = static_cast(fESD->FindListObject("AliESDfriend")); + + + if(!fESDfriend) { printf("AliAnalysisTaskSDDRP::Exec(): bad ESDfriend\n"); return; } - PostData(0,fOutput); + PostData(1, fOutput); fESD->SetESDfriend(fESDfriend); fHistNEvents->Fill(0); if(fOnlyCINT1BTrig){ @@ -213,6 +218,7 @@ void AliAnalysisTaskSDDRP::Exec(Option_t *) AliITSgeomTGeo::GetModuleId(modId,lay,lad,det); if(!CheckModule(lay,lad,det)) continue; fTrackPMod->Fill(modId); + fDriftTimeTP->Fill(point.GetDriftTime()); Float_t dtime=point.GetDriftTime()-fResp->GetTimeZero(modId); Int_t theBin=int(dtime/6500.*8.); if(layerId==3){ @@ -240,7 +246,10 @@ void AliAnalysisTaskSDDRP::Exec(Option_t *) fRecPMod->Fill(modId,nrecp); if(lay==3) fRecPLadLay3->Fill(lad-1,nrecp); if(lay==4) fRecPLadLay4->Fill(lad-1,nrecp); - + for(Int_t irec=0;irecAt(irec); + fDriftTimeRP->Fill(recp->GetDriftTime()); + } } ITSrec->Delete(); delete ITSrec; @@ -257,8 +266,7 @@ Bool_t AliAnalysisTaskSDDRP::CheckModule(Int_t lay, Int_t lad, Int_t det) const{ if(lad==3 && det==7) return kFALSE; // 1500 V if(lad==4 && det==1) return kFALSE; // 0 V if(lad==4 && det==2) return kFALSE; // 1500 V - if(lad==7 && det==3) return kFALSE; // noisy - if(lad==7 && det==5) return kFALSE; // 0 MV + noisy + if(lad==7 && det==5) return kFALSE; // 0 MV if(lad==9 && det==3) return kFALSE; // 1500 V if(lad==9 && det==4) return kFALSE; // 0 V if(lad==9 && det==5) return kFALSE; // 1500 V @@ -274,9 +282,6 @@ Bool_t AliAnalysisTaskSDDRP::CheckModule(Int_t lay, Int_t lad, Int_t det) const{ if(lay==3){ if(lad==4 && det==4) return kFALSE; // 1500 V if(lad==3) return kFALSE; // swapped in geometry - if(lad==5 && det==1) return kFALSE; // noisy - if(lad==5 && det==2) return kFALSE; // noisy - if(lad==6 && det==1) return kFALSE; // noisy } return kTRUE; } @@ -285,7 +290,7 @@ Bool_t AliAnalysisTaskSDDRP::CheckModule(Int_t lay, Int_t lad, Int_t det) const{ void AliAnalysisTaskSDDRP::Terminate(Option_t */*option*/) { // Terminate analysis - fOutput = dynamic_cast (GetOutputData(0)); + fOutput = dynamic_cast (GetOutputData(1)); if (!fOutput) { printf("ERROR: fOutput not available\n"); return; @@ -302,6 +307,9 @@ void AliAnalysisTaskSDDRP::Terminate(Option_t */*option*/) fGoodAnLadLay3= dynamic_cast(fOutput->FindObject("hGALad3")); fGoodAnLadLay4= dynamic_cast(fOutput->FindObject("hGALad4")); + fDriftTimeRP= dynamic_cast(fOutput->FindObject("hDrTimRP")); + fDriftTimeTP= dynamic_cast(fOutput->FindObject("hDrTimTP")); + for(Int_t it=0; it<8; it++){ fSignalTime[it]= dynamic_cast(fOutput->FindObject(Form("hSigTimeInt%d",it))); } diff --git a/PWG1/PilotTrain/AliAnalysisTaskSDDRP.h b/PWG1/PilotTrain/AliAnalysisTaskSDDRP.h index 5e43d37021f..215f73f727e 100644 --- a/PWG1/PilotTrain/AliAnalysisTaskSDDRP.h +++ b/PWG1/PilotTrain/AliAnalysisTaskSDDRP.h @@ -9,22 +9,18 @@ class AliESDEvent; class AliESDfriend; class AliITSresponseSDD; -#include "AliAnalysisTask.h" +#include "AliAnalysisTaskSE.h" -class AliAnalysisTaskSDDRP : public AliAnalysisTask { +class AliAnalysisTaskSDDRP : public AliAnalysisTaskSE { public: AliAnalysisTaskSDDRP(); virtual ~AliAnalysisTaskSDDRP(); - virtual void ConnectInputData(Option_t *); - virtual void Exec(Option_t *option); - virtual void CreateOutputObjects(); + virtual void UserExec(Option_t *option); + virtual void UserCreateOutputObjects(); virtual void Terminate(Option_t *option); - void SetGeometryFile(Char_t* geo){ - fGeomFile=geo; - } void SetRunNumber(Int_t nrun){ fRunNumber=nrun; } @@ -55,11 +51,12 @@ class AliAnalysisTaskSDDRP : public AliAnalysisTask { TH1F* fTrackPLadLay4; //! histo with ladder occupancy on layer4 (TrP) TH1F* fGoodAnLadLay3; //! histo good anodes per ladder on layer3 TH1F* fGoodAnLadLay4; //! histo good anodes per ladder on layer4 + TH1F* fDriftTimeRP; //! histo with drift time distribution (RecP) + TH1F* fDriftTimeTP; //! histo with drift time distribution (TrP) TH1F* fSignalTime[8]; //! histos of dE/dx in time windows AliESDEvent *fESD; // ESD object AliESDfriend *fESDfriend; // ESD friend object AliITSresponseSDD* fResp; // ResponseSDD object - TString fGeomFile; // geometry file name Int_t fRunNumber; // Run number Int_t fMinITSpts; // Minimum number of points per track Float_t fMinPfordEdx; // Minimum momentum for dE/dx diff --git a/PWG1/PilotTrain/runPilot.C b/PWG1/PilotTrain/runPilot.C index fa8c5cc1555..789427cfa7d 100644 --- a/PWG1/PilotTrain/runPilot.C +++ b/PWG1/PilotTrain/runPilot.C @@ -16,20 +16,22 @@ void runPilot(Int_t run) { - Bool_t doQAsym = 1; - Bool_t doVZERO = 1; - Bool_t doVertex = 1; - Bool_t doSPD = 1; - Bool_t doFMD = 1; - Bool_t doTPC = 1; - Bool_t doEventStat = 1; - Bool_t doSDD = 1; + Bool_t doQAsym = 1; // output ok + Bool_t doVZERO = 1; // output ok but there is a 2nd file + Bool_t doVertex = 1; // output ok + Bool_t doSPD = 1; // output ok, needs RP + Bool_t doFMD = 1; // output ok + Bool_t doTPC = 1; // output ok + Bool_t doEventStat = 1; // output ok + Bool_t doSDD = 1; // outout ok needs RP //____________________________________________// // Make the analysis manager AliAnalysisManager *mgr = new AliAnalysisManager("TestManager"); mgr->SetDebugLevel(2); - AliVEventHandler* esdH = new AliESDInputHandlerRP; + + AliInputEventHandler* esdH = new AliESDInputHandlerRP(); + esdH->SetActiveBranches("ESDfriend"); mgr->SetInputEventHandler(esdH); // Chain @@ -42,6 +44,8 @@ void runPilot(Int_t run) { // // Collision Selector (static) AliPhysicsSelection* colsel = new AliPhysicsSelection(); + colsel->AddBackgroundIdentification(new AliBackgroundSelection()); + AliAnalysisTaskSE::SetCollisionSelector(colsel); @@ -59,7 +63,7 @@ void runPilot(Int_t run) { if (doVZERO) { gROOT->LoadMacro("AddTaskVZEROQA.C"); AliAnalysisTaskSE* task2 = AddTaskVZEROQA(0); - task2->SelectCollisionCandidates(); +// task2->SelectCollisionCandidates(); } // @@ -85,7 +89,6 @@ void runPilot(Int_t run) { // SDD (F. Prino) // if (doSDD) { - gROOT->LoadMacro("AliAnalysisTaskSDDRP.cxx++g"); gROOT->LoadMacro("AddSDDPoints.C"); AliAnalysisTaskSE* task5 = AddSDDPoints(run); task5->SelectCollisionCandidates(); @@ -124,7 +127,7 @@ void runPilot(Int_t run) { mgr->PrintStatus(); // Run on dataset - mgr->StartAnalysis("local", chain, 500); + mgr->StartAnalysis("local", chain, 1000); timer.Stop(); timer.Print(); } -- 2.43.0