]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGPP/CalibMacros/CPass1/AddTaskTPCCalib.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGPP / CalibMacros / CPass1 / AddTaskTPCCalib.C
index 27d6f0a5fb7faa2dfe5fa1c99e1005f4d4c18051..9996a6ca5847c135e9ef4fcc0ebacd479f57edd5 100644 (file)
@@ -38,18 +38,62 @@ AliAnalysisTask  *AddTaskTPCCalib(Int_t runNumber)
   // set TPC OCDB parameters
   ConfigOCDB(runNumber);
 
-  // setup task
+  // setup task TPCCalib
+  TString outputFileName=mgr->GetCommonFileName();
   AliTPCAnalysisTaskcalib *task1=new AliTPCAnalysisTaskcalib("CalibObjectsTrain1");
   SetupCalibTaskTrain1(task1);
   mgr->AddTask(task1);
-
   AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
   if (!cinput1) cinput1 = mgr->CreateContainer("cchain",TChain::Class(), 
                                       AliAnalysisManager::kInputContainer);
-  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("TPCCalib",TObjArray::Class(), AliAnalysisManager::kOutputContainer, "AliESDfriends_v1.root");  
-
+  for (Int_t i=0; i<task1->GetJobs()->GetEntries(); i++) {
+    if (task1->GetJobs()->At(i)) {
+      AliAnalysisDataContainer* coutput = mgr->CreateContainer(task1->GetJobs()->At(i)->GetName(),
+                                                               AliTPCcalibBase::Class(), 
+                                                               AliAnalysisManager::kOutputContainer, 
+                                                               "AliESDfriends_v1.root:TPCCalib"); 
+      mgr->ConnectOutput(task1,i,coutput);
+    }
+  }
   mgr->ConnectInput(task1,0,cinput1);
-  mgr->ConnectOutput(task1,0,coutput1);
+  //
+  // setup task TPCAlign
+  AliTPCAnalysisTaskcalib *taskAlign=new AliTPCAnalysisTaskcalib("CalibObjectsTrain1");
+  SetupCalibTaskTrainAlign(taskAlign);
+  mgr->AddTask(taskAlign);
+  AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
+  if (!cinput1) cinput1 = mgr->CreateContainer("cchain",TChain::Class(), 
+                                      AliAnalysisManager::kInputContainer);
+  for (Int_t i=0; i<taskAlign->GetJobs()->GetEntries(); i++) {
+    if (taskAlign->GetJobs()->At(i)) {
+      AliAnalysisDataContainer* coutput = mgr->CreateContainer(taskAlign->GetJobs()->At(i)->GetName(),
+                                                               AliTPCcalibBase::Class(), 
+                                                               AliAnalysisManager::kOutputContainer, 
+                                                               "AliESDfriends_v1.root:TPCAlign"); 
+      mgr->ConnectOutput(taskAlign,i,coutput);
+    }
+  }
+  mgr->ConnectInput(taskAlign,0,cinput1);
+  //
+  // setup task TPCCluster
+  AliTPCAnalysisTaskcalib *taskCluster=new AliTPCAnalysisTaskcalib("CalibObjectsTrain1");
+  SetupCalibTaskTrainCluster(taskCluster);
+  mgr->AddTask(taskCluster);
+  AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
+  if (!cinput1) cinput1 = mgr->CreateContainer("cchain",TChain::Class(), 
+                                      AliAnalysisManager::kInputContainer);
+  for (Int_t i=0; i<taskCluster->GetJobs()->GetEntries(); i++) {
+    if (taskCluster->GetJobs()->At(i)) {
+      AliAnalysisDataContainer* coutput = mgr->CreateContainer(taskCluster->GetJobs()->At(i)->GetName(),
+                                                               AliTPCcalibBase::Class(), 
+                                                               AliAnalysisManager::kOutputContainer, 
+                                                               "AliESDfriends_v1.root:TPCCluster"); 
+      mgr->ConnectOutput(taskCluster,i,coutput);
+    }
+  }
+  mgr->ConnectInput(taskCluster,0,cinput1);
+  //
+
   return task1;
 }
 
