]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGPP/CalibMacros/CPass1/AddTaskTRDCalib.C
Reprocessing 2012 (TRD)
[u/mrichter/AliRoot.git] / PWGPP / CalibMacros / CPass1 / AddTaskTRDCalib.C
1 //=============================================================================
2 //
3 // *** AddTaskTRDCalib
4 //
5 // This macros setup the TRD calibration task
6 //
7 //=============================================================================
8
9 AliAnalysisTask  *AddTaskTRDCalib(Int_t runNumber)
10 {
11   gSystem->Load("libTRDcalib");
12   // pointer to the analysis manager
13   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
14   if (!mgr) {
15     Error("AddTaskTRDCalib", "No analysis manager to connect to.");
16     return NULL;
17   }
18
19   // check the input handler
20   if (!mgr->GetInputEventHandler()) {
21     ::Error("AddTask", "This task requires an input event handler");
22     return NULL;
23   }
24
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);
35   
36   ////////////////////////////////////////////
37   // Number of timebins
38   ///////////////////////////////////////////
39   AliTRDcalibDB *calib = AliTRDcalibDB::Instance();
40   Int_t nbOfTimeBins = calib->GetNumberOfTimeBinsDCS();
41   if(nbOfTimeBins < 0) nbOfTimeBins = 27;
42   ////////////////////////////////////////////
43   //
44   /////////////////////////////////////////////
45   Int_t versiongain, subversiongain, versionvdrift, subversionvdrift;
46
47
48   /////////////////////////
49   // The TRD calib Task
50   /////////////////////////
51   AliTRDCalibTask *calibTask = new AliTRDCalibTask();
52
53   // Disabling TRD CPAss0 as per https://savannah.cern.ch/bugs/?88813
54   //calibTask->SetMaxEvent(-1);
55   
56   if (strstr(type.Data(),"A-A")) {
57     calibTask->SetMaxNbTracks(1600);
58   }
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);
71   calibTask->SetLow(0);
72   calibTask->SetHigh(30);
73   calibTask->SetFillZero(kFALSE);
74   // now
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);
80   // before
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);
95
96   if ( detStr.Contains("ITSSPD") && (!detStr.Contains("ITSSDD") || !detStr.Contains("ITSSSD"))) calibTask->SetUseSPDVertex();
97
98   //calibTask->SetLimitChargeIntegration(kTRUE);
99
100
101   /////////////////////////////
102   // Track cuts
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);
117
118   calibTask->SetESDtrackCuts(trackCuts);
119
120   mgr->AddTask(calibTask);
121
122   AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
123   //AliAnalysisDataContainer *cinput = mgr->GetCommonOutputContainer();
124
125   if (!cinput) cinput = mgr->CreateContainer("cchain",TChain::Class(),
126                                       AliAnalysisManager::kInputContainer);
127
128   AliAnalysisDataContainer *coutput =mgr->CreateContainer("TRDCalib",TList::Class(), AliAnalysisManager::kOutputContainer, "AliESDfriends_v1.root");
129
130
131   mgr->ConnectInput(calibTask,0,cinput);
132   mgr->ConnectOutput(calibTask,1,coutput);
133   return calibTask;
134
135 }