// system: 0: PbPb 1: pp // singlesOnly: 0: full correlations 1: singles only // useWeights: 0: no 1: yes // centralityMethod: 3: track count 4: V0 centrality ///////////////////////////////////////////////////////////////////////////////// AliAnalysisTaskDptDptQA *AddTaskDptQA (int system = 0, int singlesOnly = 0, int useWeights = 0, int centralityMethod = 4, int centralitySelected = 4, double etaMin = -0.8, double etaMax = 0.8, int trackFilterBit = 128, char *inputHistogramFileName = "alien:///alice/cern.ch/user/p/prabhat/CalibFiles/PbPbCalib_dca1.root" ) { // Set Default Configuration of this analysis // ========================================== int debugLevel = 0; int rejectPileup = 1; int rejectPairConversion = 1; int sameFilter = 1; int nCentrality; double minCentrality[10]; double maxCentrality[10]; if (system==0) // PbPb { if (centralityMethod == 4) { nCentrality = 10; minCentrality[0] = 0.0; maxCentrality[0] = 5.0; minCentrality[1] = 5.0; maxCentrality[1] = 10.; minCentrality[2] = 10.; maxCentrality[2] = 20.; minCentrality[3] = 20.; maxCentrality[3] = 30.; minCentrality[4] = 30.; maxCentrality[4] = 40.; minCentrality[5] = 40.; maxCentrality[5] = 50.; minCentrality[6] = 50.; maxCentrality[6] = 60.; minCentrality[7] = 60.; maxCentrality[7] = 70.; minCentrality[8] = 70.; maxCentrality[8] = 80.; minCentrality[9] = 80.; maxCentrality[9] = 90.; } else { return 0; } } double zMin = -10.; double zMax = 10.; double ptMin = 0.2; double ptMax = 2.0; double dcaZMin = -3.0; double dcaZMax = 3.0; double dcaXYMin = -3.0; double dcaXYMax = 3.0; double dedxMin = 0.0; double dedxMax = 20000.0; int nClusterMin = 70; int requestedCharge1 = 1; //default int requestedCharge2 = -1; //default // Get the pointer to the existing analysis manager via the static access method. // ============================================================================== AliAnalysisManager *analysisManager = AliAnalysisManager::GetAnalysisManager(); if (!analysisManager) { ::Error("AddTaskDptDptCorrelations", "No analysis manager to connect to."); return NULL; } TString part1Name; TString part2Name; TString eventName; TString prefixName = "Corr_"; TString pileupRejecSuffix = "_PileupRejec"; TString pairRejecSuffix = "_PairRejec"; TString calibSuffix = "_calib"; TString singlesOnlySuffix = "_SO"; TString suffix; TString inputPath = "."; TString outputPath = "."; TString baseName; TString listName; TString taskName; TString outputHistogramFileName; // Create the task and add subtask. // =========================================================================== int iTask = 0; // task counter AliAnalysisDataContainer *taskInputContainer; AliAnalysisDataContainer *taskOutputContainer; AliAnalysisTaskDptDptQA* task; TFile * inputFile = 0; TList * histoList = 0; TH3F * weight_1 = 0; TH3F * weight_2 = 0; int iCentrality = centralitySelected; outputHistogramFileName = baseName; if (singlesOnly) outputHistogramFileName += singlesOnlySuffix; outputHistogramFileName += ".root"; if (useWeights) { TGrid::Connect("alien:"); inputFile = TFile::Open(inputHistogramFileName,"OLD"); if (!inputFile) { cout << "Requested file:" << inputHistogramFileName << " was not opened. ABORT." << endl; return; } } //============================ // (+,+) //============================ requestedCharge1 = 1; requestedCharge2 = 1; sameFilter = 1; part1Name = "P_"; part1Name += trackFilterBit; part1Name += "_"; part1Name += int(1000*etaMax); part1Name += "_"; part1Name += int(1000*ptMin); part1Name += "pt"; part1Name += int(1000*ptMax); part1Name += "_"; part2Name = "P_"; part2Name += int(1000*etaMax); part2Name += "_"; part2Name += int(1000*ptMin); part2Name += "pt"; part2Name += int(1000*ptMax); part2Name += "_"; eventName = ""; eventName += int(10.*minCentrality[iCentrality] ); eventName += "Vo"; eventName += int(10.*maxCentrality[iCentrality] ); baseName = prefixName; baseName += part1Name; baseName += part2Name; baseName += eventName; listName = baseName; taskName = baseName; if (useWeights) { TString nameHistoBase = "correction_"; TString nameHisto; nameHistoBase += eventName; nameHisto = nameHistoBase + "_p"; cout << "Input Histogram named: " << nameHisto << endl; weight_1 = (TH3F *) inputFile->Get(nameHisto); weight_2 = weight_1; } else { weight_1 = 0; weight_2 = 0; } task = new AliAnalysisTaskDptDptQA(taskName); //configure my task task->SetDebugLevel( debugLevel ); task->SetSameFilter( sameFilter ); task->SetSinglesOnly( singlesOnly ); task->SetUseWeights( useWeights ); task->SetRejectPileup( rejectPileup ); task->SetRejectPairConversion(rejectPairConversion); task->SetVertexZMin( zMin ); task->SetVertexZMax( zMax ); task->SetVertexXYMin( -1. ); task->SetVertexXYMax( 1. ); task->SetCentralityMethod( centralityMethod); task->SetCentrality( minCentrality[iCentrality], maxCentrality[iCentrality]); task->SetPtMin1( ptMin ); task->SetPtMax1( ptMax ); task->SetEtaMin1( etaMin ); task->SetEtaMax1( etaMax ); task->SetPtMin2( ptMin ); task->SetPtMax2( ptMax ); task->SetEtaMin2( etaMin ); task->SetEtaMax2( etaMax ); task->SetDcaZMin( dcaZMin ); task->SetDcaZMax( dcaZMax ); task->SetDcaXYMin( dcaXYMin ); task->SetDcaXYMax( dcaXYMax ); task->SetDedxMin( dedxMin ); task->SetDedxMax( dedxMax ); task->SetNClusterMin( nClusterMin ); task->SetTrackFilterBit( trackFilterBit ); task->SetRequestedCharge_1( requestedCharge1); task->SetRequestedCharge_2( requestedCharge2); task->SetWeigth_1( weight_1 ); task->SetWeigth_2( weight_2 ); cout << "Creating task output container" << endl; taskOutputContainer = analysisManager->CreateContainer(listName, TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:Histos", AliAnalysisManager::GetCommonFileName())); cout << "Add task to analysis manager and connect it to input and output containers" << endl; analysisManager->AddTask(task); analysisManager->ConnectInput( task, 0, analysisManager->GetCommonInputContainer()); analysisManager->ConnectOutput(task, 0, taskOutputContainer ); cout << "(+,+) Task added ...." << endl; //============================ // (+,-) //============================ requestedCharge1 = 1; requestedCharge2 = -1; sameFilter = 0; part1Name = "P_"; part1Name += trackFilterBit; part1Name += "_"; part1Name += int(1000*etaMax); part1Name += "_"; part1Name += int(1000*ptMin); part1Name += "pt"; part1Name += int(1000*ptMax); part1Name += "_"; part2Name = "M_"; part2Name += trackFilterBit; part2Name += int(1000*etaMax); part2Name += "_"; part2Name += int(1000*ptMin); part2Name += "pt"; part2Name += int(1000*ptMax); part2Name += "_"; eventName = ""; eventName += int(10.*minCentrality[iCentrality] ); eventName += "Vo"; eventName += int(10.*maxCentrality[iCentrality] ); baseName = prefixName; baseName += part1Name; baseName += part2Name; baseName += eventName; listName = baseName; taskName = baseName; if (useWeights) { TString nameHistoBase = "correction_"; TString nameHisto; nameHistoBase += eventName; nameHisto = nameHistoBase + "_p"; cout << "Input Histogram named: " << nameHisto << endl; weight_1 = (TH3F *) inputFile->Get(nameHisto); nameHisto = nameHistoBase + "_m"; cout << "Input Histogram named: " << nameHisto << endl; weight_2 = (TH3F *) inputFile->Get(nameHisto); } else { weight_1 = 0; weight_2 = 0; } task = new AliAnalysisTaskDptDptQA(taskName); //configure my task task->SetDebugLevel( debugLevel ); task->SetSameFilter( sameFilter ); task->SetSinglesOnly( singlesOnly ); task->SetUseWeights( useWeights ); task->SetRejectPileup( rejectPileup ); task->SetRejectPairConversion(rejectPairConversion); task->SetVertexZMin( zMin ); task->SetVertexZMax( zMax ); task->SetVertexXYMin( -1. ); task->SetVertexXYMax( 1. ); task->SetCentralityMethod( centralityMethod); task->SetCentrality( minCentrality[iCentrality], maxCentrality[iCentrality]); task->SetPtMin1( ptMin ); task->SetPtMax1( ptMax ); task->SetEtaMin1( etaMin ); task->SetEtaMax1( etaMax ); task->SetPtMin2( ptMin ); task->SetPtMax2( ptMax ); task->SetEtaMin2( etaMin ); task->SetEtaMax2( etaMax ); task->SetDcaZMin( dcaZMin ); task->SetDcaZMax( dcaZMax ); task->SetDcaXYMin( dcaXYMin ); task->SetDcaXYMax( dcaXYMax ); task->SetDedxMin( dedxMin ); task->SetDedxMax( dedxMax ); task->SetNClusterMin( nClusterMin ); task->SetTrackFilterBit( trackFilterBit ); task->SetRequestedCharge_1( requestedCharge1); task->SetRequestedCharge_2( requestedCharge2); task->SetWeigth_1( weight_1 ); task->SetWeigth_2( weight_2 ); cout << "Creating task output container" << endl; taskOutputContainer = analysisManager->CreateContainer(listName, TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:Histos", AliAnalysisManager::GetCommonFileName())); cout << "Add task to analysis manager and connect it to input and output containers" << endl; analysisManager->AddTask(task); analysisManager->ConnectInput( task, 0, analysisManager->GetCommonInputContainer()); analysisManager->ConnectOutput(task, 0, taskOutputContainer ); cout << "Task added ...." << endl; //============================ // (-,-) //============================ requestedCharge1 = -1; requestedCharge2 = -1; sameFilter = 1; part1Name = "M_"; part1Name += trackFilterBit; part1Name += "_"; part1Name += int(1000*etaMax); part1Name += "_"; part1Name += int(1000*ptMin); part1Name += "pt"; part1Name += int(1000*ptMax); part1Name += "_"; part2Name = "M_"; part2Name += trackFilterBit; part2Name += int(1000*etaMax); part2Name += "_"; part2Name += int(1000*ptMin); part2Name += "pt"; part2Name += int(1000*ptMax); part2Name += "_"; eventName = ""; eventName += int(10.*minCentrality[iCentrality] ); eventName += "Vo"; eventName += int(10.*maxCentrality[iCentrality] ); baseName = prefixName; baseName += part1Name; baseName += part2Name; baseName += eventName; listName = baseName; taskName = baseName; if (useWeights) { TString nameHistoBase = "correction_"; TString nameHisto; nameHistoBase += eventName; nameHisto = nameHistoBase + "_m"; cout << "Input Histogram named: " << nameHisto << endl; weight_1 = (TH3F *) inputFile->Get(nameHisto); weight_2 = weight_1; } else { weight_1 = 0; weight_2 = 0; } task = new AliAnalysisTaskDptDptQA(taskName); //configure my task task->SetDebugLevel( debugLevel ); task->SetSameFilter( sameFilter ); task->SetSinglesOnly( singlesOnly ); task->SetUseWeights( useWeights ); task->SetRejectPileup( rejectPileup ); task->SetRejectPairConversion(rejectPairConversion); task->SetVertexZMin( zMin ); task->SetVertexZMax( zMax ); task->SetVertexXYMin( -1. ); task->SetVertexXYMax( 1. ); task->SetCentralityMethod( centralityMethod); task->SetCentrality( minCentrality[iCentrality], maxCentrality[iCentrality]); task->SetPtMin1( ptMin ); task->SetPtMax1( ptMax ); task->SetEtaMin1( etaMin ); task->SetEtaMax1( etaMax ); task->SetPtMin2( ptMin ); task->SetPtMax2( ptMax ); task->SetEtaMin2( etaMin ); task->SetEtaMax2( etaMax ); task->SetDcaZMin( dcaZMin ); task->SetDcaZMax( dcaZMax ); task->SetDcaXYMin( dcaXYMin ); task->SetDcaXYMax( dcaXYMax ); task->SetDedxMin( dedxMin ); task->SetDedxMax( dedxMax ); task->SetNClusterMin( nClusterMin ); task->SetTrackFilterBit( trackFilterBit ); task->SetRequestedCharge_1( requestedCharge1); task->SetRequestedCharge_2( requestedCharge2); task->SetWeigth_1( weight_1 ); task->SetWeigth_2( weight_2 ); cout << "Creating task output container" << endl; taskOutputContainer = analysisManager->CreateContainer(listName, TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:Histos", AliAnalysisManager::GetCommonFileName())); analysisManager->AddTask(task); analysisManager->ConnectInput( task, 0, analysisManager->GetCommonInputContainer()); analysisManager->ConnectOutput(task, 0, taskOutputContainer ); return task; }