@@ -100,11 +144,14 @@ void AddCalibTimeGain(TObject* task, Bool_t isCosmic = kFALSE, char * name = "ca
   // 
   // setup calibration component
   //
+
+  Bool_t useQmax = (grpData->GetBeamType()).Contains("Pb-Pb");
+
   AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
   AliTPCcalibTimeGain *calibTimeGain = new AliTPCcalibTimeGain(name,"calibTimeGain", startTime.GetSec(), stopTime.GetSec(), 10*60);
   calibTimeGain->SetIsCosmic(isCosmic);
   calibTimeGain->SetUseCookAnalytical(kTRUE);
-  calibTimeGain->SetUseMax(kTRUE);
+  calibTimeGain->SetUseMax(useQmax);
   calibTimeGain->SetDebugLevel(0);
   calibTimeGain->SetStreamLevel(0);
   calibTimeGain->SetTriggerMask(-1,-1,kTRUE);        //reject laser
@@ -114,14 +161,14 @@ void AddCalibTimeGain(TObject* task, Bool_t isCosmic = kFALSE, char * name = "ca
   myTask->AddJob(calibTimeGain);
 
   AliTPCcalibGainMult *calibGainMult = new AliTPCcalibGainMult("calibGainMult","calibGainMult");
-  calibGainMult->SetUseMax(kTRUE);
+  calibGainMult->SetUseMax(useQmax);
   calibGainMult->SetDebugLevel(0);
   calibGainMult->SetStreamLevel(0);
   calibGainMult->SetTriggerMask(-1,-1,kTRUE);        //reject laser
   calibGainMult->SetLowerTrunc(0.02);
   calibGainMult->SetUpperTrunc(0.6);
 
-  //myTask->AddJob(calibGainMult);
+  myTask->AddJob(calibGainMult);
 
 }
 
@@ -163,8 +210,8 @@ void AddCalibTime(TObject* task){
   calibTime->SetStreamLevel(0);
   calibTime->SetTriggerMask(-1,-1,kFALSE);        //accept everything 
 
-  // max 600 tracks per event
-  calibTime->SetCutTracks(600);
+  // max 15000 tracks per event
+  calibTime->SetCutTracks(15000);
 
   myTask->AddJob(calibTime);
 }
@@ -189,17 +236,80 @@ void AddCalibTracks(TObject* task){
 }
 
 
+void AddCalibAlign(TObject* task){
+  //
+  // Responsible: Marian Ivanov
+  // Description:
+  //
+  AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task; 
+  AliTPCcalibAlign *calibAlign = new AliTPCcalibAlign("alignTPC","Alignment of the TPC sectors");
+  calibAlign->SetDebugLevel(debugLevel);
+  calibAlign->SetStreamLevel(streamLevel);
+  calibAlign->SetTriggerMask(-1,-1,kTRUE);        //accept everything
+  myTask->AddJob(calibAlign);
+}
+
+
+void AddCalibLaser(TObject* task){
+  //
+  // Responsible: Marian Ivanov
+  // Description:
+  //
+  AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
+  AliTPCcalibLaser *calibLaser = new AliTPCcalibLaser("laserTPC","laserTPC");
+  calibLaser->SetDebugLevel(debugLevel);
+  calibLaser->SetStreamLevel(streamLevel);
+  calibLaser->SetTriggerMask(-1,-1,kFALSE);        //accept everything
+  myTask->AddJob(calibLaser);
+}
+
+
+void AddCalibCosmic(TObject* task){
+  //
+  // Responsible: Marian Ivanov
+  // Description:
+  // Histogram residuals and pulls of the track parameters in bins of track parameters
+  // Dump cosmic tracks to the tree
+  //
+  AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
+  AliTPCcalibCosmic *calibCosmic = new AliTPCcalibCosmic("cosmicTPC","cosmicTPC");
+  calibCosmic->SetDebugLevel(debugLevel);
+  calibCosmic->SetStreamLevel(1);
+  calibCosmic->SetTriggerMask(-1,-1,kTRUE);        //accept everything
+  myTask->AddJob(calibCosmic);
+}
+
+
+
 //_____________________________________________________________________________
 void SetupCalibTaskTrain1(TObject* task){
   //
   // Setup tasks for calibration train
   //
-  AddCalibCalib(task);
+  // AddCalibCalib(task); - disable refitting
   AddCalibTimeGain(task);
   AddCalibTime(task);
-  //AddCalibTracks(task);
+  //AddCalibCosmic(task);
+}
+
+
+void SetupCalibTaskTrainAlign(TObject* task){
+  //
+  // Setup tasks for calibration train
+  //
+  AddCalibAlign(task);
+  AddCalibLaser(task);
+}
+
+
+void SetupCalibTaskTrainCluster(TObject* task){
+  //
+  // Setup tasks for calibration train
+  //
+  AddCalibTracks(task);
 }
 
+
 //_____________________________________________________________________________
 void ConfigOCDB(Int_t run){
   //
@@ -225,33 +335,51 @@ void ConfigOCDB(Int_t run){
   //
   AliCDBEntry* entry = AliCDBManager::Instance()->Get("TPC/Calib/RecoParam");
   if (!entry){
-    printf("TPC reco param not available");
+    ::Error("AddTaskTPCCalib","TPC reco param not available");
+    return;
   }
   TObjArray * array = (TObjArray*)entry->GetObject();
   if (!array){
-    printf("TPC reco param not available");
+    ::Error("AddTaskTPCCalib","TPC reco param not available");
+    return;
+  }
+  
+  //get the beam type from OCDB to decide which type of reco param we need -
+  //high or low flux
+  entry = AliCDBManager::Instance()->Get("GRP/GRP/Data");
+  AliGRPObject* grpData = dynamic_cast<AliGRPObject*>(entry->GetObject());  // new GRP entry
+  TString beamType = grpData->GetBeamType();
+  if (beamType==AliGRPObject::GetInvalidString()) {
+    ::Error("AddTaskTPCCalib","GRP/GRP/Data entry:  missing value for the beam type ! Using UNKNOWN");
+    beamType = "UNKNOWN";
   }
   // 0 - Low Flux (pp), 1- High Flux (Pb-Pb)
-  AliTPCRecoParam * tpcRecoParam = (AliTPCRecoParam*)array->At(1);
+  Int_t fluxType=0;
+  if (beamType.Contains("p-p")) {fluxType=0;}
+  if (beamType.Contains("A-A")) {fluxType=1;}
+  AliTPCRecoParam * tpcRecoParam = (AliTPCRecoParam*)array->At(fluxType);
+  ::Info("AddTaskTPCCalib","Beam type: %s, using fluxType=%i",beamType.Data(),fluxType);
+  tpcRecoParam->Print();
 
   transform->SetCurrentRecoParam(tpcRecoParam);
-  tpcRecoParam->SetUseGainCorrectionTime(0);
-  tpcRecoParam->SetUseRPHICorrection(kFALSE); 
-  tpcRecoParam->SetUseTOFCorrection(kFALSE);
-  //
-  tpcRecoParam->SetUseDriftCorrectionTime(0);
-  tpcRecoParam->SetUseDriftCorrectionGY(0);
-  //
-  tpcRecoParam->SetUseRadialCorrection(kFALSE);
-  tpcRecoParam->SetUseQuadrantAlignment(kFALSE);
-  //
-  tpcRecoParam->SetUseSectorAlignment(kFALSE);
-  tpcRecoParam->SetUseFieldCorrection(kFALSE);
-  tpcRecoParam->SetUseExBCorrection(kFALSE);
-  //
-  tpcRecoParam->SetUseMultiplicityCorrectionDedx(kFALSE);
-  tpcRecoParam->SetUseAlignmentTime(kFALSE);
-  tpcRecoParam->SetUseComposedCorrection(kTRUE);
+  // in CPass1 use a default setting
+//   tpcRecoParam->SetUseGainCorrectionTime(0);
+//   tpcRecoParam->SetUseRPHICorrection(kFALSE); 
+//   tpcRecoParam->SetUseTOFCorrection(kFALSE);
+//   //
+//   tpcRecoParam->SetUseDriftCorrectionTime(0);
+//   tpcRecoParam->SetUseDriftCorrectionGY(0);
+//   //
+//   tpcRecoParam->SetUseRadialCorrection(kFALSE);
+//   tpcRecoParam->SetUseQuadrantAlignment(kFALSE);
+//   //
+//   tpcRecoParam->SetUseSectorAlignment(kFALSE);
+//   tpcRecoParam->SetUseFieldCorrection(kFALSE);
+//   tpcRecoParam->SetUseExBCorrection(kFALSE);
+//   //
+//   tpcRecoParam->SetUseMultiplicityCorrectionDedx(kFALSE);
+//   tpcRecoParam->SetUseAlignmentTime(kFALSE);
+//   tpcRecoParam->SetUseComposedCorrection(kTRUE);
 
   AliTPCcalibDB::Instance()->SetRun(run); 
 }