-
-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;
+
}
ClassImp(AliAnalysisTaskSDDRP)
//______________________________________________________________________________
-AliAnalysisTaskSDDRP::AliAnalysisTaskSDDRP() : AliAnalysisTask("SDD RecPoints",""),
+AliAnalysisTaskSDDRP::AliAnalysisTaskSDDRP() : AliAnalysisTaskSE("SDD RecPoints"),
fOutput(0),
fHistNEvents(0),
fRecPMod(0),
fTrackPLadLay4(0),
fGoodAnLadLay3(0),
fGoodAnLadLay4(0),
+ fDriftTimeRP(0),
+ fDriftTimeTP(0),
fESD(0),
fESDfriend(0),
fResp(0),
fOnlyCINT1BTrig(0)
{
//
- DefineInput(0, TChain::Class());
- DefineOutput(0, TList::Class());
+ DefineOutput(1, TList::Class());
}
}
}
-//___________________________________________________________________________
-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();
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();
}
}
//______________________________________________________________________________
-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){
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){
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;
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
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;
}
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;
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)));
}
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;
}
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
- 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
//
// Collision Selector (static)
AliPhysicsSelection* colsel = new AliPhysicsSelection();
+ colsel->AddBackgroundIdentification(new AliBackgroundSelection());
+
AliAnalysisTaskSE::SetCollisionSelector(colsel);
if (doVZERO) {
gROOT->LoadMacro("AddTaskVZEROQA.C");
AliAnalysisTaskSE* task2 = AddTaskVZEROQA(0);
- task2->SelectCollisionCandidates();
+// task2->SelectCollisionCandidates();
}
//
// SDD (F. Prino)
//
if (doSDD) {
- gROOT->LoadMacro("AliAnalysisTaskSDDRP.cxx++g");
gROOT->LoadMacro("AddSDDPoints.C");
AliAnalysisTaskSE* task5 = AddSDDPoints(run);
task5->SelectCollisionCandidates();
mgr->PrintStatus();
// Run on dataset
- mgr->StartAnalysis("local", chain, 500);
+ mgr->StartAnalysis("local", chain, 1000);
timer.Stop();
timer.Print();
}