1 //=============================================================================
5 // This macros setup the TRD calibration task
7 //=============================================================================
9 AliAnalysisTask *AddTaskTRDCalib(Int_t runNumber)
11 gSystem->Load("libTRDcalib");
12 // pointer to the analysis manager
13 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
15 Error("AddTaskTRDCalib", "No analysis manager to connect to.");
19 // check the input handler
20 if (!mgr->GetInputEventHandler()) {
21 ::Error("AddTask", "This task requires an input event handler");
25 // check the presence of the detectors
26 AliCDBEntry* entry = AliCDBManager::Instance()->Get("GRP/GRP/Data");
27 AliGRPObject* grpData = dynamic_cast<AliGRPObject*>(entry->GetObject());
28 if (!grpData) {printf("Failed to get GRP data for run",runNumber); return;}
29 Int_t activeDetectors = grpData->GetDetectorMask();
30 TString detStr = AliDAQ::ListOfTriggeredDetectors(activeDetectors);
31 TString type = grpData->GetBeamType();
32 TString LHCperiod = grpData->GetLHCPeriod();
33 Bool_t isLHC10 = LHCperiod.Contains("LHC10");
34 printf("TRD add macro, LHCperiod:%s\n isLHC10:%d\n",LHCperiod.Data(),(Int_t)isLHC10);
36 ////////////////////////////////////////////
38 ///////////////////////////////////////////
39 AliTRDcalibDB *calib = AliTRDcalibDB::Instance();
40 Int_t nbOfTimeBins = calib->GetNumberOfTimeBinsDCS();
41 if(nbOfTimeBins < 0) nbOfTimeBins = 27;
42 ////////////////////////////////////////////
44 /////////////////////////////////////////////
45 Int_t versiongain, subversiongain, versionvdrift, subversionvdrift;
48 /////////////////////////
50 /////////////////////////
51 AliTRDCalibTask *calibTask = new AliTRDCalibTask();
53 // Disabling TRD CPAss0 as per https://savannah.cern.ch/bugs/?88813
54 //calibTask->SetMaxEvent(-1);
56 if (strstr(type.Data(),"A-A")) {
57 calibTask->SetMaxNbTracks(1600);
59 else calibTask->SetMaxNbTracks(999999999);
60 if(!isLHC10) calibTask->SetRejectPileUpWithTOFOrITS(kTRUE);
61 calibTask->SetHisto2d(kTRUE);
62 calibTask->SetVector2d(kFALSE);
63 calibTask->SetVdriftLinear(kTRUE);
64 calibTask->SetExbAlt(kFALSE);
65 calibTask->SetNz(0,0);
66 calibTask->SetNrphi(0,0);
67 calibTask->SetNz(0,1);
68 calibTask->SetNrphi(0,1);
69 calibTask->SetNz(0,2);
70 calibTask->SetNrphi(0,2);
72 calibTask->SetHigh(30);
73 calibTask->SetFillZero(kFALSE);
75 calibTask->AddSelectedTriggerClass("C0OB0-ABCE-NOPF-ALL");
76 calibTask->AddSelectedTriggerClass("CTRDCO2-ABCE-NOPF-CENT");
77 calibTask->AddSelectedTriggerClass("CTRDCO2-ABCE-NOPF-TRD");
78 calibTask->AddSelectedTriggerClass("CTRDCO2-ABCE-NOPF-ALL");
79 calibTask->SetReject(kTRUE);
81 //calibTask->AddSelectedTriggerClass("CINT1B-ABCE-NOPF-ALL");
82 //calibTask->AddSelectedTriggerClass("CINT1WU-B-NOPF-ALL");
83 //calibTask->AddSelectedTriggerClass("CINT7WU-B-NOPF-ALL");
84 //calibTask->AddSelectedTriggerClass("CINT7WU-I-NOPF-ALL");
85 //calibTask->SetReject(kFALSE);
86 //calibTask->SetDebug(2);
87 calibTask->SetNbTimeBins(nbOfTimeBins);
88 calibTask->SetNumberBinCharge(100);
89 //calibTask->SetMaxEvent(10);
90 //calibTask->SetThresholdP(1.0);
91 calibTask->SetRequirePrimaryVertex(kTRUE);
92 calibTask->SetMinNbOfContributors(1);
93 calibTask->SetMaxCluster(100.0);
94 calibTask->SetNbMaxCluster(2);
96 if ( detStr.Contains("ITSSPD") && (!detStr.Contains("ITSSDD") || !detStr.Contains("ITSSSD"))) calibTask->SetUseSPDVertex();
98 //calibTask->SetLimitChargeIntegration(kTRUE);
101 /////////////////////////////
103 /////////////////////////////
104 AliESDtrackCuts *trackCuts = new AliESDtrackCuts("trackcuts","trackcuts");
105 trackCuts->SetMinNClustersTPC(50);
106 trackCuts->SetMaxChi2PerClusterTPC(3.5);
107 //trackCuts->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);
108 trackCuts->SetRequireTPCRefit(kTRUE);
109 // trackCuts->SetRequireITSRefit(kTRUE); //removed by BD after discussion with Raphaelle, was introduced to handle pile-up
110 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
111 //trackCuts->SetMinNsigmaToVertex(10);
112 trackCuts->SetRequireSigmaToVertex(kFALSE);
113 trackCuts->SetAcceptKinkDaughters(kFALSE);
114 trackCuts->SetMaxDCAToVertexZ(30.0);
115 trackCuts->SetMaxDCAToVertexXY(3.0);
116 trackCuts->SetDCAToVertex2D(kFALSE);
118 calibTask->SetESDtrackCuts(trackCuts);
120 mgr->AddTask(calibTask);
122 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
123 //AliAnalysisDataContainer *cinput = mgr->GetCommonOutputContainer();
125 if (!cinput) cinput = mgr->CreateContainer("cchain",TChain::Class(),
126 AliAnalysisManager::kInputContainer);
128 AliAnalysisDataContainer *coutput =mgr->CreateContainer("TRDCalib",TList::Class(), AliAnalysisManager::kOutputContainer, "AliESDfriends_v1.root");
131 mgr->ConnectInput(calibTask,0,cinput);
132 mgr->ConnectOutput(calibTask,1,coutput);