// 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;
}
//
// 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
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);
}
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);
}
}
+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){
//
//
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);
}