]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
First working version
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 15 Dec 2009 13:47:12 +0000 (13:47 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 15 Dec 2009 13:47:12 +0000 (13:47 +0000)
PWG1/PilotTrain/AddSDDPoints.C
PWG1/PilotTrain/AliAnalysisTaskSDDRP.cxx
PWG1/PilotTrain/AliAnalysisTaskSDDRP.h
PWG1/PilotTrain/runPilot.C

index 28591511064f882c97bf5712de03de740c29cc4d..f9823d6e05a4a95ee0f65d512954272ae64e8f1e 100644 (file)
@@ -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;
+    
 }   
 
 
index 0b6a9da64a0c9800323debe39474c9de35479871..a5a88c0bdd7c73d484aa3b5e13934d3c918afc0c 100644 (file)
@@ -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<TTree*> (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<AliESDInputHandlerRP*> (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<AliESDfriend*>(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;irec<nrecp;irec++) {
+      AliITSRecPoint *recp = (AliITSRecPoint*)ITSrec->At(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<TList*> (GetOutputData(0));
+  fOutput = dynamic_cast<TList*> (GetOutputData(1));
   if (!fOutput) {     
     printf("ERROR: fOutput not available\n");
     return;
@@ -302,6 +307,9 @@ void AliAnalysisTaskSDDRP::Terminate(Option_t */*option*/)
   fGoodAnLadLay3= dynamic_cast<TH1F*>(fOutput->FindObject("hGALad3"));
   fGoodAnLadLay4= dynamic_cast<TH1F*>(fOutput->FindObject("hGALad4"));
 
+  fDriftTimeRP= dynamic_cast<TH1F*>(fOutput->FindObject("hDrTimRP"));
+  fDriftTimeTP= dynamic_cast<TH1F*>(fOutput->FindObject("hDrTimTP"));
+
   for(Int_t it=0; it<8; it++){
     fSignalTime[it]= dynamic_cast<TH1F*>(fOutput->FindObject(Form("hSigTimeInt%d",it)));
   }
index 5e43d37021f0c5cd7c82c1f73b256ed21ce1c4fe..215f73f727ea07034a6fe296b4de08e74eed80e5 100644 (file)
@@ -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
index fa8c5cc1555fa0cb72a6305a22c39860788e2af7..789427cfa7de7b7236192c21d6dc6479bee24c41 100644 (file)
@@ -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();
 }